При настройке интеграции между системами 1С:MDM Управление нормативно-справочной информацией и 1С:ERP Управление предприятием 2 через универсальный формат (Enterprise Data) специалисты часто сталкиваются с парадоксальной ситуацией. В мониторе синхронизации данных мы видим, что объекты (например, справочники «Номенклатура» или «Контрагенты») успешно зарегистрированы на узле обмена, однако при выполнении синхронизации счетчик обработанных объектов показывает «0», а файл выгрузки остается практически пустым. При этом система не выдает никаких диагностических сообщений об ошибках.
В данной статье мы подробно разберем, почему это происходит, как работает механизм «рукопожатия» версий и на что обратить внимание в настройках 1С:MDM.
Рассмотрим фундаментальный принцип работы универсального формата. Когда две базы начинают обмениваться данными, они должны «договориться», по какому именно «языку» (версии формата Enterprise Data) они будут взаимодействовать. В 1С это реализовано через автоматическое согласование версий.
Разберем этот процесс по шагам:
Что нужно сделать: выполним процедуру синхронизации 2–3 раза подряд в обеих базах. Это позволит системам обменяться служебными пакетами. Если после этого в окне монитора обмена появилась информация об используемой версии формата (например, 1.10), значит, «рукопожатие» произошло успешно.
Проанализируем архитектурные особенности решения 1С:MDM. В отличие от типовых конфигураций, MDM — это мастер-система, где данные проходят строгий контроль. Регистрация объекта на узле обмена (которую мы видим в обработке «Регистрация изменений для обмена») — это лишь первый этап.
Выясним причину, по которой объект может игнорироваться при выгрузке:
Для проверки этого предположения попробуем найти в конфигураторе процедуру ПКО_..._ПриОтправке (Правило Конвертации Объекта) в общем модуле менеджера обмена и посмотрим, нет ли там условий, очищающих структуру данных при определенных значениях реквизитов.
Разберем важное различие, упомянутое опытными разработчиками. Правила регистрации (создаваемые в КД 2) отвечают за то, что попадет в таблицу изменений. Правила конвертации (КД 3) отвечают за то, как эти данные превратятся в XML-пакет универсального формата.
Если объект зарегистрирован (значит, правила регистрации сработали), но не выгрузился, проблема кроется либо в правилах конвертации (ПОД — Правила Обработки Данных), либо в программном менеджере обмена. Посмотрим на типичный код в менеджере обмена, который может влиять на результат:
// Пример логики в общем модуле МенеджерОбменаЧерезУниверсальныйФормат
Процедура ПКО_Справочник_Номенклатура_ПриОтправке(ДанныеИБ, ДанныеXDTO, КомпонентыОбмена, СтекВыгрузки)
// Если объект не прошел валидацию MDM, отменяем выгрузку
Если Не ДанныеИБ.ЭтоЭталоннаяЗапись Тогда
ДанныеXDTO = Неопределено;
Возврат;
КонецЕсли;
КонецПроцедуры
Если ДанныеXDTO устанавливается в значение Неопределено, объект не попадет в итоговый файл, и счетчик выгрузки останется нулевым.
Проанализируем техническую совместимость. ERP версии 2.4.10 — это достаточно старый релиз. Он может поддерживать версии формата Enterprise Data до 1.6 или 1.7. Если в 1С:MDM по умолчанию настроена попытка обмена через версию 1.10, базы могут не найти «общий язык».
Рассмотрим шаги по проверке совместимости:
Иногда причина кроется в банальных пользовательских настройках. Перейдем в раздел «Синхронизация данных» и откроем настройки нашего узла. Нажмем кнопку «Параметры синхронизации данных» — «Изменить настройки фильтрации».
Проверим следующие моменты:
Если визуальный осмотр настроек не помог, перейдем к «тяжелой артиллерии» — отладке программного кода. Выясним, в каком месте происходит отсечение данных.
Для этого выполним следующие действия:
МенеджерОбменаЧерезУниверсальныйФормат (или аналогичный в MDM, отвечающий за Enterprise Data).ВыгрузитьПоПравилуКонвертации() или в начале процедуры ПКО_..._ПриОтправке для интересующего нас справочника.Часто в MDM используется специфический механизм «Коды синхронизации». Если для объекта не заполнена табличная часть с идентификаторами внешних систем, правила обмена могут считать, что объект не предназначен для трансляции в ERP, и будут его пропускать. Убедитесь, что в MDM настроена политика распространения данных для целевой системы ERP.
Подведем итог: первостепенной задачей является выполнение нескольких циклов «пустого» обмена для согласования версий формата. Если это не помогает — необходимо проверять соответствие данных статусам «Утвержден» и корректность заполнения реквизитов, необходимых для идентификации объекта в правилах КД 3.