Содержание
Осваиваем «Конвертацию данных 2.1» на простом примере
В статье своим опытом делится Стас Ганиев, разработчик 1С, автор ТГ-канала OneSCast | 1С Предприятие.
Когда разработчик впервые берется за решение задачи интеграции, то сначала пытается «изобрести велосипед» и сделать что-то быстренько «на коленке». После нескольких подходов к собственному изобретению появляется понимание, что нужно учесть немало факторов, таких как рекурсивная выгрузка по ссылкам, управление составом реквизитов, реализация дополнительных алгоритмов и другие. И тут начинается самое страшное — знакомство с «Конвертацией данных 2.1».
Я хорошо помню чувство растерянности при виде интерфейса КД: непонятно, с чего начать и как это работает.
В этой статье я опишу свой взгляд на обмен данными: как я его видел новичком и что мне помогло обрести понимание и уверенность. Заодно рассмотрим небольшой практический пример. В результате прочтения и выполнения понятных действий вы напишете собственные правила обмена, даже если до этого ни разу не открывали «Конвертацию». Выгрузки баз источника и приемника, а также обработка выгрузки структуры конфигурации, рассмотренные в статье, доступны для скачивания по ссылке.
И начнем мы… да-да, с изобретения того самого велосипеда!
Ручной алгоритм выгрузки данных
Когда мы пытаемся что-то куда-то выгрузить, алгоритм нашего кода примерно один и тот же: сначала обходим элементы выборки, которые нужно выгрузить, при необходимости считываем реквизиты и так же по очереди их выгружаем. Схематично можно представить так:
- подготовить файл, в который будем записывать данные;
- собрать запрос с элементами данных, отобранным по заданным условиям;
- открыть выборку полученных данных;
- на каждой итерации: получаем очередной объект, выгружаем в файл его основные свойства, открываем цикл обхода реквизитов объекта, для каждого реквизита: считываем его данные, преобразуем в вид, удобный для выгрузки и последующего чтения на стороне получателя, записываем данные реквизита в файл; фиксируем завершение выгрузки объекта;
- фиксируем завершения выгрузки;
- записываем файл/ отправляем данные.
На уровне кода выглядит примерно так:
В комментариях указаны объекты «Конвертации данных», которые участвуют на каждом этапе. Они помогут понять дальнейший материал.
«Конвертация данных» выполняет выгрузку точно по такому же алгоритму, только учитываются некоторые навороты в виде:
- Выгрузки вложенного объекта по ссылке. В этом случае рекурсивно вызывается та же самая процедура;
- Выгрузки табличных частей, групп и связанных данных. Я это все опустил намеренно, чтобы не усложнять. Но алгоритм в каждом из этих случаев меняется незначительно.
Почему тогда «Конвертация» такая сложная, если все просто?
Если коротко, то основная причина — в возможности легко управлять любой частью выгрузки данных на любом этапе. Вторая причина — это возможность дополнительно гибко управлять отдельными этапами алгоритма. Дополнительно все усложняется количеством и разнообразием информации, которой приходится оперировать, чтобы выгрузить все необходимое.
Теперь обо всем по порядку.
Этот сложный простой интерфейс КД
Есть два основных пути построения интерфейсов сложных систем:
- От удобства управления, когда на передний план выходят элементы, которые требуются в повседневной деятельности (они используются чаще всего);
- От удобства процесса, когда элементы интерфейса выстроены в порядке, нужном для последовательной работы над задачей.
Интерфейс «Конвертации данных» выстроен по первому типу, поэтому при работе над новым проектом расположение некоторых элементов интерфейса видится нелогичным.
Впрочем, давайте приступим к работе над правилами обмена, и все встанет на свои места.
Для начала нужно принять, что для разработки достаточно двух первых вкладок главного окна «Настроек правил обмена» (если оно не открылось сразу, нажмите «Настройка правил обмена данными» на рабочем столе):
- Правила конвертации объектов
- Правила выгрузки данных
Остальные вкладки повышают удобство сопровождения и производительность работы правил обмена. Без них можно обойтись.
Прежде чем мы двинемся в путь, давайте выполним одно несложное действие. Откроем в этом окне «Настройки конвертации», установим флажки «Не использовать мастер настройки для ПКО» и «При сохранении правил не проверять наличие полей поиска» и сохраним изменения по кнопке «ОК» .
Подготовка данных
Прежде чем разработать новые правила обмена, «познакомьте» вашу «Конвертацию» с конфигурациями источника и приемника.
Для начала запустим каждую из них в режиме «1С:Предприятие» и откроем обработку MD83Exp.epf (или MD82Exp.epf, если конфигурация на обычных формах), входящую в комплект поставки «Конвертации данных 2.1». Указываем путь к файлу, все флажки оставляем без изменений и жмем «Выгрузить».
В результате мы получили два файла xml со структурой двух конфигураций.
Создание конвертации
В главном окне «Настройки правил» нажимаем кнопку «Новая конвертация». В открывшемся окне выберите конфигурацию-источник (откуда выгружаем) и конфигурацию-приемник (куда загружаем) данных.
Поскольку конфигураций у нас пока нет, их необходимо создать. Нажимаем кнопку «Новая» справа от поля выбора конфигурации, в открывшемся мастере загрузки выбираем соответствующий файл xml из созданных на предыдущем шаге, щелкаем «Выполнить загрузку» и дожидаемся окончания операции. То же самое проделываем для второй конфигурации.
В результате окно настройки конвертации будет заполнено двумя конфигурациями. Сохраняем результат по кнопке «ОК», запрос на автоматическое создание правил игнорируем и нажимаем «Закрыть».
После этого откроется новое окно настройки правил обмена, в котором мы продолжим работу.
На этом завершается подготовительный этап. В следующей части рассмотрим настройку правил обмена.
Остались вопросы?
Проконсультируйтесь с нашими специалистами