Данная заметка вряд ли будет открытием для разработчиков, давно постигших премудрости обмена данными через формат "СинхронизацияДанныхЧерезУниверсальныйФормат", но тем, кто только начинает свой путь, вполне может помочь в понимании работы формата.
В процессе обучения работы с Конвертацией данных 3.1, я практиковался на 2-х самописных конфигурациях, на которых поднял через "Библиотеку стандартных подсистем" - подсистемы "ОбменДанными", а также сопутствующие библиотеки "Пользователи" и "БазоваяФункциональность", попутно разобрав ворох ошибок, возникавших уже в интегрированном плане обмена "СинхронизацияДанныхЧерезУниверсальныйФормат", который поначалу упорно отказывался даже запускаться.
Одна из ошибок, которая у меня воспроизвелась при настройке обмена, была не совсем обычная - возникла благодаря скорее всего невнимательности.
Я настроил обмен документом "Эскалация" с табличной частью, который успешно регистрировался к выгрузке, но при самой синхронизации, упорно не "попадал" в xml файлик и не выгружался.
Несколько раз прошелся по всем пунктам: проверил объект в XDTO-пакете, процедуры ПОД и ПКО документа в ОбщемМодуле "МенеджерОбменаЧерезУниверсальныйФормат" - да всё на месте, должно работать, но нет... Самое печальное в такой ситуации, что нет ни ошибки, через которую можно понять, куда копать, ни результата - по кругу ходишь и не можешь понять, что делаешь не так. Гугл тоже сильно не помог, что и подтолкнуло написать данную заметку.
Начал смотреть в отладке и в ОбщемМодуле "ОбменДаннымиXDTOСервер" нашел процедуру, где получается "ТаблицаОбъектыБазыКорреспондента":
Которая в свою очередь, получаются из служебного РегистраСведений "НастройкиОбменаДаннымиXDTO" (из ресурса "НастройкиКорреспондента" с типом "ХранилищеЗначения") и в пользовательском режиме выглядит так:
И здесь видно, что объект "Документ.Эскалация" в объектах формата корреспондента отсутствует.
А далее по коду становится понятно, что по объектам формата корреспондента и формируется выгрузка из базы-источника, соответственно, наш документ в нее из-за этого и не попадает.
Осталось понять, как формируются записи в служебный Регистр сведений и что надо сделать, чтобы документ "Эскалация" туда попал. И в этом же ОбщемМодуле находим, что поддерживаемые объекты "прилетают" с xml файлом и возникают при его чтении:
И нас интересует поле "receiving":
Теперь смотрим наш файл выгрузки из базы-приемника (он и есть корреспондент для базы-источника):
И в нем видим "Доступные типы объектов" с узлом "receiving", те же самые, что и в служебном Регистре сведений.
Здесь уже пазл сложился: доступные типы объектов попадают в xml-файл выгрузки из ОбщегоМодуля "МенеджерОбменаЧерезУниверсальныйФормат", где и находятся процедуры ПОД, ПКО и ПКС объектов.
То есть получилось, что в базе-источнике для документа "Эскалация" эти правила были, а в базе-приемнике они отсутствовали.
А поскольку выгрузка базы-источника зависит от поддерживаемых форматов базы-приемника, то может подобная ситуация возникнуть.
Будьте бдительны :)
С уважением, Тимур.
Вступайте в нашу телеграмм-группу Инфостарт