Как в 1С переопределить формирование печатного номера документа с помощью расширения?

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

При формировании печатных форм в типовых конфигурациях 1С (таких как «1С:Бухгалтерия предприятия», «1С:Управление торговлей», «1С:ERP») платформа по умолчанию форматирует номер документа. Если нумерация документов ведется по нестандартной схеме (например, с дефисом или датой вида ММДД-НОМЕР), стандартные алгоритмы могут отсекать часть номера или удалять лидирующие нули. Разберем, почему это происходит и как правильно переопределить логику вывода номера на печать с помощью механизма расширений.

Почему 1С обрезает нестандартные номера при печати?

Выясним причину такого поведения системы. В конфигурациях, построенных на базе «Библиотеки стандартных подсистем» (БСП), перед выводом в макет номер документа передается в функцию ПрефиксацияОбъектовКлиентСервер.НомерНаПечать. Этот алгоритм решает следующие задачи:

  1. Находит служебные разделители (знаки дефиса - или косой черты /).
  2. Удаляет префиксы информационной базы и пользовательские префиксы организации.
  3. Удаляет лидирующие незначащие нули из оставшейся числовой части.

Когда используется номер формата 0512-0042, механизм БСП воспринимает часть до знака - как служебный префикс и отсекает его, выводя на печать только 42. Если требуется печатать номер целиком, стандартную обработку необходимо отключить или скорректировать.

Решение проблемы через модуль ПрефиксацияОбъектовКлиентСерверПереопределяемый

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

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

Посмотрим на пример переопределения метода с помощью аннотации &Вместо:


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

Проанализируем работу этого кода:

  1. Параметр СтандартнаяОбработка = Ложь сообщает платформе, что типовой алгоритм поиска разделителей и удаления префиксов выполнять не требуется.
  2. Параметр НомерОбъекта передается в печатную форму в исходном виде, сохраняя все символы, разделители и дефисы.

Особенности применения расширений в базовых версиях 1С

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

  1. Создание расширения: В конфигураторе базовой версии пункт создания и редактирования расширений заблокирован. Разработку расширения необходимо выполнять в конфигураторе версии ПРОФ или в пустой базе с аналогичным режимом совместимости.
  2. Подключение расширения: В базовую версию готовый файл расширения (.cfe) загружается исключительно в режиме «1С:Предприятие» через меню Функции для технического специалиста (или Все функции) — Управление расширениями конфигурации.
  3. Ограничения структуры: Базовая версия не принимает расширения, содержащие собственные объекты метаданных (новые справочники, документы, реквизиты). Расширение должно содержать только переопределяемый модуль с программным кодом.
  4. Режим совместимости: Значение режима совместимости создаваемого расширения должно строго совпадать с режимом совместимости рабочей базовой конфигурации.

Альтернативные способы сохранения номеров

Если по организационным или техническим причинам использование расширений невозможно, рассмотрим альтернативные варианты:

  1. Внешняя печатная форма (ВПФ): Базовые версии поддерживают механизм дополнительных внешних отчетов и обработок. Во внешней печатной форме логику заполнения номера можно переписать напрямую без вызова функций БСП.
  2. Пользовательские макеты печати: Через раздел Администрирование — Печатные формы, отчеты и обработки — Макеты печатных форм можно отредактировать типовой макет для конкретного документа, изменив правила заполнения параметров.
← На главную