При настройке обмена данными в конфигурации Конвертация данных 2.0 (КД 2.0) часто возникает потребность передать в приемник дополнительные данные, которые не являются прямыми реквизитами табличной части, но необходимы для выполнения алгоритмов после загрузки объекта. Рассмотрим, как реализовать этот механизм, используя штатные возможности платформы.
Для того чтобы передать дополнительные данные, не привязанные к полям объекта, разработчики 1С предусмотрели механизм ПараметрыОбъекта. Суть метода заключается в том, что при выгрузке вы формируете структуру данных, которая «прикрепляется» к табличной части. При загрузке объекта эти данные становятся доступны в обработчиках события После загрузки.
Важно понимать, что система сериализует ваши параметры в специальную структуру. Ключом доступа к этой структуре в коде будет являться имя вашей табличной части с добавлением суффикса ТабличнаяЧасть. Для проверки структуры и состава переданных параметров в сформированном XML-файле подойдёт обработка для анализа выгруженных данных конвертации.
После загрузки для правила конвертации объекта (ПКО), данные будут доступны через коллекцию ПараметрыОбъекта.Давайте разберем, как получить доступ к переданным данным на стороне приемника. Предположим, ваша табличная часть называется ОсновныеНачисления, и вы передали в неё параметр НачислениеНаименование. В коде После загрузки это будет выглядеть следующим образом:
Если ПараметрыОбъекта <> Неопределено Тогда
// Получаем таблицу параметров по ключу с суффиксом "ТабличнаяЧасть"
ТаблицаПараметров = ПараметрыОбъекта["ОсновныеНачисленияТабличнаяЧасть"];
// Перебираем таблицу параметров для доступа к каждому значению
Для Каждого СтрокаПараметров Из ТаблицаПараметров Цикл
// Здесь можно выполнить алгоритм изменения реквизитов объекта
// Например: Сообщить(СтрокаПараметров.НачислениеНаименование);
КонецЦикла;
КонецЕсли;
При работе с данным механизмом проанализируем несколько критически важных моментов, которые помогут избежать ошибок:
Строка, Число, Дата, Булево. Это гарантирует корректную сериализацию и десериализацию данных в формате XML. Использование сложных типов может привести к ошибкам, если объект не поддерживает стандартную сериализацию.ПараметрыОбъекта значительно увеличивает размер файла обмена. Если ваша табличная часть содержит тысячи строк, процесс выгрузки может замедлиться, а потребление оперативной памяти на стороне загрузки возрастет.Перед выгрузкой или При выгрузке. Возможно, логика переопределяется кодом, который очищает или не заполняет структуру параметров.Если задача передачи параметров через ПараметрыОбъекта кажется избыточной или приводит к техническим сложностям, вы всегда можете использовать обработчик После загрузки для выполнения Произвольного алгоритма. В этом случае вы можете получить данные напрямую из базы-источника с помощью Внешнего подключения (COM-соединения) или использовать дополнительные реквизиты объекта, если это допустимо структурой вашей конфигурации.
Использование описанного «хака» с суффиксом ТабличнаяЧасть является штатным и эффективным инструментом, который позволяет гибко управлять данными без внесения изменений в метаданные конфигурации, что является важным преимуществом при обновлении типовых решений.