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