При настройке универсального обмена данными между типовыми конфигурациями 1С (например, 1С:Зарплата и Управление Персоналом 3.1 и 1С:ERP Управление предприятием 2 или 1С:Комплексная автоматизация) разработчики часто сталкиваются с ситуацией, когда привычный XML-файл с правилами обмена в конфигурации отсутствует. Проанализируем, как устроена архитектура интеграции на базе формата EnterpriseData (Конвертация данных 3.0), где хранятся правила выгрузки и регистрации объектов и как выполняется их доработка.
В современных типовых решениях 1С вместо прямых правил обмена между двумя конкретными конфигурациями (как в «1С:Конвертация данных 2.1») применяется формат EnterpriseData и концепция «1С:Конвертация данных 3.0». Обмен происходит не напрямую между базами, а через промежуточный формат на основе XDTO-пакетов.
Разберем двухуровневую структуру правил, используемую при таком подходе:
МенеджерОбменаЧерезУниверсальныйФормат. Внешние XML-файлы правил конвертации в этой схеме не используются.Рассмотрим, где физически находится логика трансформации данных. Вся обработка выгрузки из 1С в формат XML (EnterpriseData) и загрузки из XML в целевую базу сосредоточена в кодовой базе. Основную роль выполняет общий модуль МенеджерОбменаЧерезУниверсальныйФормат.
В этом модуле описаны алгоритмы забора данных из базы, их сопоставление со свойствами XDTO-пакета, а также обратная процедура при получении данных. Сам формат опирается на XDTO-пакеты вида EnterpriseData_X_X, встроенные в метаданные информационной базы.
Если требуется изменить условия, при которых объекты подлежат отправке, не обязательно менять конфигурацию в конфигураторе. Воспользуемся штатной возможностью загрузки правил регистрации:
Обратим внимание: таким способом подгружаются именно правила регистрации (ПРО), но не алгоритмы заполнения реквизитов (ПКО).
Выясним, какими способами можно внести изменения в правила выгрузки или загрузки реквизитов, если типовой функционал обмена требует расширения:
ОбменДаннымиПереопределяемый и переопределяют процедуры вида ПКО_..._ПриОтправкеДанных или ПКО_..._ПриПолученииДанных.EnterpriseData штатно поддерживает механизмы дополнительных реквизитов и сведений. Если требуется передать нестандартное поле, достаточно настроить одинаковый состав дополнительных реквизитов в обеих базами без переписывания программного кода.Таким образом, в технологиях КД 3.0 выгрузка и загрузка данных изолированы друг от друга, а правила конвертации перенесены в программный код программных модулей 1С.