При переходе с классического инструмента Конвертация данных 2.1 (КД 2) на Конвертацию данных 3.0 (КД 3) многие разработчики сталкиваются с ощущением «недоработанности» продукта. Интерфейс кажется перегруженным, документации недостаточно, а порог входа значительно выше. Разберем детально, почему так произошло, проанализируем архитектурные различия и выясним, когда стоит использовать КД 3, а когда лучше остаться на КД 2.
Для начала проанализируем фундаментальное техническое различие. КД 2.0 работает как интерпретатор. Вы создаете XML-файл правил, который внешняя обработка читает «на лету» и выполняет вставки кода через функцию Выполнить(). Это позволяет быстро править логику прямо в текстовом файле, используя в том числе адаптивные механизмы выгрузки и загрузки данных XML для работы с не полностью идентичными конфигурациями без изменения кода самой базы.
КД 3.0 — это принципиально другой инструмент, фактически являющийся кодогенератором. Вместо внешнего файла правил она генерирует программный код — модули менеджера обмена, которые встраиваются непосредственно в конфигурацию или расширение. Рассмотрим плюсы и минусы такого подхода:
Выполнить().Выясним причину появления КД 3. Представим ситуацию, когда у нас есть «зоопарк» из 10 различных конфигураций, которым нужно обмениваться данными друг с другом. В парадигме КД 2 нам пришлось бы писать правила по принципу «Точка-Точка». Количество таких связей растет в геометрической прогрессии (факториал N). Для 10 систем это потребовало бы создания и поддержки около 90 отдельных конвертаций.
КД 3 предлагает концепцию «Точка-Формат», используя универсальный формат обмена EnterpriseData (ED). Посмотрим, как это работает:
Таким образом, КД 3 — это не просто редактор правил, а оболочка для работы со стандартом EnterpriseData.
Важно понимать, что КД 3 жестко завязана на Библиотеку стандартных подсистем (БСП). Если КД 2 могла работать с любой «нетленкой» через одну универсальную обработку, то для работы КД 3 в конфигурацию должны быть интегрированы тяжеловесные модули БСП, отвечающие за подсистему «Обмен данными». Для быстрого освоения этих механизмов разработчикам часто требуется справочник по методам БСП с примерами использования.
Рассмотрим техническую деталь: КД 3 использует XDTO-сериализацию. Это накладывает определенные ограничения:
Разберем ситуацию с отладкой. В КД 3 вся логика находится в модулях менеджера обмена. Это огромный плюс: вы можете поставить точку останова в конфигураторе и пошагово пройти весь процесс выгрузки или загрузки. В КД 2 отладка обработчиков, зашитых внутри XML, всегда была «головной болью» разработчиков.
Однако, если вам все же нужно отладить старые правила в КД 2, воспользуемся современным подходом через расширения:
// Пример переноса логики из правил КД 2 в общий модуль для отладки
Процедура ПриЗагрузкеОбъекта(Объект, Параметры) Экспорт
// Вместо кода в правилах вызываем процедуру из расширения
МойМодульОтладки.ОбработатьОбъект(Объект, Параметры);
КонецПроцедуры
В КД 3 такая структура является штатной. Весь код — это обычные процедуры и функции 1С, что делает инструмент более «взрослым» с точки зрения процесса разработки (Application Lifecycle Management).
Проанализируем претензии к интерфейсу и удобству. КД 3 разрабатывалась фирмой «1С» прежде всего как внутренний индустриальный инструмент для поддержки типовых решений (БП, УТ, ERP). Приоритетом была не интуитивность для конечного пользователя, а:
EnterpriseData одновременно).Для «программиста-одиночки», которому нужно разово перенести остатки из одной нетиповой базы в другую, КД 3 действительно выглядит как «забивание гвоздей микроскопом». Порог входа включает в себя знание XDTO, структуры БСП и владение самой методикой EnterpriseData.
Подведем итог и определим критерии выбора инструмента для вашей задачи:
Выбирайте Конвертацию данных 2.1, если:
Выбирайте Конвертацию данных 3.0, если:
Рассмотрев оба инструмента, мы видим, что КД 3.0 — это не замена КД 2.1, а специализированное решение для интеграции крупных систем. Она «не доведена до стадии коробочного продукта» в плане UX именно потому, что является профессиональным инженерным инструментом, требующим глубокой квалификации.