Ошибка обмена через синхронизацию по правилам написанным в КД 2.1

1. AndrewKop 07.04.22 14:44 Сейчас в теме
Столкнулся со следующей проблемой. Настраиваю синхронизацию между ЕРП 2.5.7.288 и ТОиР 2.0.37.1. Для добавления возможности синхронизации разработчиками ТОиРа предоставляется cf'ка, которая добавляет новый план обмена и сопутствующие объекты. Все это добавляется в конфу как еще одна конфигурация поставщика. Также разработчик ТОИР предоставляет комплект правил для обмена. Если использовать все в стоке, то синхронизация работает. Но в нашем случае возникла необходимость поправить правила обмена. Я загрузил их КД2.1, там поправил. проверил по ним обмен через "Универсальный обмен данными в формате XML" - все работает идеально. Заново сформировал 2 комплекта правил. И попробовал настроить синхронизацию с ними, то получаю ошибку:
Ошибка формата сообщения обмена.
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(16052)}:ВызватьИсключение НСтр("ru = 'Ошибка формата сообщения обмена.'");
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(2359)}:ПроизвестиЧтениеДанных(ЧтениеСообщения);
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(7490)}:ОбработкаОбменаДаннымиXML.ВыполнитьЗагрузкуДанных();
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(7061)}:ПрочитатьСообщениеСИзменениямиДляУзла(СтруктураНастроекОбмена, СообщениеОбмена, , ТолькоПараметры);
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(381)}:ВыполнитьОбменДаннымиЧерезФайловыйРесурс(СтруктураНастроекОбмена, ТолькоПараметры);
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(3966)}:ВыполнитьДействиеОбменаДляУзлаИнформационнойБазы(Отказ, УзелИнформационнойБазы,
{Обработка.ВыполнениеОбменаДанными.МодульМенеджера(38)}:ОбменДаннымиСервер.ВыполнитьОбменДаннымиДляУзлаИнформационнойБазы(
{(1)}:Обработки.ВыполнениеОбменаДанными.ВыполнитьЗапускОбменаДанными(Параметры[0],Параметры[1])
{ОбщийМодуль.ОбщегоНазначения.Модуль(5110)}:Выполнить ИмяМетода + "(" + ПараметрыСтрока + ")";
{ОбщийМодуль.ДлительныеОперации.Модуль(1032)}:ОбщегоНазначения.ВыполнитьМетодКонфигурации(ИмяПроцедуры, ПараметрыВызова);
{ОбщийМодуль.ДлительныеОперации.Модуль(1022)}:ВызватьПроцедуру(ВсеПараметры.ИмяПроцедуры, ВсеПараметры.ПараметрыПроцедуры);
Показать

Отладчиком поймал место возникновения эксепшена: в большом is/else проверяется имя узла XML и при несовпадении ни с одним из прописан вызов исключения с указанным текстом: Ошибка формата сообщения обмена.
Не знаю куда копать. В сети наткнулся только на топики, где предлагают добавить ветку в этот условный оператор, где для ненайденного имени узла сделать пропуск его проверки. Но я не могу понять, почему правила которые я загрузил в КД и потом немного изменил, вызывают проблему при обмене и причем именно при синхронизации, а не при ручном обмене через универсальный обмен.
UPD:
Ошибка возникает на стороне ЕРП при первом сопоставлении данных. То есть я настраиваю согласно инструкции выгрузку изначально в ТОИР, делаю первоначальную выгрузку. После этого продолжаю настройку в ЕРП и и пытаюсь выполнить загрузку и сопоставление. И ошибка происходит на этом этапе.
По теме из базы знаний
Найденные решения
8. AndrewKop 16.06.22 11:59 Сейчас в теме
Появилось время вернуться к данной задаче. Потратил приличное количество времени тупо занимаясь исключением правил и проверкой обмена. В общем, вдруг кому-то пригодится. Процедура конвертации "ПередатьОдинПараметрВПриемник" отлично работает через "Универсальный обмен данными", но не работает через синхронизацию данных.
NikoWarhol; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
7. RustamZz 08.04.22 12:16 Сейчас в теме
(1) Возможно проблемы не с правилами, а с данными.
2. user1203706 14 07.04.22 14:55 Сейчас в теме
(1) нам отсюда не видно, что именно "немножка" изменил.
Если что, контекст выполнения многих обработчиков разный в универсальном обмене и обмене через план обмена.
Где-то это ссылка, а где-то это сам объект, например.
3. AndrewKop 07.04.22 15:10 Сейчас в теме
(2) Благодарю, за ответ! Гораздо понятнее теперь стало, в чем проблема. А есть где-либо в сети информация по различиям, чтобы я мог проверить правила?
нам отсюда не видно, что именно "немножка" изменил.

ну может и не немножко. это как посмотреть)
Ну или если у Вас глаз наметанный, то может взглянете?)
Прикрепленные файлы:
из ТОИР в ЕРП (Копылов v2).xml
из ЕРП в ТОИР (Копылов v2).xml
4. user1203706 14 07.04.22 15:16 Сейчас в теме
(3) исходные то есть правила ?
если заменяешь свои изменения..работает ? :)
5. AndrewKop 07.04.22 15:18 Сейчас в теме
(4) Исходные есть, я же свои на основании правок исходных делал. С исходными, как уже выше писал, такой ошибки нет. я вот только не знаю, могу ли прикреплять их сюда. Не нарушу ли права на чужую интеллектуальную собственность..
6. user1203706 14 07.04.22 15:36 Сейчас в теме
(5) мне они и за даром не нать )
Напиши лучше, чего менял..можно в скринах.
8. AndrewKop 16.06.22 11:59 Сейчас в теме
Появилось время вернуться к данной задаче. Потратил приличное количество времени тупо занимаясь исключением правил и проверкой обмена. В общем, вдруг кому-то пригодится. Процедура конвертации "ПередатьОдинПараметрВПриемник" отлично работает через "Универсальный обмен данными", но не работает через синхронизацию данных.
NikoWarhol; +1 Ответить
9. AndrewKop 16.06.22 12:11 Сейчас в теме
(8)
ПередатьОдинПараметрВПриемник

Глянул код, такая процедура есть в модуле объекта универсального обмена и еще в одном модуле. Там она объявлена как не экспортная. Поэтому логично что она не работает в синхронизации. Ну что же, буду менять правила.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот