Обмен EnterpriseData (универсальный формат, «КД3-обмен») можно доработать без «Конвертации данных 3»: правила обработки данных (ПОД) и правила конвертации объектов (ПКО) — это обычные процедуры в модуле менеджера обмена через универсальный формат. Чтобы передать новый документ с табличной частью, нужно в обеих базах добавить его в план обмена и правила регистрации, описать объект в пакете XDTO формата, а затем написать ПОД и ПКО на отправке и на приеме. Табличная часть передается таблицей значений в ДанныеXDTO.
Этот путь нужен, когда проекта КД3 для ваших конфигураций нет или он устарел, а доработать обмен надо сейчас. Ниже — маршрут по шагам, образцы обработчиков и проверки, которые экономят время отладки.
Когда это оправдано
| Ситуация | Рекомендация |
|---|---|
| Есть актуальный проект КД3 для обеих конфигураций | Дорабатывайте в КД3 и генерируйте модуль |
| Проекта нет, обе базы ваши | Ручная доработка по этой инструкции |
| Обмен с типовой базой, которую вы не меняете | Только типовые объекты формата или расширение формата |
| Обменов много и они разнородные | Посмотрите в сторону интеграционной шины |
Ручная доработка — это код, который придется поддерживать при обновлениях. Держите доработки в одном месте, с префиксом и комментариями: при следующем обновлении типовой их придется переносить.
Шаг 1. Регистрация документа к обмену
- План обмена. Добавьте документ в состав плана обмена, по которому работает синхронизация. Авторегистрацию, как правило, выключают: регистрацией управляют правила.
- Правила регистрации объектов. Выгрузите действующие правила из настроек обмена, доработайте их (например, в «Конвертации данных 2», где редактируются правила регистрации), загрузите обратно в настройки и положите обновленную версию в макет правил регистрации плана обмена, чтобы она не потерялась при пересоздании настроек.
- Проверка. Запишите тестовый документ и убедитесь, что он появился в составе изменений узла.
Шаг 2. Объект в формате EnterpriseData
- Пакет XDTO. Добавьте объект формата (например,
Документ.АктОсмотрасо свойствами шапки и табличной частьюТовары) в пакет формата по аналогии с соседними объектами. Делайте это в обеих базах одинаково; для проверки выгрузите пакеты в файлы и сравните их средствами конфигуратора «Файл» → «Сравнить файлы». - Поддерживаемые объекты. Добавьте объект формата в список объектов, которые узел умеет отправлять и принимать. В исходной реализации это процедура
ЗаполнитьСтруктуруНастроекXDTOобщего модуляОбменДаннымиXDTOСервер; в вашей версии БСП место может отличаться — найдите, где перечислены уже существующие объекты формата. Указывается именно имя объекта формата, а не объекта метаданных.
Если менять пакет формата нельзя (обмен с чужой типовой базой), используйте механизм расширений формата: отдельный пакет с вашими объектами, который поддерживает подсистема обмена.

Шаг 3. Правила на стороне отправителя
Все процедуры пишутся в модуле менеджера обмена через универсальный формат (МенеджерОбменаЧерезУниверсальныйФормат). Лучший способ не ошибиться в служебных функциях — скопировать набор процедур уже существующего документа с табличной частью и заменить имена.
| Процедура | Назначение | Куда добавить вызов |
|---|---|---|
ДобавитьПОД_Документ_АктОсмотра_Отправка | Правило обработки: какой объект выбирать и какие ПКО использовать | ЗаполнитьПравилаОбработкиДанных |
ДобавитьПКО_Документ_АктОсмотра_Отправка | Правило конвертации: соответствие свойств конфигурации и формата | ЗаполнитьПравилаКонвертацииОбъектов |
ПКО_Документ_АктОсмотра_Отправка_ПриОтправкеДанных | Ключевые свойства, вычисляемые свойства, табличные части | ВыполнитьПроцедуруМодуляМенеджера |
ПОД_Документ_АктОсмотра_Отправка_ПриОбработке | Выбор ПКО по условию (по подразделению, виду операции) | ВыполнитьПроцедуруМодуляМенеджера |
Правила описания свойств в ПКО:
- Примитивные типы (дата, число, строка): достаточно указать свойство конфигурации и свойство формата.
- Ссылочные типы (организация, номенклатура): дополнительно имя правила конвертации свойства, то есть ПКО справочника, по которому объект будет выгружен.
- Свойства, вычисляемые алгоритмом: свойство конфигурации оставляют пустым, отмечают использование алгоритма, а значение кладут в
ДанныеXDTOв обработчике. Если такое свойство ссылочное, ПКС для него все равно указывается. - Табличная часть: отдельная таблица свойств в
СвойстваТабличныхЧастейправила, с колонками и их ПКС.
Имя ПКО (ИмяПКО) должно совпадать со строкой, которую ПОД перечисляет в используемых ПКО, — опечатка здесь дает тихий пропуск объекта.
Обработчик ПриОтправкеДанных
Сигнатуру берите из соседних обработчиков вашего модуля; обычно это (ДанныеИБ, ДанныеXDTO, КомпонентыОбмена, СтекВыгрузки).
// Заполняет ключевые свойства и табличную часть акта для выгрузки в EnterpriseData.
Процедура ПКО_Документ_АктОсмотра_Отправка_ПриОтправкеДанных(ДанныеИБ, ДанныеXDTO, КомпонентыОбмена, СтекВыгрузки)
// Ключевые свойства: по ним приемник ищет уже загруженный документ.
КлючевыеСвойства = Новый Структура;
КлючевыеСвойства.Вставить("Номер", ДанныеИБ.Номер);
КлючевыеСвойства.Вставить("Дата", ДанныеИБ.Дата);
ДанныеXDTO.Вставить("КлючевыеСвойства", КлючевыеСвойства);
// Табличная часть: имена колонок совпадают со свойствами формата из ПКО.
Товары = Новый ТаблицаЗначений;
Товары.Колонки.Добавить("Номенклатура");
Товары.Колонки.Добавить("Количество");
Товары.Колонки.Добавить("Комментарий");
Для Каждого СтрокаАкта Из ДанныеИБ.Товары Цикл
НоваяСтрока = Товары.Добавить();
НоваяСтрока.Номенклатура = СтрокаАкта.Номенклатура;
НоваяСтрока.Количество = СтрокаАкта.Количество;
НоваяСтрока.Комментарий = СокрЛП(СтрокаАкта.Комментарий);
КонецЦикла;
ДанныеXDTO.Вставить("Товары", Товары);
КонецПроцедурыКолонки называются по свойствам формата, а не конфигурации. Если в конфигурации колонка Кол, а в формате Количество, в таблицу кладется Количество.
Шаг 4. Правила на стороне получателя
На приеме набор аналогичный, с суффиксом _Получение:
| Процедура | Куда добавить вызов |
|---|---|
ДобавитьПОД_Документ_АктОсмотра_Получение | ЗаполнитьПравилаОбработкиДанных |
ДобавитьПКО_Документ_АктОсмотра_Получение | ЗаполнитьПравилаКонвертацииОбъектов |
ПКО_Документ_АктОсмотра_Получение_ПриКонвертацииДанныхXDTO | ВыполнитьПроцедуруМодуляМенеджера |
В обработчике конвертации заполняется то, что не покрывается правилами свойств, например табличная часть с особой логикой:
// Переносит строки табличной части из данных формата в загружаемый документ.
Процедура ЗаполнитьТоварыИзДанныхXDTO(ДанныеXDTO, ПолученныеДанные)
Если Не ДанныеXDTO.Свойство("Товары") Или ДанныеXDTO.Товары = Неопределено Тогда
Возврат;
КонецЕсли;
ПолученныеДанные.Товары.Очистить();
Для Каждого СтрокаФормата Из ДанныеXDTO.Товары Цикл
НоваяСтрока = ПолученныеДанные.Товары.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаФормата, "Номенклатура, Количество, Комментарий");
КонецЦикла;
КонецПроцедурыСсылочные колонки, описанные в ПКО с правилами конвертации, механизм обмена преобразует в ссылки приемника сам. Если вы разбираете таблицу вручную, убедитесь, что значения уже сконвертированы, а не пришли как структуры ключевых свойств, — проверьте это в отладчике на первом же тестовом пакете. Отключать отдельные ПКС по условию можно в обработчике ПриОбработке правила обработки — так же, как на стороне отправки.
Как отлаживать
- Выгрузите сообщение обмена в файл и откройте XML: есть ли в нем ваш объект, заполнена ли табличная часть.
- Если объекта нет — смотрите регистрацию, ПОД и диспетчер
ВыполнитьПроцедуруМодуляМенеджера. - Если объект есть, но в приемнике пусто — проверьте совпадение пакетов XDTO и обработчик конвертации.
- Протокол обмена и журнал регистрации показывают, на каком объекте упала загрузка; ставьте точку останова в обработчиках ПКО.
Типичные ошибки
- Пакет XDTO доработан только в одной базе.
ИмяПКОне совпадает со строкой в используемых ПКО правила обработки.- Процедура обработчика написана, но не добавлена в
ВыполнитьПроцедуруМодуляМенеджера. - Колонки табличной части названы по реквизитам конфигурации, а не по свойствам формата.
- Нет ключевых свойств — при повторной выгрузке в приемнике создаются дубли.
- Доработанные правила регистрации не положены в макет и пропали при пересоздании настроек обмена.
Обмены на EnterpriseData я дорабатываю и сопровождаю в рамках услуги обмен между базами 1С; когда систем больше двух, обсуждаем интеграционную шину.
Коротко
- Обмен EnterpriseData дорабатывается кодом в модуле менеджера обмена, даже без КД3.
- Обе базы: план обмена, правила регистрации, одинаковый пакет XDTO, список поддерживаемых объектов.
- Отправка: ПОД, ПКО,
ПриОтправкеДанныхс ключевыми свойствами и таблицей для табличной части. - Прием: ПОД, ПКО и обработчик конвертации, который раскладывает строки в документ.
- Копируйте процедуры соседнего документа — так меньше шансов ошибиться в служебных функциях.




