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