При настройке обмена данными между устаревшей базой на платформе «1С:Предприятие 7.7» и современной конфигурацией на «1С:Предприятие 8.3» с помощью правил «Конвертации данных 2.1» (КД 2.1) часто возникает задача передать дополнительную текстовую или служебную информацию. Например, при загрузке документа требуется обработать список строковых значений, отсутствующий в стандартных реквизитах источника.
Выясним причину, почему возникает эта сложность, и проанализируем доступные способы передачи примитивных данных и коллекций из 7.7 в 8.3.
Сложность передачи параметров объектов при выгрузке из «1С 7.7» обусловлена несколькими факторами:
v77exp.ert: Штатный механизм передачи параметров объектов через структуру ПараметрыОбъекта в КД 2.1 создавался с ориентиром на восьмую платформу. Обработка выгрузки для 7.7 по умолчанию не формирует в XML-файле узлы ЗначениеПараметра внутри объектовых узлов так, как это делает выгрузка в 8.x.СписокЗначений и ТаблицаЗначений в «1С 7.7» и «1С 8.3» существенно отличаются по внутреннему устройству. Прямое сохранение значения через ЗначениеВСтрокуВнутр из версии 7.7 не распарсится встроенными средствами платформы 8.3.Разберем подробнее варианты решения этой задачи.
Самый простой и быстрый способ — упаковать передаваемые строки в одну текстовую строку с условным разделителем и передать её через служебный или неиспользуемый текстовый реквизит документа (например, через Комментарий).
Рассмотрим по шагам реализацию этого подхода:
; или символом переноса строки).Комментарий или передаем через правило конвертации свойства (ПКС).СтрРазделить().Проанализируем пример кода для обработки строки на стороне «1С 8.3»:
// В обработчике "После загрузки" на стороне 8.3
СтрокаДанных = Объект.Комментарий;
МассивСтрок = СтрРазделить(СтрокаДанных, ";", Ложь);
Для Каждого ТекСтрока Из МассивСтрок Цикл
// Выполняем требуемую обработку документа
КонецЦикла;
Если изменять содержимое реквизитов объекта нежелательно, сформируем XML-узел параметра программно непосредственно в обработчике правил выгрузки на стороне 7.7.
Разберем по шагам алгоритм действий:
УзелОбъекта, вручную добавляя узел ЗначениеПараметра с атрибутами Имя и Тип="Строка".Универсальный обмен данными в формате XML автоматически прочтет этот тег и поместит параметр в структуру ПараметрыОбъекта.ПараметрыОбъекта.Получить("ИмяПараметра") и обрабатываем его.Посмотрим на ещё один удобный инструмент КД 2.1 — использование виртуального ПКС с передачей данных в параметр.
Значение.ПараметрыОбъекта в обработчике «После загрузки».Если требуется передать данные в виде таблицы или списка строк, рассмотрим использование Правил конвертации группы свойств (ПКГС):
СоздатьОбъект("ТаблицаЗначений") с колонкой строкового типа.КоллекцияОбъектов.Если передаваемые данные содержат сложные символы, затрудняющие разделение обычной строкой, разберем ещё два подхода:
.txt, .csv или .xml во временном каталоге обмена. При загрузке в 8.3 в событиях Перед загрузкой данных или После загрузки считываем файл и удаляем его.ЧтениеJSON или ЧтениеXML.Таким образом, мы рассмотрели все основные способы передачи служебных примитивных данных и списков строк из 1С 7.7 в 1С 8.3 при использовании Конвертации данных 2.1.