Как правильно передавать параметры между базами в Конвертации данных 2.0?

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

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

Понимание архитектуры передачи данных

Основная ошибка заключается в смешивании двух разных механизмов обмена данными:

  1. Глобальные параметры: Структура Параметры доступна исключительно в рамках процесса выгрузки на стороне источника. Эти данные являются «локальными» для текущего сеанса выгрузки и не передаются в файл XML.
  2. Параметры объекта: Для передачи специфических данных, относящихся к конкретному экземпляру объекта, используется коллекция ПараметрыОбъекта. Именно этот механизм позволяет «пробросить» значения через файл обмена в базу-приемник.

Шаг 1: Правильная регистрация параметров в КД 2.0

Важнейшим условием успешной передачи является предварительная регистрация параметров в самой конфигурации Конвертации данных. Простого добавления кода в обработчиках недостаточно.

Чтобы система «увидела» передаваемые данные при загрузке, выполните следующие действия:

  1. Откройте правила обмена в конфигурации Конвертации данных.
  2. Перейдите на закладку Параметры.
  3. Добавьте новую строку с именем вашего параметра (например, СоздаватьСчетФактураПолученный).
  4. Критически важный момент: установите флаг При загрузке. Это дает команду обработке обмена при считывании файла XML искать и обрабатывать переданный параметр.

Шаг 2: Передача данных из источника

На стороне источника вы можете передать значение в параметр, используя обработчик «Перед выгрузкой» в правиле конвертации объекта (ПКО) или непосредственно в правиле конвертации свойства (ПКС). Рассмотрим классический вариант передачи через ПКО:


// В обработчике ПередВыгрузкой ПКО
ПараметрыОбъекта.Вставить("СоздаватьСчетФактураПолученный", Истина);

Если вы хотите передать сложную структуру, помните, что Конвертация данных выполняет сериализацию в XML. Лучшей практикой считается передача данных примитивных типов. Если данных много, разбивайте их на отдельные параметры или используйте сериализацию в JSON (если версия платформы позволяет).

Шаг 3: Получение данных в приемнике

После того как параметр зарегистрирован в КД 2.0 с признаком «При загрузке», он станет доступен в обработчиках события «После загрузки» или «После загрузки объекта» на стороне приемника через коллекцию ПараметрыОбъекта.

Пример кода для получения данных:


// В обработчике ПослеЗагрузкиОбъекта в базе-приемнике
Если ПараметрыОбъекта.Свойство("СоздаватьСчетФактураПолученный") Тогда
    ФлагСоздания = ПараметрыОбъекта.СоздаватьСчетФактураПолученный;
    Если ФлагСоздания Тогда
        // Выполняем необходимые действия: создание СФ, запись данных и т.д.
    КонецЕсли;
КонецЕсли;

Почему не работают другие способы?

Рассмотрим распространенные заблуждения, с которыми мы сталкиваемся при анализе кода:

Соблюдение этого алгоритма — регистрация в метаданных КД 2.0, запись в ПараметрыОбъекта на источнике и чтение из ПараметрыОбъекта на приемнике — гарантирует стабильную работу ваших правил обмена.

← На главную