При работе в 1С:ERP Управление предприятием многие пользователи сталкиваются с тем, что система автоматически присваивает документам сложные номера вида 00УБ-000241. При формировании печатных форм типовой механизм подсистемы префиксации отсекает часть системных символов, однако на бумаге все равно может выводиться номер с буквами (например, УБ-241) вместо чистого числового значения 241.
Разберем подробнее, из чего состоит системный номер, как убрать лишние символы средствами конфигурации и какие риски необходимо учитывать при настройке.
Проанализируем структуру номера. В типовых конфигурациях номер документа складывается из нескольких составляющих частей:
00), служащие для разграничения документов при обмене между различными узлами или системами.УБ), определяющие, к какому юридическому лицу относится документ.-, отделяющий служебный префикс от порядкового номера.000241), обеспечивающий правильную сортировку по строковому полю.При выводе на печать типовые алгоритмы автоматически удаляют лидирующие нули и стандартные префиксы информационной базы, но оставляют префикс организации, если он задан в карточке предприятия.
Если в программе ведется учет по одной организации и не используется обмен данными с другими базами, можно отключить формирование буквенных префиксов в настройках системы.
Разберем процесс настройки по шагам:
После выполнения этих действий новые документы будут формироваться со стандартным системным видом 0000-000001. При выводе на печать типовой механизм обрезки префиксов удалит технические нули до дефиса и лидирующие нули порядкового номера, в результате чего в печатную форму выведется чистый номер 1.
Рассмотрев вариант с очисткой параметров, важно проанализировать возможные последствия данного шага:
Чтобы не нарушать системную нумерацию, не снимать конфигурацию с поддержки и при этом получать корректные номера на печатных формах, выгодно использовать расширения конфигурации.
Выясним причину, почему этот способ предпочтительнее: он позволяет сохранить системный номер 00УБ-000241 внутри базы для правильной работы механизмов платформы, но перехватывает процедуру печати и передает в макет очищенное число 241.
Посмотрим на пример реализации: в расширении переопределяется функция подсистемы префиксации. Для этого используется модуль ПрефиксацияОбъектовКлиентСервер и его функция ПолучитьНомерНаПечать или событие ПриПолученииНомераНаПечать в переопределяемом модуле.
Пример кода обработки номера в расширении:
&НаСервере
Функция ИзменитьНомерДляПечати(Знач ВходнойНомер)
// Удаляем буквенные символы и дефисы
НомерНаПечать = СокрЛП(ВходнойНомер);
// Применяем стандартную функцию подсистемы БСП для преобразования номера
НомерНаПечать = ПрефиксацияОбъектовКлиентСервер.ПолучитьНомерНаПечать(НомерНаПечать, Истина, Истина);
Возврат НомерНаПечать;
КонецФункции
Такой подход обеспечивает гибкость: номера в базе остаются уникальными и корректными с точки зрения платформы, а печатные формы (Счет-фактура, УПД, Накладная) получают вид, полностью удовлетворяющий требованиям бухгалтерии.