Почему не устанавливается префикс организации у документов при обмене в УТ 11 и как это исправить

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

При переносе данных между базами с помощью конфигурации «Конвертация данных 2» (КД 2) разработчики часто сталкиваются с ситуацией: правила выгрузки настроены корректно, префикс передается в файле обмена, однако в базе-приемнике (например, 1С:Управление торговлей 11) итоговый номер документа формируется без префикса организации. Более того, при интерактивном создании этого же документа в приемнике номер также создается без префикса. Разберем по шагам, почему так происходит и какие существуют варианты решения проблемы.

Анализ причин поведения типовой конфигурации

Выясним причину такого поведения подсистемы нумерации. В типовых конфигурациях на базе «Библиотеки стандартных подсистем» (БСП), таких как УТ 11, КА 2 и ERP, за формирование номеров отвечает подсистема «Префиксация объектов» (общий модуль ПрефиксацияОбъектовСобытия).

Логика работы механизма префиксации построена на следующих принципах:

  1. Проверка реквизитов шапки: Механизм префиксации ожидает наличие реквизита Организация непосредственно в шапке документа. Если этот реквизит заполнен, система добавляет его префикс к номеру.
  2. Документы без организации в шапке: В ряде документов (в частности, в документе Ввод остатков) реквизит Организация отсутствует в шапке, так как аналитика организации задается в табличной части либо вовсе не требуется для некоторых типов операций.
  3. Формирование номера по умолчанию: При отсутствии организации в шапке стандартный алгоритм БСП применяет только префикс информационной базы или префикс узла обмена, полностью игнорируя префиксы организаций.

Решение 1. Настройка правил обмена в «Конвертации данных 2»

Если конфигурацию-приемник менять нежелательно, переопределим формирование номера непосредственно в правилах конвертации объектов (ПКО).

Рассмотрим доступные варианты реализации в КД 2:

  1. Формирование номера в обработчике «ПослеЗагрузки» или «ПередЗаписью»:
    Если организация передана через параметры или заполнена в строках табличной части, мы можем программно получить ее префикс и сконструировать итоговый номер документа перед его сохранением в базу.
    
    // Пример в обработчике "ПередЗаписью" ПКО
    Если НЕ ЗначениеЗаполнено(Объект.Номер) Тогда
        ПрефиксОрг = "";
        Если Объект.ТабличнаяЧасть.Количество() > 0 Тогда
            ПрефиксОрг = СокрЛП(Объект.ТабличнаяЧасть[0].Организация.Префикс);
        КонецЕсли;
        
        Если ЗначениеЗаполнено(ПрефиксОрг) Тогда
            // Добавляем префикс организации к номеру или используем метод автонумерации
            Объект.УстановитьНовыйНомер(ПрефиксОрг);
        КонецЕсли;
    КонецЕсли;
    
  2. Использование переменной «ПрефиксДляАвтонумерации»:
    В обработчике ПередЗагрузкой ПКО доступна специальная служебная переменная ПрефиксДляАвтонумерации (или ПрефиксДляЗагрузки). Мы можем явно присвоить ей требуемую строку префикса перед тем, как объект запишется и платформа выполнит стандартную генерацию номера.
  3. Прямой перенос готового номера:
    Если в источнике номер уже сформирован со всеми необходимыми префиксами, в ПКС для свойства Номер достаточно отключить флаг поиска и генерации нового номера, чтобы перенести строковое значение один к одному.

Решение 2. Доработка логики на стороне базы-приемника

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

  1. Переопределяемый общий модуль:
    В конфигурациях БСП предусмотрен общий модуль ПрефиксацияОбъектовПереопределяемый. В процедуре ПриУстановкеНовогоНомераДокумента можно описать индивидуальную логику для документа Ввод остатков, извлекая организацию из первой строки табличной части и передавая ее в стандартную функцию генерации префикса.
  2. Расширение конфигурации:
    Без изменения типовой конфигурации можно создать расширение и перехватить событие ПриУстановкеНовогоНомера для нужного типа документа, принудительно задав префикс до момента записи объекта платформой.

Важные ограничения и нюансы автонумерации

Проанализируем технические ограничения платформы 1С:Предприятие 8.3, которые необходимо учитывать при работе со строковыми номерами:

  1. Длина поля номера: При программном объединении префиксов (префикс ИБ + префикс организации + разделитель + номер) итоговая строка не должна превышать максимальную длину реквизита Номер, заданную в метаданных. В противном случае числовая часть справа будет обрезана, что нарушит уникальность и механизм автонумерации.
  2. Лидирующие нули: При ручном формировании номера обязательно сохраняйте формат с фиксированным количеством знаков и лидирующими нулями (например, ПР00-000001). Если длина числовой части изменится, платформа может перестать автоматически увеличивать номер для последующих документов.
← На главную