Существуют ли книги по «1С:Конвертация данных 3.0» и как быстро освоить технологию EnterpriseData

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

При переходе с классической технологии обмена данными через «1С:Конвертация данных 2.1» на современную версию 3.0 многие разработчики сталкиваются с отсутствием привычной литературы. Если по версии 2.1 в свое время была выпущена подробная бумажная книга, ставшая настольным пособием, то с третьей версией ситуация обстоит иначе. В этой статье мы подробно разберем, как восполнить этот информационный дефицит, где искать качественные учебные материалы и как решать сложные практические задачи в КД 3.0.

Почему не существует бумажных книг по «Конвертации данных 3.0»

Для начала давайте разберем причины отсутствия физических книг по этой теме. Технология «1С:Конвертация данных 3.0» базируется на концепции универсального формата обмена EnterpriseData (ED). Этот формат, в отличие от жестких правил XML прошлых лет, развивается крайне динамично. Версии формата обновляются регулярно, добавляются новые схемы XDTO, а логика взаимодействия компонентов Библиотеки стандартных подсистем (БСП) постоянно оптимизируется.

Издание классической бумажной книги в таких условиях нерационально: к моменту выхода из типографии часть интерфейсов и подходов к программированию механизмов обмена может существенно измениться. Кроме того, философия КД 3.0 сместила фокус с визуального проектирования связей между реквизитами на написание «чистого кода» в самой конфигурации. Программисту 1С теперь требуется не столько знание специализированного интерфейса конвертора, сколько понимание стандартов XML, схем XDTO и объектной модели БСП.

Где искать качественную информацию: альтернативные источники

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

  1. Официальный методический раздел на портале 1С:ИТС. Это фундамент, с которого мы рекомендуем начинать. В разделе «Методика работы с конфигурацией "Конвертация данных 3.0"» подробно изложены концепция обмена через универсальный формат, архитектура разделения модулей, правила сопоставления объектов и порядок обновления правил.
  2. Специализированные видеокурсы. Как справедливо отмечают практикующие разработчики на форумах, для быстрого старта отлично подходят видеоуроки. Вы можете начать с бесплатных вводных уроков (например, базовых обзоров концепции EnterpriseData), а для глубокого освоения обратиться к сертифицированным курсам от «1С-Учебного центра» или курсам по обмену данными проекта «Курсы-по-1С.рф».
  3. Анализ кода типовых конфигураций. Это самый надежный способ понять, как механизмы работают на практике. Мы рекомендуем взять для детального анализа правила обмена между конфигурациями «Управление торговлей» (УТ 11) и «Бухгалтерия предприятия» (БП 3.0). На примере передачи документов пересортицы или передачи товаров можно наглядно увидеть, как устроена реальная конвертация.

Концептуальный сдвиг: КД 3.0 как инструмент генерации кода

Давайте проанализируем, в чем заключается ключевое отличие КД 3.0 от КД 2.1. В старой версии мы создавали огромные XML-файлы правил обмена, которые загружались в универсальную обработку. В КД 3.0 результатом настройки правил является генерация модулей на встроенном языке 1С. Вся логика конвертации выгружается в общий модуль конфигурации МенеджерОбменаЧерезУниверсальныйФормат.

Этот подход породил важный современный тренд: опытные разработчики часто отказываются от постоянного использования самой информационной базы «Конвертация данных 3.0» при небольших доработках. Вместо этого они вносят изменения напрямую в код общего модуля конфигурации или создают расширения конфигурации, перехватывая события БСП. Это избавляет от рутинного цикла «выгрузка метаданных – загрузка в КД – настройка правил – генерация модуля – загрузка модуля в рабочую базу».

Решение проблемы конвертации «Один ко многим»

Одной из наиболее частых практических проблем при переходе на КД 3.0 является реализация сценария обмена «один ко многим» (когда один документ из базы-источника должен породить несколько разных документов в базе-приемнике). Давайте пошагово разберем, как правильно реализовать эту логику в рамках концепции EnterpriseData.

В отличие от КД 2.1, где базы были тесно связаны, в КД 3.0 базы изолированы друг от друга универсальным форматом. Процесс разделяется на два независимых этапа: выгрузка в формат XDTO и загрузка из формата XDTO.

Этап 1. Реализация на стороне отправки (выгрузки)

Если при выгрузке одного объекта (например, документа пересортицы) нам необходимо принудительно зарегистрировать и отправить сопутствующие данные, мы должны использовать специальное событие ПКО (Правило конвертации объекта) ПриОтправке. В этом обработчике мы программно инициируем выгрузку дополнительных связанных объектов через вызов методов БСП.

Рассмотрим пример кода, который регистрирует связанные объекты для выгрузки в текущей сессии обмена:


Процедура ПриОтправкеДанных(ДанныеИБ, ДанныеXDTO, КомпонентыОбмена)
    
    // Проверим, что выгружается нужный нам тип документа
    Если ТипЗнч(ДанныеИБ) = Тип("ДокументСсылка.ПересортицаТоваров") Тогда
        
        // Получаем связанные документы, которые нужно отправить следом
        Запрос = Новый Запрос;
        Запрос.Текст = 
            "ВЫБРАТЬ
            |	ТЧ.ДокументОснование КАК Ссылка
            |ИЗ
            |	Документ.ПересортицаТоваров.Товары КАК ТЧ
            |ГДЕ
            |	ТЧ.Ссылка = &Ссылка";
        
        Запрос.УстановитьПараметр("Ссылка", ДанныеИБ);
        Выборка = Запрос.Выполнить().Выбрать();
        
        Пока Выборка.Следующий() Цикл
            // Принудительно отправляем объект в поток данных обмена
            ОбменДаннымиXDTOСервер.ВыгрузкаОбъектаВыборки(Выборка.Ссылка, КомпонентыОбмена);
        КонецЦикла;
        
    КонецЕсли;

КонецПроцедуры

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

Этап 2. Реализация на стороне получения (загрузки)

Если один входящий пакет XDTO должен породить несколько документов в базе-получателе, логику распределения необходимо описывать в обработчиках загрузки. Наиболее подходящим местом является обработчик ПриКонвертацииДанныхXDTO или событие ПослеЗагрузкиДанных.

Давайте посмотрим, как можно считать данные из одного входящего XDTO-объекта и программно создать дополнительный документ в базе-приемнике:


Процедура ПослеЗагрузкиОбъекта(ПолученныйОбъект, ДанныеXDTO, КомпонентыОбмена)
    
    // Проверяем, что загружен целевой документ
    Если ТипЗнч(ПолученныйОбъект) = Тип("ДокументОбъект.ПоступлениеТоваровУслуг") Тогда
        
        // Создаем дополнительный документ, например, УстановкаЦенНоменклатуры
        НовыйДокумент = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент();
        НовыйДокумент.Дата = ПолученныйОбъект.Дата;
        НовыйДокумент.Ответственный = ПараметрыСеанса.ТекущийПользователь;
        
        // Заполняем табличную часть на основе данных загруженного XDTO-пакета
        Для Каждого СтрокаXDTO Из ДанныеXDTO.Товары Цикл
            НоваяСтрока = НовыйДокумент.Товары.Добавить();
            // Сопоставляем номенклатуру по ссылке, полученной при конвертации
            НоваяСтрока.Номенклатура = ПолученныйОбъект.Товары[ДанныеXDTO.Товары.Индекс(СтрокаXDTO)].Номенклатура;
            НоваяСтрока.Цена = СтрокаXDTO.Цена;
        КонецЦикла;
        
        Попытка
            НовыйДокумент.Записать(РежимЗаписиДокумента.Проведение);
        Исключение
            ЗаписьЖурналаРегистрации("ОбменДанными.КонвертацияДанных3",
                УровеньЖурналаРегистрации.Ошибка,
                НовыйДокумент.Метаданные(),,
                ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
        КонецПопытки;
        
    КонецЕсли;

КонецПроцедуры

В данном сценарии мы перехватываем объект сразу после его стандартного заполнения механизмами КД 3.0 и, используя входящую структуру ДанныеXDTO, создаем полностью независимый сопутствующий документ.

Важные подводные камни КД 3.0, о которых нужно знать заранее

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

  1. Ограничение на длину наименования ПКО. В подсистемах БСП, отвечающих за обмен данными, существует исторически сложившееся ограничение на длину имени правила конвертации объектов. Если вы присвоите ПКО длинное и слишком подробное имя (более 50 символов), система при выгрузке может молча обрезать его «хвост». При загрузке это вызовет критическую ошибку «Правило конвертации не найдено». Старайтесь делать имена ПКО максимально лаконичными.
  2. Игнорирование очистки реквизитов по умолчанию. Концепция EnterpriseData оптимизирована под экономию трафика. Если вы стерли значение какого-то реквизита в источнике (например, очистили поле «Сделка»), при стандартном обмене КД 3.0 не станет передавать пустое значение, и в базе-приемнике старое заполненное значение реквизита останется нетронутым. Для принудительной очистки полей приходится использовать обработчик ПередКонвертациейСвойств и явным образом взводить флаги модифицированности для пустых значений.
  3. Настройка правил регистрации объектов (ПРО). Разработчики часто забывают, что КД 3.0 в первую очередь отвечает за правила *конвертации*, а не регистрации. Настройка того, *какие именно* изменения должны регистрироваться к отправке на планах обмена, долгое время выполнялась в старой КД 2.1. В актуальных версиях КД 3.0 этот блок уже интегрирован, но его необходимо предварительно включить в административных настройках самой базы конвертации.

Подводя итог, можно с уверенностью сказать: отсутствие традиционных книг по «1С:Конвертация данных 3.0» компенсируется гибкостью самой платформы 1С и обилием практического кода в типовых конфигурациях. Изучайте структуру EnterpriseData, практикуйтесь на чтении кода менеджеров обмена и используйте расширения для быстрой отладки правил!

← На главную