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