При распределенной работе в 1С часто возникает ситуация, когда в разных узлах информационной базы (главном и подчиненном) менеджеры и бухгалтеры создают документы по одной и той же организации. Если нумерация не настроена должным образом, платформа генерирует одинаковые номера в обеих базах (например, КЛТО00012). При очередном сеансе обмена эти документы приходят в базу-приемник, вызывая коллизии и задвоение номеров.
Проанализируем причины возникновения этой проблемы и разберем по шагам правильные способы настройки уникальной нумерации и исправления уже возникших ошибок.
Для правильного понимания механизмов автонумерации 1С важно четко разделять два вида префиксов:
Организации. Он предназначен для разделения документооборота разных юридических лиц внутри одной базы (например, префикс КЛ для ООО «Клен», префикс ТО для ООО «Тополь»).ГБ для главной базы, Ф1 для филиала 1). Именно этот префикс гарантирует уникальность номеров при создании документов в разных узлах по одному и тому же юридическому лицу.В типовых конфигурациях полный номер документа формируется сложением обоих префиксов: [ПрефиксИБ][ПрефиксОрганизации]-[Номер]. Например, в главном узле документ получит номер ГБКЛ-000012, а в подчиненном — Ф1КЛ-000012. В таком случае коллизий при синхронизации не возникнет.
Распространенная ошибка заключается в том, что при настройке префикса в подчиненном узле константа ПрефиксИнформационнойБазы попадает в состав плана обмена с признаком авторегистрации. В результате:
Ф1.ГБ в Ф1 (или наоборот, при выгрузке из центра затирает настройку филиала).Чтобы этого избежать, префикс информационной базы не должен передаваться в составе обмена как глобальная константа для перезаписи.
Рассмотрим, как запретить миграцию константы префикса в распределенной информационной базе (РИБ). Для этого необходимо в конфигураторе открыть состав плана обмена и снять авторегистрацию с константы ПрефиксИнформационнойБазы, либо программно исключать ее из выгрузки в модуле плана обмена:
Процедура ПриОтправкеДанныхПодчиненному(ЭлементДанных, ОтправкаЭлемента, СозданиеНачальногоОбраза)
Если ТипЗнч(ЭлементДанных) = Тип("КонстантаМенеджерЗначения.ПрефиксИнформационнойБазы") Тогда
ОтправкаЭлемента = ОтправкаЭлементаДанных.Игнорировать;
КонецЕсли;
КонецПроцедуры
Аналогично обработаем выгрузку в направлении подчиненного узла к главному в процедуре ПриОтправкеДанныхГлавному.
Если конфигурация разработана с использованием Библиотеки стандартных подсистем (БСП), префиксация настраивается централизованно. В типовых решениях подсистема использует собственный регистр сведений и обработчик ПрефиксацияОбъектовСобытия.УстановитьПрефиксИнформационнойБазыИОрганизации.
В таких конфигурациях префикс узла задается непосредственно в свойствах самого узла плана обмена (в реквизите Префикс). Каждый узел хранит свой индивидуальный префикс, и перезаписи констант не происходит.
Разберем по шагам порядок действий по исправлению нумерации в рабочей системе:
Номер в конфигураторе достаточна для размещения префикса базы (2 символа), префикса организации (2 символа), разделителя (дефиса) и необходимого количества цифр номера. Если длины не хватает, платформа обрезает номер справа, вызывая сбой автонумерации.ПланыОбмена.ЗарегистрироватьИзменения(УзелОбмена, ИзмененныйДокумент);ОбновитьНумерациюОбъектов(Метаданные.Документы.ИмяДокумента);Если разделение префиксов по узлам не подходит по требованиям учетной политики (например, когда требуется сквозная единая нумерация для клиентов без префиксов филиалов), применяют другие подходы:
00000001 до 04999999, а дочернему узлу — от 05000000 до 09999999. Настройка реализуется через подписку на событие ПриУстановкеНовогоНомера.