При разработке и сопровождении информационных систем на базе «1С:Предприятие 8», таких как «Управление производственным предприятием» (УПП), часто возникает задача включения новых объектов метаданных в существующий обмен данными. Казалось бы, процедура проста: добавить справочник в состав ПланОбмена, разрешить авторегистрацию и запустить обмен. Однако на практике программисты часто сталкиваются с тем, что справочник в базе-источнике заполнен, а в базу-приемник данные не попадают. Разберем детально, почему это происходит и какие шаги необходимо предпринять для решения проблемы.
Прежде всего, проанализируем, как работает обмен данными в 1С. Когда мы добавляем объект в состав ПланОбмена и устанавливаем свойство Авторегистрация в значение Разрешить, система начинает отслеживать изменения этого объекта с этого момента времени. Это означает, что если вы запишете новый элемент справочника или измените существующий, платформа автоматически внесет запись в специальную вспомогательную таблицу изменений (в базе данных она имеет суффикс .Изменения).
Рассмотрим ситуацию автора темы: справочник уже содержит элементы. Поскольку они были созданы до того, как справочник был включен в состав плана обмена, они не зарегистрированы для узла обмена. Система обмена «не видит» их, так как она выгружает только те данные, на которые есть ссылки в таблице изменений.
Важный вывод: Само по себе включение объекта в план обмена не приводит к немедленной выгрузке всех существующих данных. Чтобы существующие элементы «улетели» в другую базу, их нужно зарегистрировать принудительно.
Выясним, как зарегистрировать уже имеющиеся данные. Для этого в типовых конфигурациях, включая УПП, существует штатная обработка «Регистрация изменений для обмена». Проанализируем порядок действий:
После этого действия в таблице изменений появятся записи для всех элементов справочника, и при следующем сеансе обмена они будут включены в файл выгрузки.
В конфигурациях, использующих «Конвертацию данных 2.1», часто применяется механизм внешних правил регистрации. Это XML-файл, который загружается непосредственно в настройку обмена в режиме «1С:Предприятие». Проанализируем ситуацию: если в метаданных Авторегистрация разрешена, но во внешних правилах регистрации этот справочник не описан или для него стоит запрет, автоматическая регистрация при записи объекта может не сработать или сработать некорректно.
Для исправления ситуации необходимо:
Даже если объект успешно зарегистрирован, он не будет выгружен, если в правилах обмена (XML-файл правил конвертации) отсутствуют инструкции по его обработке. Разберем по шагам, что должно быть в правилах:
Пример программной регистрации изменений для отладки, если вы хотите сделать это через код:
// Выберем узел, для которого хотим зарегистрировать данные
УзелОбмена = ПланыОбмена.Полный.НайтиПоКоду("001");
// Зарегистрируем весь справочник "НовыйСправочник"
ПланыОбмена.ЗарегистрироватьИзменения(УзелОбмена, Метаданные.Справочники.НовыйСправочник);
Рассмотрим еще одну распространенную причину неудач: различие в структуре метаданных. В обмене «УПП — УПП» предполагается, что структуры объектов идентичны. Если в базе-источнике вы добавили справочник, а в базе-приемнике забыли это сделать или не обновили конфигурацию базы данных, обмен завершится с ошибкой при попытке загрузки. Система не сможет создать объект, типа которого не существует в метаданных приемника.
Часто в планах обмена настроены фильтры (например, выгружать данные только по определенной организации). Если ваш новый справочник имеет реквизит Организация, но он не заполнен, или если в логике правил выгрузки не прописано, как этот справочник должен соотноситься с фильтрами узла, объекты могут отсекаться на этапе формирования файла выгрузки. Проверьте модуль набора записей плана обмена или обработчики ПВД в «Конвертации данных» на предмет наличия условий типа Отказ = Истина;.
Подведем итог. Чтобы справочник начал успешно выгружаться, пройдите по этому чек-листу:
ПланОбмена, Авторегистрация установлена в Разрешить в обеих базах.Выполнив эти действия, мы обеспечим корректную передачу данных между информационными базами. Помните, что механизм обмена данными в 1С — это совокупность работы платформы (регистрация) и программной логики (правила конвертации), и оба этих звена должны быть настроены согласованно.