При переходе с конфигурации «Конвертация данных 2.0» на версию 3.1 многие разработчики сталкиваются с типичной трудностью: правила созданы, XML-файл выгружен, но в интерфейсе типовой программы (например, УТ 11 или Розница) нет привычной кнопки «Загрузить правила». Это происходит из-за коренной смены парадигмы обмена данными. В этой статье мы подробно разберем, как именно работают правила в КД 3.1, куда «исчезает» XML и какими способами можно внедрить свою логику в план обмена через универсальный формат (EnterpriseData).
Для начала проанализируем ситуацию и выясним причину, почему привычный метод «загрузки XML» здесь не работает. В КД 2.0 правила представляли собой интерпретируемый XML-файл, который система считывала «на лету». В КД 3.1, работающей с универсальным форматом EnterpriseData, правила — это программный код на языке 1С. Когда вы нажимаете кнопку «Выгрузить правила» в КД 3.1, вы действительно получаете XML-файл, но он является лишь контейнером для текста модулей. Чтобы этот код заработал, он должен оказаться внутри информационной базы в виде исполняемого кода.
Рассмотрим основные способы подключения этого кода к вашему обмену.
Это основной и самый производительный способ, который используется в типовых решениях. Вся логика преобразования данных из объектов информационной базы в формат XML (и обратно) сосредоточена в специальных общих модулях.
Разберем этот процесс по шагам:
МенеджерОбменаЧерезУниверсальныйФормат. Обратите внимание, что в современных конфигурациях модули разделены по версиям формата, например: МенеджерОбменаЧерезУниверсальныйФормат_1_6 или МенеджерОбменаЧерезУниверсальныйФормат_1_13.Важно помнить: при использовании этого метода система автоматически начнет применять новую логику для всех узлов плана обмена, использующих данную версию формата.
Если вам необходимо изменить логику обмена без внесения изменений в конфигуратор (например, база находится на строгой поддержке), воспользуемся механизмом внешнего менеджера обмена. Эта возможность предусмотрена в Библиотеке стандартных подсистем (БСП).
Рассмотрим подробнее, как это реализовать:
.epf). Программа сформирует файл, внутри которого в модуле объекта будет содержаться весь необходимый код менеджера обмена..epf.Теперь система при выполнении синхронизации будет игнорировать встроенный общий модуль и обращаться к коду во внешнем файле. Это идеальный способ для оперативной отладки правил.
Выясним, как быстро проверить работу правил, если вы еще не готовы фиксировать их в конфигурации. В составе КД 3.1 поставляется обработка «Регистрация правил обмена» (или аналогичные инструменты в составе подсистемы обмена).
Проанализируем алгоритм работы с ней:
ВыгрузкаЗагрузкаДанныхEnterpriseData.Поскольку правила теперь являются обычным программным кодом, процесс отладки стал значительно прозрачнее, чем в КД 2.0. Посмотрим на пример того, как можно отлавливать ошибки:
Если вы используете встроенный модуль, вы можете просто поставить точку останова в процедурах типа ПКО_ПередВыгрузкой_Справочник_Номенклатура_Отправка. Если же используется внешний менеджер (обработка), для отладки необходимо:
.epf доступен серверу 1С.Пример структуры кода, который генерирует КД 3.1 для вставки в модуль:
Процедура ЗаполнитьПравилаКонвертацииОбъектов(ПравилаКонвертации) Экспорт
ПКО = ПравилаКонвертации.Добавить();
ПКО.Имя = "Справочник_Номенклатура_Отправка";
ПКО.ОбъектИсточник = "Справочник.Номенклатура";
ПКО.ОбъектПриемник = "Справочник.Номенклатура";
// ... дальнейшая настройка свойств
КонецПроцедуры
Подведем итог: файл XML, который генерирует КД 3.1, предназначен в первую очередь для **универсальной обработки выгрузки/загрузки данных**, а не для постоянной работы плана обмена. План обмена в типовых решениях (УТ 11, Розница, ERP) жестко завязан на программный интерфейс. Чтобы ваша логика стала частью автоматического обмена (по расписанию или кнопке «Синхронизировать»), она должна физически находиться в общем модуле конфигурации или быть подключена как внешний менеджер в настройках конкретного соединения.
Таким образом, для успешной работы обмена через универсальный формат необходимо четко понимать, что мы переходим от «настройки метаданных в XML» к «программированию логики трансформации данных».