Как правильно передать параметры из ПКС в обработчик «После загрузки» ПКО в «Конвертации данных 2.0»?

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

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

Разбор основных причин потери параметров

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

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

Шаг 1: Правильная настройка ПКС для передачи данных

Для корректной передачи данных воспользуйтесь обработчиком Перед выгрузкой в ПКС. Если вы передаете сложный объект, такой как Структура, помните, что напрямую в файл обмена такие типы данных записывать нельзя. Их необходимо упаковывать в ХранилищеЗначения.

Рассмотрим пример кода, который нужно разместить в обработчике Перед выгрузкой правила ПКС:


врЗначение = Новый Структура;
врЗначение.Вставить("СоздаватьСчетФактураПолученный", Истина);
врЗначение.Вставить("РеквизитыСФ", Новый Структура("Дата, Номер", Источник.ДатаСчф, Источник.НомерСчф));

// Упаковываем структуру в ХранилищеЗначения для корректной сериализации
Значение = Новый ХранилищеЗначения(врЗначение);

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

Самая важная часть — правильно извлечь данные на стороне приемника. Многие разработчики по привычке обращаются к переменной Параметры, однако в обработчике После загрузки ПКО для получения переданных значений необходимо использовать переменную ПараметрыОбъекта.

Давайте посмотрим, как выглядит получение данных в обработчике После загрузки:


// Извлекаем значение из ПараметрыОбъекта
Хранилище = ПараметрыОбъекта.Получить("СчетФактураПолученный");

Если Хранилище <> Неопределено Тогда
    Данные = Хранилище.Получить();
    СоздаватьСФ = Данные.СоздаватьСчетФактураПолученный;
    РеквизитыСФ = Данные.РеквизитыСФ;
КонецЕсли;

Почему нельзя использовать Параметры для передачи данных между ПКО?

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

Основные рекомендации:

Следуя этим правилам, вы обеспечите стабильную передачу любой дополнительной информации между конфигурациями, избегая потери данных при обмене.

← На главную