Каталог решений - Добавление нового документа в формат обмена EnterpriseData (получение)

Добавление нового документа в формат обмена EnterpriseData (получение)

Добавление нового документа в формат обмена EnterpriseData (получение)

В наличии

Данная статья — логическое продолжение (ссылка на первую часть ниже) доработки обмена, но уже на стороне базы приемника.

Категория:

Описание

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

Добавление нового документа в формат обмена EnterpriseData (отправка)

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

  1. доработка непосредственно пакета XDTO
  2. Доработка плана обмена
  3. доработка общего модуля "ОбменДаннымиXDTOСервер"
  4. доработка общего модуля "ОбменДаннымиПереопределяемый"
  5. доработка модуля "МенеджерОбменаЧерезУниверсальныйФормат13" (единственное что менеджер в УНФ называется МенеджерОбменаЧерезУниверсальныйФормат18)

А теперь отличия

Как известно объекты добавленные в расширение не попадают в тип "ТипВсеСсылки", в связи с этим при тестировании обмена вываливалась ошибка, для устранения был доработан следующий код:

    Общий модуль "ОбщегоНазначения" 

  &ИзменениеИКонтроль("МенеджерОбъектаПоСсылке")
  Функция ДРП_МенеджерОбъектаПоСсылке(Ссылка)
      // часть типового кода опущена для краткости, можно посмотреть в самой конфе
  	
  	#вставка
  	ИначеЕсли ТипЗнч(Ссылка) = Тип("ДокументСсылка.ДРП_РеестрКПеречислению") Тогда
  		Возврат Документы[ИмяОбъекта];
  	#КонецВставки	
  	Иначе
  		Возврат Неопределено;
  	КонецЕсли;
  
  КонецФункции
  

этой доработкой мы делаем возможность вернуть менеджер объекта нашего нового документа.

   

  &ИзменениеИКонтроль("ВидОбъектаПоТипу")
  Функция ДРП_ВидОбъектаПоТипу(ТипОбъекта)
  
  	// часть типового кода опущена для краткости, можно посмотреть в самой конфе
  
  		#вставка
  	ИначеЕсли ТипОбъекта = Тип("ДокументСсылка.ДРП_РеестрКПеречислению") Тогда
  		Возврат "Документ";
  		#КонецВставки
  	Иначе
  		ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Неверный тип значения параметра (%1)'"), Строка(ТипОбъекта));
  
  	КонецЕсли;
  
  КонецФункции
  

Здесь доработка похожей функции модуля которая возвращает вид объекта.

Еще один нюанс на который хотелось бы сделать акцент.

В УНФ (как и в любой другой базе на БСП) есть регистр сведений "Настройки обмена данными XDTO"

В данном регистре хранится информация по версиям формата, для каждого объекта включенного в план обмена.

 

 

Конфигурации обмениваются на максимально общем формате обмена, и из за этого, в начале когда я пытался отправить пакет по новому формату система смотрела данный регистр и видела что в базе корреспонденте максимальная версия по объекту 1.8. Формат считался не поддерживаемым в базе корреспонденте и понижался.

В связи с этим я попробовал добавить следующий код в процедуру общего модуля "обменДаннымиXDTОсервер"

  &ИзменениеИКонтроль("ПоддерживаемыеОбъектыФорматаКорреспондента")
  Функция ДРП_ПоддерживаемыеОбъектыФорматаКорреспондента(УзелОбмена, Режим)
      //типовой код опущен для краткости
  
  	#вставка
  	СтрокаТЧ = ТаблицаОбъекты.Добавить();
  	СтрокаТЧ.Версия = "1.11";
  	СтрокаТЧ.Объект = "Документ.ДРП_РеестрКПеречислению";
  	Если СтрНайти(Режим, "Отправка") > 0 Тогда
  		СтрокаТЧ.Отправка = Истина;
  	КонецЕсли;
  	Если СтрНайти(Режим, "Получение") > 0 Тогда
  		СтрокаТЧ.Получение = Истина;
  	КонецЕсли;
  	#КонецВставки
  	//
  	Возврат ТаблицаОбъекты;
  
  КонецФункции
  

Но в итоге эта доработка не понадобилась, она нужна только в момент первой отправки пакета (чтоб он успешно ушел) дальше уже система его получит и на основе его дозаполнит регистр информацией по новому формату, как показано для примера на скрине, по документу содержится информация по новому формату (1.11). Этот вывод я сделал уже по факту, когда увидел заполненный регистр.

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

 

 

Спасибо за внимание и за интерес к первой статье, который побудил меня поставить логическую точку в данном вопросе и написать эту статью).

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