Как сохранить префиксы в номерах счетов-фактур в 1С:Бухгалтерия 2.0 при загрузке из Управления торговлей

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

При ведении учета в связке 1С:Управление торговлей 10.3 (УТ) и 1С:Бухгалтерия предприятия 2.0 (БП) часто возникает критическая ситуация: счета-фактуры, выставленные покупателям в торговой базе с определенным префиксом, после выгрузки в бухгалтерскую базу теряют этот префикс в печатных формах и книгах продаж. Рассмотрим, почему это происходит, насколько это критично с точки зрения законодательства и какие пути решения существуют для конфигураций на обычных формах.

Анализ проблемы: почему префиксы исчезают

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

Разберем техническую сторону вопроса. За этот процесс отвечает программный код в общем модуле конфигурации. Чаще всего используется функция ПолучитьНомерНаПечать(). Эта функция настроена так, чтобы отсекать:

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

Законодательный аспект: обязателен ли префикс?

Перед тем как приступать к правке программы, проанализируем позицию контролирующих органов. Существует распространенное мнение, что использование буквенных префиксов в счетах-фактурах является нарушением. Однако Минфин России в письмах от 12.01.2016 № 03-07-09/140 и от 22.05.2012 № 03-07-09/59 разъясняет обратное.

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

Вариант 1: Манипуляция со справочником Организации

Рассмотрим один из немногих способов повлиять на ситуацию без глубокого изменения программного кода. Если документы в БП 2.0 не создаются вручную, а только загружаются из УТ 10.3, можно попробовать изменить настройки префиксации в самой бухгалтерии.

Разберем этот метод по шагам:

  1. Перейдем в справочник Организации.
  2. Откроем карточку нужной организации.
  3. Найдем поле Префикс и полностью очистим его.
  4. Запишем изменения.

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

Вариант 2: Использование внешних печатных форм

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

Для реализации этого метода потребуется программист, который создаст внешнюю обработку. В коде этой обработки вместо стандартного вызова функции формирования номера будет написан простой алгоритм:


// Пример изменения логики вывода номера в печатной форме
НомерДляВывода = ДокументОбъект.Номер; 
// Вместо вызова ОбщегоМодуля.ПолучитьНомерНаПечать(ДокументОбъект.Номер)
ОбластьМакета.Параметры.Номер = НомерДляВывода;

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

Вариант 3: Модификация общего модуля (требуется изменение конфигурации)

Если цель — добиться единообразия везде (в печати, в Книге продаж и при выгрузке в налоговую), придется внести изменения в общий модуль. В 1С 8.2 или 8.3 (в режиме совместимости с БП 2.0) это делается через изменение функции ПолучитьНомерНаПечать.

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


Функция ПолучитьНомерНаПечать(Знач Номер, УдалитьПрефиксИнформационнойБазы = Истина, УдалитьПрефиксОрганизации = Истина) Экспорт
    
    // Оригинальный код 1С отсекает символы здесь.
    // Чтобы сохранить префиксы, можно принудительно вернуть полный номер.
    
    Возврат Номер; // Самый радикальный способ сохранения префикса
    
КонецФункции

Внимание: такое изменение затронет все документы в базе, а не только счета-фактуры. Это может привести к тому, что во всех накладных, актах и приходных ордерах также появятся префиксы и лишние нули, что не всегда удобно пользователям.

Вариант 4: Использование расширений (для современных версий платформы)

Если ваша база БП 2.0 запущена на платформе версии 8.3.9 и выше, вы можете воспользоваться механизмом расширений. Это позволит перехватить выполнение функции без изменения основной конфигурации. Мы можем использовать аннотацию &Вместо, чтобы подменить типовой алгоритм своим.

Проанализируем пример кода в расширении:


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

Выводы и рекомендации

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

Наш план действий должен быть следующим:

  1. Если налоговая требует полного соответствия, а данные в БП приходят из УТ, первым делом проверьте корректность загрузки номеров в регистры (они должны храниться с префиксами).
  2. Попробуйте очистить префикс в справочнике Организации.
  3. Если это не помогло, единственным надежным способом остается небольшая программная доработка общего модуля или создание расширения. Это гарантирует, что номера будут совпадать в печатной форме, Книге продаж и при выгрузке через СБИС, что исключит претензии со стороны ФНС и исключит риск возникновения «налоговых разрывов».
← На главную