При формировании печатных форм в типовых конфигурациях 1С (таких как «1С:Бухгалтерия предприятия», «1С:Управление торговлей», «1С:ERP») платформа по умолчанию форматирует номер документа. Если нумерация документов ведется по нестандартной схеме (например, с дефисом или датой вида ММДД-НОМЕР), стандартные алгоритмы могут отсекать часть номера или удалять лидирующие нули. Разберем, почему это происходит и как правильно переопределить логику вывода номера на печать с помощью механизма расширений.
Выясним причину такого поведения системы. В конфигурациях, построенных на базе «Библиотеки стандартных подсистем» (БСП), перед выводом в макет номер документа передается в функцию ПрефиксацияОбъектовКлиентСервер.НомерНаПечать. Этот алгоритм решает следующие задачи:
- или косой черты /).Когда используется номер формата 0512-0042, механизм БСП воспринимает часть до знака - как служебный префикс и отсекает его, выводя на печать только 42. Если требуется печатать номер целиком, стандартную обработку необходимо отключить или скорректировать.
Разберем по шагам правильный способ вмешательства в логику нумерации. В БСП предусмотрен специальный переопределяемый модуль, созданный для адаптации алгоритмов печати без вмешательства в типовой код ядра.
Попытка переопределить напрямую функцию ПрефиксацияОбъектовКлиентСервер.НомерНаПечать в расширении не всегда работает корректно из-за внутренней структуры вызовов подсистемы. Вместо этого разработчики БСП предусмотрели экспортную процедуру-событие ПриПолученииНомераНаПечать в модуле ПрефиксацияОбъектовКлиентСерверПереопределяемый.
Посмотрим на пример переопределения метода с помощью аннотации &Вместо:
&Вместо("ПриПолученииНомераНаПечать")
Процедура Расширение_ПриПолученииНомераНаПечать(НомерОбъекта, СтандартнаяОбработка,
УдалитьПрефиксИнформационнойБазы, УдалитьПользовательскийПрефикс) Экспорт
УдалитьПрефиксИнформационнойБазы = Ложь;
СтандартнаяОбработка = Ложь;
КонецПроцедуры
Проанализируем работу этого кода:
СтандартнаяОбработка = Ложь сообщает платформе, что типовой алгоритм поиска разделителей и удаления префиксов выполнять не требуется.НомерОбъекта передается в печатную форму в исходном виде, сохраняя все символы, разделители и дефисы.Рассмотрим важные технические нюансы, если доработка выполняется для базовой версии конфигурации (например, «1С:Бухгалтерия базовая»):
.cfe) загружается исключительно в режиме «1С:Предприятие» через меню Функции для технического специалиста (или Все функции) — Управление расширениями конфигурации.Если по организационным или техническим причинам использование расширений невозможно, рассмотрим альтернативные варианты: