Каталог решений - Обмен через универсальный формат. Пример нестандартной конвертации данных

Обмен через универсальный формат. Пример нестандартной конвертации данных

Обмен через универсальный формат. Пример нестандартной конвертации данных

В наличии

В статье описан небольшой пример обмена данными через EnterpriseData без снятия конфигурации с поддержки.
Тестовая площадка: Управление торговлей, редакция 11 (11.4.3.126), версия платформы 8.3.11

Категория:

Описание

Обмен через универсальный формат широко используется в типовых конфигурациях. Для ознакомления есть хорошая статья //sale.itcity.ru/public/695523/, также множество различных курсов, в которых разложены основные моменты по работе с правилами конвертации, синхронизации объектов метаданных.

Основной принцип создания "нестандартных" правил обмена заключается в доработке модуля "МенеджерОбменаЧерезУниверсальныйФормат" (в различных конфигурациях название может немного отличаться). Но что делать, если в компании участвуют несколько баз данных — стандартных, самописных (неважно), между которыми идет активный обмен данными EnterpriseData — и на каждый узел обмена могут действовать свои специфические правила?

В данном случае удобно использовать механизм расширений конфигурации — и если требуется организовать специфичные правила обмена, тогда в конфигурации создается отдельное расширение о обмену.

Рассмотрим пример передачи данных из базы УТ 11.3 в идентичную по структуре базу данных "Дочерняя УТ 11.3". 

Постановка задачи: в основной базе данных производятся продажи товаров специфическому контрагенту, который является "дочерней фирмой" по отношению к основной. Необходимо реализовать "одностороннее" правило обмена "Реализации товаров и услуг -> Поступления товаров и услуг" по контрагенту с фиксированным ИНН.

Сокращения:

ЦБ — база-источник УТ 11.3, из которой идет выгрузка документов "Реализации товаров и услуг"

УТ — база приемник, в которой при обмене создаются "Поступления товаров"

ED — универсальный обмен (EnterpriseData)

В базе ЦБ создаются и проводятся "Реализации товаров" — и после проведения регистрируются в обмене ED, далее происходит обмен (через фоновое задание, либо вручную через каталог обмена). В при этом документ "Реализация товаров" должен "превратиться" в "Поступление товаров и услуг", а контрагент и организация "поменяться местами".

Как настраивать синхронизацию данных по плану обмена описано не будет — для этого существует множество различных статей. Переходим непосредственно к созданию правил обмена.

Предположим, что у нас настроен обмен, при котором главный узел организации-источника имеет код "ЦБ", а узел приемника код "УТ".

База-источник:

База-приемник:

Для начала создадим расширение конфигурации: назовем его, для примера "РасширениеОбмен" — и добавим модули, которые нам нужны для решения задачи.

1.Установка активного узла обмена в параметре сеанса. К сожалению, в процессе обмена не всегда можно получить активный узел, для которого происходит обмен. В процессе самого обмена данными структура данных "КомпонентыОбмена", содержащая все настройки обмена ED (в том числе ссылку на узел обмена) доступна не в каждой процедуре при обмене данными: например, при непосредственном заполнении перечня правил обмена "МенеджерОбменаЧерезУниверсальныйФормат.ЗаполнитьПравилаОбработкиДанных" этой переменной в параметрах нет.

На этапе инициализации обмена данными установим код узла обмена в параметры сеанса:

&Перед("ИнициализироватьТаблицыПравилОбмена")
Процедура РасшОбмен_ИнициализироватьТаблицыПравилОбмена(КомпонентыОбмена) Экспорт
	
	Если КомпонентыОбмена.УзелКорреспондента <> Неопределено Тогда
	
		Буф = Новый Структура(ПараметрыСеанса.БуферОбмена);
		Буф.Вставить("КомпонентыОбмена_УзелКорреспондента_Код", КомпонентыОбмена.УзелКорреспондента.Код);
		ПараметрыСеанса.БуферОбмена = Новый ФиксированнаяСтруктура(Буф);
	
	КонецЕсли;
	
КонецПроцедуры

 

has been added to your cart:
Оформление заказа