Как убрать префиксы и лидирующие нули в номерах счетов-фактур в Книге продаж 1С:Бухгалтерия 3.0

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Налоговый учет
← На главную

При интеграции управленческих баз (например, 1С:Управление торговлей или 1С:УНФ) с «1С:Бухгалтерией 3.0» (БП 3.0) часто возникает ситуация, когда номера счетов-фактур в бухгалтерской базе приобретают вид ХХХ000000001. В то же время печатные формы в управленческой базе выводятся без префиксов — просто как «1», «2» и так далее. При формировании регламентированного отчета «Книга продаж» в БП 3.0 префиксы и нули сохраняются, что может привести к расхождениям с данными контрагентов и вопросами со стороны налоговых органов.

В этой статье мы подробно разберем, почему так происходит, и рассмотрим несколько способов приведения номеров в Книге продаж к печатному виду, от простого использования скрытых реквизитов до программной корректировки механизмов системы.

Выясним причину: как 1С формирует номер для печати

Проанализируем работу механизмов 1С. В конфигурации БП 3.0 существует глобальная функция, которая отвечает за преобразование внутреннего номера документа в «красивый» номер для печати. Ранее она называлась ПолучитьНомерНаПечать, в современных релизах это НомерНаПечать из общих модулей (например, ПрефиксИндексацияКлиентСервер).

Логика работы этой функции по умолчанию ориентирована на стандартные разделители. Она ищет в номере символ тире «-». Если он найден, система считает всё, что слева от него, префиксом, а всё, что справа — цифровой частью, из которой удаляются лидирующие нули. Если в вашем номере типа ХХХ000000001 тире отсутствует, система может не распознать ХХХ как префикс и выведет номер «как есть».

Однако для Книги продаж ситуация сложнее: данные в отчет попадают не напрямую из заголовка документа, а из специального вспомогательного регистра сведений. Рассмотрим подробнее способы решения этой проблемы.

Способ 1. Использование скрытого реквизита «Префикс БП 2.0» (без программирования)

Это самый эффективный способ, не требующий внесения изменений в программный код. В справочнике Организации существует служебный реквизит ПрефиксБП20, который по умолчанию скрыт с форм. Он был введен для обеспечения преемственности нумерации при переходе с версии 2.0 на 3.0. Если этот реквизит заполнен, система при формировании номеров для Книги продаж будет пытаться найти указанную строку в начале номера и удалить её.

Разберем процесс по шагам:

  1. Откроем обработку «Групповое изменение реквизитов» (раздел «Администрирование» — «Обслуживание» — «Корректировка данных»).
  2. Выберем объект «Организации».
  3. В настройках (кнопка «Дополнительные параметры») установим флажок «Показывать служебные реквизиты».
  4. Найдем в списке реквизит ПрефиксБП20 (в пользовательском интерфейсе может называться «Префикс БП 2.0»).
  5. Установим в качестве значения ваш префикс (например, ХХХ).
  6. Нажмем «Изменить реквизиты».

Важный нюанс: Простого изменения реквизита организации недостаточно для того, чтобы Книга продаж мгновенно изменилась. Как мы выяснили выше, данные берутся из регистра. Поэтому необходимо выполнить перепроведение всех счетов-фактур за отчетный период. Только в момент проведения документа обновляются записи в регистре сведения Журнал учета счетов-фактур, и номер преобразуется с учетом нового префикса.

Способ 2. Программное изменение логики через расширение

Если способ со скрытым реквизитом по каким-то причинам не подходит (например, префиксы разные или сложная логика их формирования), проанализируем возможность программного вмешательства. В современных конфигурациях 1С крайне не рекомендуется менять типовой код. Вместо этого используем механизм расширений.

Нам необходимо перехватить функцию преобразования номера. Посмотрим на пример кода, который можно внедрить в расширение (общий модуль ПрефиксИндексацияКлиентСервер или аналогичный):


&Вместо("НомерНаПечать")
Функция Мой_НомерНаПечать(Знач НомерОбъекта, УдалитьПрефиксИнформационнойБазы = Ложь, УдалитьПользовательскийПрефикс = Ложь)
    // Вызываем стандартную обработку
    Результат = ПродолжитьВызов(НомерОбъекта, УдалитьПрефиксИнформационнойБазы, УдалитьПользовательскийПрефикс);
    
    // Добавляем свою логику удаления специфического префикса ХХХ
    Если Лев(Результат, 3) = "ХХХ" Тогда
        Результат = Сред(Результат, 4);
        // Удаляем оставшиеся лидирующие нули
        Пока Лев(Результат, 1) = "0" И СтрДлина(Результат) > 1 Цикл
            Результат = Сред(Результат, 2);
        КонецЦикла;
    КонецЕсли;
    
    ВозвращаемоеЗначение Результат;
КонецФункции

Однако следует учитывать, что для отчета «Книга продаж» часто используются параметры, где УдалитьПрефиксИнформационнойБазы принудительно установлен в Ложь. Поэтому может потребоваться также корректировка запроса в модуле менеджера отчета КнигаПродаж, чтобы флаг удаления префикса был активен.

Способ 3. Корректировка регистра «Журнал учета счетов-фактур»

Если вы не хотите перепроводить документы (например, период закрыт для редактирования, но Книгу продаж нужно сформировать корректно), можно прибегнуть к прямой правке регистра. Данные для колонки «Номер» Книги продаж берутся именно оттуда.

Проанализируем ситуацию: записи в регистре Журнал учета счетов-фактур содержат поле Номер. Вы можете воспользоваться внешней обработкой, которая переберет записи этого регистра за нужный период и обрежет префиксы в строковом поле номера.

Пример логики для обработки:


НаборЗаписей = РегистрыСведений.ЖурналУчетаСчетовФактур.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Период.Установить(НачалоКвартала, КонецКвартала);
НаборЗаписей.Прочитать();

Для Каждого Запись Из НаборЗаписей Цикл
    // Предположим, префикс всегда 3 символа
    Если Найти(Запись.Номер, "ХХХ") > 0 Тогда
        Запись.Номер = СтрЗаменить(Запись.Номер, "ХХХ", "");
        // Убираем нули
        Пока Лев(Запись.Номер, 1) = "0" Цикл
            Запись.Номер = Сред(Запись.Номер, 2);
        КонецЦикла;
    КонецЕсли;
КонецЦикла;
НаборЗаписей.Записать();

Внимание: Этот метод является «силовым». При любом последующем перепроведении документа типовой механизм 1С снова запишет в регистр полный номер с префиксом. Поэтому данный способ подходит только для разовой подготовки отчетности.

Рекомендации по сверке с ФНС

Рассмотрим, почему корректная нумерация так важна. Система автоматизированного контроля АСК НДС-2 сопоставляет данные вашей декларации с данными деклараций ваших покупателей. Если покупатель занес счет-фактуру в свою книгу покупок с номером «1» (как указано в бумажном экземпляре), а вы в книге продаж отразили его как ХХХ000000001, автоматическая сверка может выдать расхождение.

Поэтому мы рекомендуем:

Подведем итоги

Мы проанализировали проблему появления префиксов в Книге продаж БП 3.0 и нашли решение. Оптимальным вариантом является заполнение реквизита ПрефиксБП20 в справочнике Организации с последующим групповым перепроведением документов. Это позволит сохранить базу на поддержке и обеспечит корректное формирование отчетности в соответствии с требованиями налогового законодательства. Для контроля изменений в разделах отчета после перепроведения и подготовки корректировок можно использовать отчет для сравнения первичной и корректирующей деклараций по НДС.

← На главную