Как вывести номера документов со всеми префиксами в счета-фактуры, УПД и Книгу продаж в 1С:Бухгалтерия 3.0

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

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

По умолчанию система ведет себя иначе: она аккуратно вырезает префиксы и лидирующие нули, оставляя «голые» порядковые номера. Попытки решить проблему «малой кровью» (например, установкой флагов в регистрах сведений) часто приводят к тому, что префиксы либо выводятся наполовину, либо появляются на печати, но напрочь отсутствуют в Книге продаж. Это создает колоссальные налоговые риски: несовпадение номеров в печатной форме покупателя и Книге продаж продавца гарантированно вызовет вопросы у ФНС при встречной проверке по НДС (автоматическая система АСК НДС-2 выявит расхождение). При возникновении расхождений в налоговых регистрах из-за номеров документов можно воспользоваться расширением для исправления формирования номеров УПД в отчетности по НДС.

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

Почему 1С по умолчанию отрезает префиксы?

Прежде чем переходить к коду и настройкам, давайте выясним причину такого проектного решения разработчиков фирмы 1С. В соответствии с Постановлением Правительства РФ № 1137, в счетах-фактурах должна соблюдаться единая последовательная нумерация (простые порядковые номера). Служебные префиксы (например, префикс информационной базы при обмене данными УТ или префикс конкретной организации КЕ) являются внутренними идентификаторами базы данных 1С. Они не имеют отношения к официальной нумерации для налоговых органов.

Кроме того, очистка номеров от префиксов и нулей сводит к минимуму технические ошибки при сопоставлении деклараций по НДС. Покупатели очень часто заносят входящие документы в свои базы данных без префиксов (например, вместо «КЕ-000025» пишут просто «25»). Если продавец подаст книгу продаж с префиксом, а покупатель книгу покупок без него, налоговая инспекция пришлет требование о представлении пояснений из-за расхождения номеров.

Однако, если воля клиента непоколебима, нам придется обойти эти ограничения.

Архитектура формирования номеров в БП 3.0

Для реализации задачи нам необходимо четко понимать, откуда программа берет данные:

  1. Печатные формы (Счет-фактура, УПД): при формировании печатного листа система использует общие механизмы БСП (Библиотеки Стандартных Подсистем). В частности, вызывается функция ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(). Эта функция анализирует переданный номер, отсекает префикс организации, префикс информационной базы, пользовательский префикс и удаляет лидирующие нули.
  2. Книга продаж и декларация по НДС: эти отчеты строятся вовсе не по реквизиту Номер самого документа. Данные для них собираются из регистра сведений Журнал учета счетов-фактур (сокращенно — ЖУСФ). В этом регистре есть важнейший реквизит — ПредставлениеНомера. Именно то, что записано в это поле в момент проведения документа, и попадет в Книгу продаж. По умолчанию туда также пишется очищенный номер.

Из этого следует критически важный вывод: просто изменить печать документа недостаточно! Если вы доработаете только печатную форму, у вас на бумаге будет номер с префиксами, а в Книге продаж — без них. Нам необходимо синхронизировать эти механизмы.

Шаг 1. Разбираемся с настройкой префикса Информационной Базы (ИБ)

В БП 3.0 существует штатный регистр сведений Префиксы информационных баз. В нем присутствует колонка «Печать» (или «Выводить на печать»).

Рассмотрим ситуацию: вы поставили эту галочку, но в Книгу продаж префикс ИБ все равно не попал. Почему так произошло?

Дело в том, что изменение настроек в регистре сведений не меняет данные в уже проведенных документах автоматически. Как мы уже выяснили, Книга продаж берет данные из регистра ЖУСФ, записи в котором формируются строго в момент проведения документа.

Решение: после изменения любых настроек отображения префиксов необходимо выполнить групповое перепроведение документов (счетов-фактур и УПД) за отчетный период. Только тогда реквизит ПредставлениеНомера в ЖУСФ перезапишется с учетом новых правил.

Шаг 2. Проблема префикса организации

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

Поэтому здесь нам придется прибегнуть к программированию.

Шаг 3. Реализация доработки с помощью Расширения конфигурации

Чтобы не снимать конфигурацию с поддержки и не усложнять процесс последующих обновлений 1С, мы настоятельно рекомендуем использовать расширения конфигурации (.cfe). Мы перехватим стандартное поведение системы в двух ключевых точках.

Рассмотрим по шагам, как это сделать.

Точка перехвата №1: Печать документов

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

Создадим расширение и добавим в него общий модуль ПрефиксацияОбъектовКлиентСервер. Напишем метод с аннотацией &Вместо для функции НомерНаПечать:


&Вместо("НомерНаПечать")
Функция Ист_НомерНаПечать(НомерОбъекта, УдалитьПрефиксИнформационнойБазы = Ложь, УдалитьПрефиксОрганизации = Ложь)
    
    // Вместо стандартного удаления префиксов мы можем управлять этим процессом.
    // Если нам нужно сохранить ВСЕ префиксы, мы принудительно устанавливаем параметры в Ложь:
    
    ПараметрУдалитьПрефиксИБ = Ложь; 
    ПараметрУдалитьПрефиксОрг = Ложь;
    
    // Вызываем оригинальный алгоритм, но со своими параметрами, чтобы не дублировать код БСП
    Результат = ПродолжитьВызов(НомерОбъекта, ПараметрУдалитьПрефиксИБ, ПараметрУдалитьПрефиксОрг);
    
    Возврат Результат;
КонецФункции

Этот простой перехват заставит систему при формировании макетов печати счетов-фактур, УПД и других документов выводить номер в его исходном виде — с префиксом базы и префиксом организации. В качестве альтернативного подхода для изменения выходных печатных форм без изменения кода типовых макетов подойдёт решение для постобработки печатных форм на базе БСП.

Точка перехвата №2: Заполнение Книги продаж (Регистр ЖУСФ)

Теперь решим самую важную задачу — сделать так, чтобы эти же префиксы попадали в Книгу продаж. Как мы помним, книга продаж использует реквизит ПредставлениеНомера из регистра сведений ЖурналУчетаСчетовФактур.

Заполнение этого регистра происходит в общем модуле УчетНДСФормированиеТекстовЗапросов или специализированных процедурах проведения документов (в зависимости от релиза конфигурации это может быть модуль УчетНДС или менеджеры документов). Проанализируем, где именно формируется структура для записи в ЖУСФ.

Наиболее надежный способ — перехватить момент записи данных в сам регистр сведений ЖурналУчетаСчетовФактур. Мы можем использовать обработчик события ПередЗаписью в модуле набора записей этого регистра (добавив его в наше расширение):


&После("ПередЗаписью")
Процедура Ист_ПередЗаписью(Отказ, Замещение)
    
    // Проверим, что запись происходит не при обмене или удалении данных
    Если Отказ Или ОбменДанными.Загрузка Тогда
        Возврат;
    КонецЕсли;
    
    // Проанализируем строки набора записей регистра ЖУСФ перед их сохранением в базу данных
    Для Каждого СтрокаЗаписи Из ЭтотОбъект Цикл
        
        // Получаем ссылку на документ-основание (например, Счет-фактура выданный)
        ДокументСсылка = СтрокаЗаписи.ДокументОснование;
        
        Если ЗначениеЗаполнено(ДокументСсылка) Тогда
            // Берем оригинальный системный номер документа прямо из базы данных
            ОригинальныйНомер = ДокументСсылка.Номер;
            
            // Заменяем представление номера на оригинальный номер (со всеми префиксами и нулями)
            // При необходимости здесь можно применить функцию ПрефиксацияОбъектовКлиентСервер.НомерНаПечать() 
            // с нужными параметрами, чтобы, например, убрать нули, но оставить префиксы.
            
            СтрокаЗаписи.ПредставлениеНомера = ОригинальныйНомер;
        КонецЕсли;
        
    КонецЦикла;
    
КонецПроцедуры

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

Альтернативный "лайфхак": Использование скрытого реквизита "Префикс БП 2.0"

Существует еще один интересный обходной путь, который не требует написания сложного программного кода, но использует скрытые механизмы совместимости БСП.

В справочнике Организации (а также в справочнике Подразделения организаций) исторически присутствует служебный реквизит ПрефиксБП20 (Префикс БП 2.0). Он скрыт от глаз пользователей и не выведен на форму карточки организации в интерфейсе «Такси».

Если заполнить данный реквизит нужными символами префикса, то в некоторых релизах конфигураций алгоритмы БСП начинают обрабатывать префиксы по старым правилам (как это было в редакции 2.0), что позволяет выводить префиксы без глубокого изменения программного кода. Получить доступ к этому реквизиту для его заполнения можно с помощью стандартной обработки «Групповое изменение реквизитов» (раздел «Администрирование» — «Обслуживание» — «Корректировка данных»).

Однако этот метод является недокументированным и может перестать работать при очередном обновлении версии БСП, поэтому использование расширений конфигурации остается наиболее надежным и профессиональным подходом.

Резюме и рекомендации

Мы детально изучили проблему отображения префиксов в БП 3.0 и пришли к следующим выводам:

← На главную