В процессе эксплуатации конфигурации 1С:Управление нашей фирмой (УНФ) версии 1.6 часто возникает потребность в кастомизации системы нумерации документов. Это может быть связано с требованиями ведения учета по разным подразделениям, выделением определенных типов операций или просто желанием пользователя изменить стандартный вид номера. Поскольку УНФ построена на базе Библиотеки стандартных подсистем (БСП), механизмы управления номерами здесь стандартизированы, но имеют свои особенности. Рассмотрим подробно, как управлять префиксами как через интерфейс, так и с помощью программного кода.
Прежде чем приступать к написанию кода, проанализируем штатные возможности системы. В 1С:УНФ номер документа обычно состоит из нескольких частей: ПрефиксИнформационнойБазы + ПрефиксОрганизации + Дефис + ПорядковыйНомер. Если вы видите в номере буквы, например «НФ», это не значит, что они жестко прописаны в коде. Выясним, где они настраиваются.
1. Префикс информационной базы. Часто пользователи хотят убрать или изменить префикс «НФ». Для этого нам нужно перейти в раздел Компания (в некоторых интерфейсах — Настройки или Администрирование), далее выбрать пункт Синхронизация данных. Даже если вы не используете обмен с другими базами, поле Префикс этой информационной базы находится именно здесь. Если его очистить, система перестанет добавлять эти два символа к каждому новому документу.
2. Префикс организации. Если в базе ведется учет по нескольким юридическим лицам, крайне важно их разделять в нумерации. Перейдем в справочник Организации, откроем карточку нужной компании и на вкладке Основные реквизиты найдем поле Префикс. Установленное здесь значение (например, «ТД») будет автоматически добавляться ко всем документам этой организации.
Если штатных настроек недостаточно и требуется добавить специфический префикс (например, зависящий от склада или вида операции), нам придется обратиться к программному коду. Рассмотрим, как это работает «под капотом» БСП. Основным событием, отвечающим за генерацию номера, является ПриУстановкеНовогоНомера. Это событие перехватывается специальной Подпиской на событие.
В типовой конфигурации существует подписка, которая обычно называется УстановитьПрефиксИнформационнойБазыИОрганизации. Она направляет выполнение кода в общий модуль ПрефиксацияОбъектовСобытия. Разберем цепочку вызовов:
ПриУстановкеНовогоНомера.
Процедура УстановитьПрефиксИнформационнойБазыИОрганизации(Источник, СтандартнаяОбработка, Префикс) Экспорт
УстановитьПрефикс(Источник, Префикс, Истина, Истина);
КонецПроцедуры
В этой процедуре происходит сборка итоговой строки префикса. Если мы хотим вмешаться в этот процесс, не рекомендуется изменять типовой модуль ПрефиксацияОбъектовСобытия, так как это усложнит дальнейшие обновления конфигурации.
Правильным подходом для программиста будет использование Переопределяемых модулей. В БСП предусмотрен специальный модуль ПрефиксацияОбъектовПереопределяемый. Посмотрим на процедуру ПриУстановкеНовогоНомера, которая находится в нем. Именно здесь разработчики 1С оставили «окно» для внесения изменений в логику нумерации.
Предположим, нам нужно добавить к номеру дополнительный префикс «КТ-». Рассмотрим пример реализации такой логики:
Процедура ПриУстановкеНовогоНомера(Источник, СтандартнаяОбработка, Префикс) Экспорт
// Добавляем свой префикс к уже сформированному системному
ДополнительныйПрефикс = "КТ";
Префикс = Префикс + ДополнительныйПрефикс;
КонецПроцедуры
Однако стоит помнить, что префикс — это не просто набор букв, а часть строки ограниченной длины. Выясним причины, по которым нумерация может «сломаться».
При добавлении новых символов в префикс необходимо учитывать структуру реквизита Номер в метаданных документа. Обычно его длина составляет 11 символов. Проанализируем ситуацию: если префикс информационной базы занимает 2 символа, префикс организации — 2 символа, разделитель (дефис) — 1 символ, а ваш новый префикс — еще 2 символа, то на цифровую часть номера остается всего 4 знака.
Если в течение года количество документов превысит 9999, система не сможет создать следующий номер и выдаст ошибку. Поэтому, внедряя дополнительные префиксы, старайтесь сокращать стандартные или убедитесь, что длины номера достаточно для вашего объема документооборота.
Рассмотрим ситуацию, когда автор обсуждения решил обнулить префикс «НФ». Важно понимать, что для платформы 1С номер НФ00-000001 и номер 00-000001 — это разные номера. Если вы удаляете префикс ИБ, система начнет искать последний номер в базе без этого префикса. Если таких документов еще не было, отсчет начнется с единицы.
Внимание: если когда-то в прошлом в базе уже были документы без префикса с номером 00-000001, возникнет конфликт уникальности. В таком случае мы рекомендуем выполнить следующие шаги:
00-000001).Современным и наиболее безопасным методом изменения логики установки номера в 1С:УНФ 1.6 является использование Расширений. Вместо правки типовых модулей, мы можем создать расширение и добавить в него процедуру-перехватчик для модуля ПрефиксацияОбъектовСобытия.
Используя аннотацию &После, мы можем модифицировать переменную Префикс уже после того, как типовые механизмы БСП отработали. Это гарантирует, что ваша логика применится в самую последнюю очередь.
&После("УстановитьПрефиксИнформационнойБазыИОрганизации")
Процедура Расш1_УстановитьПрефиксИнформационнойБазыИОрганизации(Источник, СтандартнаяОбработка, Префикс)
// Например, добавляем код подразделения, если он заполнен в документе
Если ОбщегоНазначения.ЕстьРеквизитОбъекта("Подразделение", Источник.Метаданные()) Тогда
Если ЗначениеЗаполнено(Источник.Подразделение) Тогда
Префикс = Префикс + СокрЛП(Источник.Подразделение.Код);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Таким образом, мы обеспечиваем гибкую и расширяемую систему нумерации, которая не мешает обновлению типовой конфигурации УНФ и корректно работает в рамках методологии БСП.