Почему не выгружаются данные из 1С:MDM в 1С:ERP через универсальный формат, хотя объекты зарегистрированы

Программист 1С v8.3 (Управляемые формы) 1С:ERP Управление предприятием IT и автоматизация бизнеса
← На главную

При настройке интеграции между системами 1С:MDM Управление нормативно-справочной информацией и 1С:ERP Управление предприятием 2 через универсальный формат (Enterprise Data) специалисты часто сталкиваются с парадоксальной ситуацией. В мониторе синхронизации данных мы видим, что объекты (например, справочники «Номенклатура» или «Контрагенты») успешно зарегистрированы на узле обмена, однако при выполнении синхронизации счетчик обработанных объектов показывает «0», а файл выгрузки остается практически пустым. При этом система не выдает никаких диагностических сообщений об ошибках.

В данной статье мы подробно разберем, почему это происходит, как работает механизм «рукопожатия» версий и на что обратить внимание в настройках 1С:MDM.

Причина 1. Механизм согласования версий формата (Handshake)

Рассмотрим фундаментальный принцип работы универсального формата. Когда две базы начинают обмениваться данными, они должны «договориться», по какому именно «языку» (версии формата Enterprise Data) они будут взаимодействовать. В 1С это реализовано через автоматическое согласование версий.

Разберем этот процесс по шагам:

  1. При первой синхронизации база-отправитель (в нашем случае MDM) еще не знает, какие версии формата поддерживает база-приемник (ERP).
  2. В MDM могут быть зарегистрированы тысячи объектов, но система «боится» выгружать их в непонятном для приемника формате.
  3. Проанализируем ситуацию: если MDM не получила подтверждения о версии формата от ERP, она отправит пустое сообщение, содержащее только служебную информацию (перечень своих поддерживаемых версий).
  4. Только после того, как ERP примет это сообщение и в ответном файле пришлет свой список поддерживаемых версий, MDM выберет максимально возможную общую версию и начнет реальную выгрузку данных.

Что нужно сделать: выполним процедуру синхронизации 2–3 раза подряд в обеих базах. Это позволит системам обменяться служебными пакетами. Если после этого в окне монитора обмена появилась информация об используемой версии формата (например, 1.10), значит, «рукопожатие» произошло успешно.

Причина 2. Специфика жизненного цикла объектов в 1С:MDM

Проанализируем архитектурные особенности решения 1С:MDM. В отличие от типовых конфигураций, MDM — это мастер-система, где данные проходят строгий контроль. Регистрация объекта на узле обмена (которую мы видим в обработке «Регистрация изменений для обмена») — это лишь первый этап.

Выясним причину, по которой объект может игнорироваться при выгрузке:

  1. Статусы объектов: В MDM часто внедрена подсистема заявок. Если «Номенклатура» имеет статус «Черновик» или «На согласовании», программный код менеджера обмена может принудительно отсекать такие записи, даже если они зарегистрированы к обмену вручную.
  2. Классификаторы: Проверьте, включен ли объект в целевой классификатор или разрешена ли его выгрузка в конкретную информационную систему (ERP).

Для проверки этого предположения попробуем найти в конфигураторе процедуру ПКО_..._ПриОтправке (Правило Конвертации Объекта) в общем модуле менеджера обмена и посмотрим, нет ли там условий, очищающих структуру данных при определенных значениях реквизитов.

Причина 3. Правила регистрации vs Правила конвертации

Разберем важное различие, упомянутое опытными разработчиками. Правила регистрации (создаваемые в КД 2) отвечают за то, что попадет в таблицу изменений. Правила конвертации (КД 3) отвечают за то, как эти данные превратятся в XML-пакет универсального формата.

Если объект зарегистрирован (значит, правила регистрации сработали), но не выгрузился, проблема кроется либо в правилах конвертации (ПОД — Правила Обработки Данных), либо в программном менеджере обмена. Посмотрим на типичный код в менеджере обмена, который может влиять на результат:


// Пример логики в общем модуле МенеджерОбменаЧерезУниверсальныйФормат
Процедура ПКО_Справочник_Номенклатура_ПриОтправке(ДанныеИБ, ДанныеXDTO, КомпонентыОбмена, СтекВыгрузки)
    
    // Если объект не прошел валидацию MDM, отменяем выгрузку
    Если Не ДанныеИБ.ЭтоЭталоннаяЗапись Тогда
        ДанныеXDTO = Неопределено;
        Возврат;
    КонецЕсли;

КонецПроцедуры

Если ДанныеXDTO устанавливается в значение Неопределено, объект не попадет в итоговый файл, и счетчик выгрузки останется нулевым.

Причина 4. Несоответствие версий конфигураций и формата

Проанализируем техническую совместимость. ERP версии 2.4.10 — это достаточно старый релиз. Он может поддерживать версии формата Enterprise Data до 1.6 или 1.7. Если в 1С:MDM по умолчанию настроена попытка обмена через версию 1.10, базы могут не найти «общий язык».

Рассмотрим шаги по проверке совместимости:

  1. Зайдем в настройки синхронизации данных в обеих базах.
  2. Убедимся, что в поле «Версия формата» (если оно доступно для редактирования) выбрано значение, которое поддерживают обе стороны.
  3. В 1С:MDM проверим справочник «Информационные системы». Для нашей ERP должна быть создана запись, и в ней должны быть корректно указаны параметры соответствия объектов.

Причина 5. Настройки фильтрации в узле обмена

Иногда причина кроется в банальных пользовательских настройках. Перейдем в раздел «Синхронизация данных» и откроем настройки нашего узла. Нажмем кнопку «Параметры синхронизации данных» — «Изменить настройки фильтрации».

Проверим следующие моменты:

Методика отладки для программиста

Если визуальный осмотр настроек не помог, перейдем к «тяжелой артиллерии» — отладке программного кода. Выясним, в каком месте происходит отсечение данных.

Для этого выполним следующие действия:

  1. Откроем MDM в режиме Конфигуратор.
  2. Найдем общий модуль МенеджерОбменаЧерезУниверсальныйФормат (или аналогичный в MDM, отвечающий за Enterprise Data).
  3. Установим точку останова в функции ВыгрузитьПоПравилуКонвертации() или в начале процедуры ПКО_..._ПриОтправке для интересующего нас справочника.
  4. Запустим синхронизацию и проанализируем, в какой момент объект исключается из выборки.

Часто в MDM используется специфический механизм «Коды синхронизации». Если для объекта не заполнена табличная часть с идентификаторами внешних систем, правила обмена могут считать, что объект не предназначен для трансляции в ERP, и будут его пропускать. Убедитесь, что в MDM настроена политика распространения данных для целевой системы ERP.

Подведем итог: первостепенной задачей является выполнение нескольких циклов «пустого» обмена для согласования версий формата. Если это не помогает — необходимо проверять соответствие данных статусам «Утвержден» и корректность заполнения реквизитов, необходимых для идентификации объекта в правилах КД 3.

← На главную