Как избежать задвоения номеров документов по одной организации при обмене между узлами?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При распределенной работе в 1С часто возникает ситуация, когда в разных узлах информационной базы (главном и подчиненном) менеджеры и бухгалтеры создают документы по одной и той же организации. Если нумерация не настроена должным образом, платформа генерирует одинаковые номера в обеих базах (например, КЛТО00012). При очередном сеансе обмена эти документы приходят в базу-приемник, вызывая коллизии и задвоение номеров.

Проанализируем причины возникновения этой проблемы и разберем по шагам правильные способы настройки уникальной нумерации и исправления уже возникших ошибок.

Разделение понятий: префикс информационной базы и префикс организации

Для правильного понимания механизмов автонумерации 1С важно четко разделять два вида префиксов:

  1. Префикс организации — задается в справочнике Организации. Он предназначен для разделения документооборота разных юридических лиц внутри одной базы (например, префикс КЛ для ООО «Клен», префикс ТО для ООО «Тополь»).
  2. Префикс информационной базы (узла) — задается в константах или настройках узла плана обмена (например, ГБ для главной базы, Ф1 для филиала 1). Именно этот префикс гарантирует уникальность номеров при создании документов в разных узлах по одному и тому же юридическому лицу.

В типовых конфигурациях полный номер документа формируется сложением обоих префиксов: [ПрефиксИБ][ПрефиксОрганизации]-[Номер]. Например, в главном узле документ получит номер ГБКЛ-000012, а в подчиненном — Ф1КЛ-000012. В таком случае коллизий при синхронизации не возникнет.

Почему префикс «улетает» в другую базу при обмене

Распространенная ошибка заключается в том, что при настройке префикса в подчиненном узле константа ПрефиксИнформационнойБазы попадает в состав плана обмена с признаком авторегистрации. В результате:

  1. Администратор меняет префикс в дочерней базе на Ф1.
  2. Константа регистрируется к отправке в узле плана обмена.
  3. При синхронизации измененная константа перезаписывает префикс в центральной базе, превращая его из ГБ в Ф1 (или наоборот, при выгрузке из центра затирает настройку филиала).

Чтобы этого избежать, префикс информационной базы не должен передаваться в составе обмена как глобальная константа для перезаписи.

Способ 1. Исключение константы префикса из состава плана обмена

Рассмотрим, как запретить миграцию константы префикса в распределенной информационной базе (РИБ). Для этого необходимо в конфигураторе открыть состав плана обмена и снять авторегистрацию с константы ПрефиксИнформационнойБазы, либо программно исключать ее из выгрузки в модуле плана обмена:


Процедура ПриОтправкеДанныхПодчиненному(ЭлементДанных, ОтправкаЭлемента, СозданиеНачальногоОбраза)
    Если ТипЗнч(ЭлементДанных) = Тип("КонстантаМенеджерЗначения.ПрефиксИнформационнойБазы") Тогда
        ОтправкаЭлемента = ОтправкаЭлементаДанных.Игнорировать;
    КонецЕсли;
КонецПроцедуры

Аналогично обработаем выгрузку в направлении подчиненного узла к главному в процедуре ПриОтправкеДанныхГлавному.

Способ 2. Использование подсистемы «Префиксация объектов» БСП

Если конфигурация разработана с использованием Библиотеки стандартных подсистем (БСП), префиксация настраивается централизованно. В типовых решениях подсистема использует собственный регистр сведений и обработчик ПрефиксацияОбъектовСобытия.УстановитьПрефиксИнформационнойБазыИОрганизации.

В таких конфигурациях префикс узла задается непосредственно в свойствах самого узла плана обмена (в реквизите Префикс). Каждый узел хранит свой индивидуальный префикс, и перезаписи констант не происходит.

Как исправить уже возникшие задвоения номеров

Разберем по шагам порядок действий по исправлению нумерации в рабочей системе:

  1. Проверить длину номера: Убедимся, что длина реквизита Номер в конфигураторе достаточна для размещения префикса базы (2 символа), префикса организации (2 символа), разделителя (дефиса) и необходимого количества цифр номера. Если длины не хватает, платформа обрезает номер справа, вызывая сбой автонумерации.
  2. Перенумеровать задвоенные документы: С помощью обработки «Групповое изменение реквизитов» или собственной обработки присвоим документам филиала уникальные номера с нужным префиксом узла.
  3. Зарегистрировать изменения к обмену: Зарегистрируем исправленные документы для передачи между узлами с помощью метода: ПланыОбмена.ЗарегистрироватьИзменения(УзелОбмена, ИзмененныйДокумент);
  4. Сбросить кэш автонумерации платформы: Платформа 1С кэширует максимальные номера в оперативной памяти сервера приложений. Чтобы платформа корректно формировала следующие номера и не брала старые ошибочные значения, программно обновим нумерацию: ОбновитьНумерациюОбъектов(Метаданные.Документы.ИмяДокумента);

Альтернативные архитектурные решения

Если разделение префиксов по узлам не подходит по требованиям учетной политики (например, когда требуется сквозная единая нумерация для клиентов без префиксов филиалов), применяют другие подходы:

  1. Выделение непересекающихся числовых диапазонов: Главному узлу выделяется диапазон номеров от 00000001 до 04999999, а дочернему узлу — от 05000000 до 09999999. Настройка реализуется через подписку на событие ПриУстановкеНовогоНомера.
  2. Централизованная нумерация: В филиале документы создаются с временным техническим номером, а постоянный номер присваивается документу только в центральной базе при получении данных и возвращается обратно в узел следующим сеансом связи.
← На главную