Как исправить ошибки при выгрузке и загрузке правил синхронизации в Конвертацию данных 3.0?

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

При настройке обмена через универсальный формат (EnterpriseData) с использованием конфигурации «Конвертация данных 3.0» (КД3) разработчики часто сталкиваются с цепочкой ошибок еще на этапе загрузки метаданных и существующих правил из типовых конфигураций. Разберем по шагам, почему возникают эти ошибки и как корректно подготовить данные для работы в КД3.

Основные причины ошибок при работе с КД3

Проанализируем ключевые проблемы, возникающие в цепочке переноса правил из типовых конфигураций (например, УТ 11, БП 3.0, ERP) в конфигурацию КД3:

  1. Несовместимость обработки «Выгрузка правил синхронизации.epf» с версией БСП. Ошибки вида Метод объекта не обнаружен (ЭтоПланОбменаXDTO) или Метод объекта не обнаружен (ПолучитьВерсииФорматаОбмена) возникают из-за того, что в разных версиях Библиотеки стандартных подсистем (БСП) разработчики 1С перемещали служебные функции между общими модулями ОбменДаннымиСервер, ОбменДаннымиXDTOСервер и модулями менеджеров планов обмена. Обработка из комплекта КД3 пытается вызвать функцию по устаревшему расположению.
  2. Ошибка парсера при импорте правил в КД3 (Поле объекта не обнаружено). При загрузке правил конвертации объектов (ПКО) обработка ЗагрузкаПравилСинхронизацииИзФайлов в КД3 пытается получить свойство ВариантИдентификации. Однако если правило создано только для направления выгрузки («Отправка»), данный блок в метаданных правила отсутствует, что вызывает аварийное падение процедуры.
  3. Предупреждение о несовпадении имени конфигурации. Служебный комментарий в начале модуля МенеджерОбменаЧерезУниверсальныйФормат (например, // Конвертация УП2.2.4 от...) сверяется с именем импортированной структуры метаданных. Это уведомление носит информационный характер.
  4. Разделение модулей обмена по версиям формата. В ряде конфигураций (например, в БП 3.0) логика форматов разнесена по нескольким модулям (МенеджерОбменаЧерезУниверсальныйФормат, МенеджерОбменаЧерезУниверсальныйФормат13 и т.д.). Загрузка не того модуля приводит к тому, что правила обработки данных (ПОД) остаются пустыми.

Шаг 1. Адаптация обработки выгрузки правил под актуальную БСП

Если внешняя обработка выгрузки правил выдает ошибку при открытии в базе-источнике, скорректируем программный код в форме обработки. Откроем внешнюю обработку в конфигураторе и найдем вызовы функций проверки планов обмена.

Посмотрим на пример вызова, вызывающего ошибку в старых версиях обработки:


// Ошибочный вызов в устаревшей обработке:
Если ОбменДаннымиСервер.ЭтоПланОбменаXDTO(ПланОбмена.Имя) Тогда
    // ...
КонецЕсли;

Для исправления обратимся напрямую к соответствующему модулю или проверим функционал через безопасную конструкцию:


// Корректный вариант проверки:
ЭтоПланXDTO = Ложь;
Попытка
    ЭтоПланXDTO = ОбменДаннымиXDTOСервер.ЭтоПланОбменаXDTO(ПланОбмена.Имя);
Исключение
    // Если метод отсутствует в ОбменДаннымиXDTOСервер, проверяем наличие состава плана обмена
    ПланОбменаМетаданные = Метаданные.ПланыОбмена.Найти(ПланОбмена.Имя);
    Если ПланОбменаМетаданные <> Неопределено Тогда
        ЭтоПланXDTO = (ПланОбменаМетаданные.Имя = "СинхронизацияДанныхЧерезУниверсальныйФормат");
    КонецЕсли;
КонецПопытки;

Аналогично поступим с процедурой получения версий формата. Если метод ПолучитьВерсииФорматаОбмена отсутствует у менеджера плана обмена, его вызов переносим в блок обработки исключений либо вызываем экспортный метод непосредственно из модуля менеджера плана обмена СинхронизацияДанныхЧерезУниверсальныйФормат.

Шаг 2. Исправление ошибки парсера в конфигурации КД 3

Выясним причину ошибки Поле объекта не обнаружено при выполнении загрузки в КД3. В процедуре ЗагрузитьПКО() обработки ЗагрузкаПравилСинхронизацииИзФайлов код ожидает обязательного наличия структуры варианта идентификации.

Для устранения ошибки снимем с поддержки обработку (или создадим расширение) и обернем чтение варианта идентификации в проверку:


// Фрагмент процедуры ЗагрузитьПКО()
Если СтруктураПКО.Свойство("ВариантИдентификации") И ЗначениеЗаполнено(СтруктураПКО.ВариантИдентификации) Тогда
    Попытка
        ОбъектПКО.ВариантИдентификации = Перечисления.ВариантыИдентификацииОбъектов[СтруктураПКО.ВариантИдентификации];
    Исключение
        ОбъектПКО.ВариантИдентификации = Перечисления.ВариантыИдентификацииОбъектов.ПоУмолчанию;
    КонецПопытки;
Иначе
    // Для правил только на выгрузку идентификация не требуется
    ОбъектПКО.ВариантИдентификации = Перечисления.ВариантыИдентификацииОбъектов.ПустаяСсылка();
КонецЕсли;

После добавления этой проверки загрузка правил конвертации завершится успешно и создаст все объекты ПКО и ПОД в информационной базе КД3.

Шаг 3. Правильный порядок подготовки файлов

Рассмотрим регламент действий для корректного переноса логики конвертации:

  1. Выгрузка метаданных: с помощью внешней обработки MD83Exp.epf выгружаем структуру метаданных обеих конфигураций (источника и приемника).
  2. Загрузка пакетов XDTO: в конфигураторе открываем ветку Пакеты XDTO конфигурации, находим используемую версию формата EnterpriseData_X_X_X, экспортируем схему в файл .xsd и загружаем её в КД3 в справочник форматов.
  3. Выгрузка правил синхронизации: запускаем адаптированную обработку Выгрузка правил синхронизации.epf в рабочей базе и сохраняем файлы правил.
  4. Выгрузка модуля менеджера: открываем общий модуль МенеджерОбменаЧерезУниверсальныйФормат (для нужной версии формата), выделяем весь текст и сохраняем его в отдельный текстовый файл .txt.
  5. Импорт в КД3: запускаем обработку Загрузка правил синхронизации из файлов, последовательно указываем файлы формата, правил и модуля менеджера.

Альтернативные способы доработки правил без КД3

В отличие от КД 2.1, где правила жестко завязаны на внутренний формат XML, правила в концепции EnterpriseData (КД 3) представляют собой чистый исполняемый код 1С. Поэтому редактировать логику синхронизации можно несколькими альтернативными путями:

  1. Прямая доработка в общем модуле. Если конфигурация снята с поддержки, все алгоритмы заполнения свойств (события ПРИ_ОТПРАВКЕ, ПРИ_ПОЛУЧЕНИИ) и правила выборки можно объявлять непосредственно в процедурах модуля МенеджерОбменаЧерезУниверсальныйФормат.
  2. Использование расширений конфигурации. Можно переопределять обработчики синхронизации с помощью аннотаций &Вместо, &После или &Перед к экспортным методам модуля менеджера обмена, не снимая основную конфигурацию с поддержки.
  3. Подключение внешних обработок правил. Типовая БСП позволяет подключать измененные правила из внешнего файла обработки через форму «Настройка синхронизации данных» в режиме предприятия.
← На главную