Отладка обмена в универсальном формате

1. Максим Сухов (MaxS) 994 26.01.17 07:38 Сейчас в теме
До некоторого времени для отладки правил на КД3 было всё очень удобно.
Подключаем к узлу внешнюю обработку:
Кнопка Настройки или изменить если в списке, в форме Ещё - Изменить форму, включаем скрытую вкладку "Служебная информация", на появившейся вкладке указываем нашу обработку: "Путь к менеджеру обмена".
В обработке в модуле содержится код из общего модуля МенеджерОбменаЧерезУниверсальныйФормат или правила из КД3.

В конфигураторе:
(Сервис -> Параметры -> Запуск 1С:Предприятия -> Параметр запуска) указать параметр "РежимОтладки".
Устанавливаем в обработке точку останова, запускаем синхронизацию в универсальном формате, выполнения кода приостанавливается в обработке, отлаживаем, сохраняем, запускаем синхронизацию повторно.

Но вот в ERP 2.2.2.157, которая на БСП 2.3.4.88 зачем-то поломали этот удобный механизм.
Теперь обработка копируется во временную папку и выполнение происходит в фоновом режиме, не обращая внимание на РежимОтладки. :(
Это фича или баг? Как теперь отлаживать правила на КД3 без изменения конфигурации ?
Найденные решения
2. Максим Сухов (MaxS) 994 26.01.17 11:17 Сейчас в теме
Тихо сам с собой веду беседу.
Исправляется проблема доработкой модуля плана обмена СинхронизацияДанныхЧерезУниверсальныйФормат
В режиме отладки работает "по старому алгоритму" и внешняя обработка отлаживается там, где она и расположена.
Процедура ПолучитьВерсииФорматаОбмена(ВерсииФормата) Экспорт
...
ИмяОбработки = Выборка.ПутьКМенеджеруОбмена;

Если НЕ ОбщегоНазначенияКлиентСервер.РежимОтладки() Тогда //Добавлено
	ДанныеОбработки = Новый ДвоичныеДанные(ИмяОбработки);
	АдресОбработки  = ПоместитьВоВременноеХранилище(ДанныеОбработки);
	
	Если ОбщегоНазначения.ЕстьЗащитаОтОпасныхДействий() Тогда
		ИмяОбработки = ВнешниеОбработки.Подключить(АдресОбработки, , ,
		ОбщегоНазначения.ОписаниеЗащитыБезПредупреждений());
	Иначе
		ИмяОбработки = ВнешниеОбработки.Подключить(АдресОбработки);
	КонецЕсли;
КонецЕсли;

МенеджерОбмена = ВнешниеОбработки.Создать(ИмяОбработки);

...
Показать

Ждём платформу 8.3.9 чтобы без снятия с поддержки обходить такие сюрпризы. Но есть опасения, что в борьбе с опасными действиями опять что-нибудь запретят.
jif; user665340_Drichuga; A7758735; BelFegor; nafa; NECHISTb; +6 Ответить
Остальные ответы
2. Максим Сухов (MaxS) 994 26.01.17 11:17 Сейчас в теме
Тихо сам с собой веду беседу.
Исправляется проблема доработкой модуля плана обмена СинхронизацияДанныхЧерезУниверсальныйФормат
В режиме отладки работает "по старому алгоритму" и внешняя обработка отлаживается там, где она и расположена.
Процедура ПолучитьВерсииФорматаОбмена(ВерсииФормата) Экспорт
...
ИмяОбработки = Выборка.ПутьКМенеджеруОбмена;

Если НЕ ОбщегоНазначенияКлиентСервер.РежимОтладки() Тогда //Добавлено
	ДанныеОбработки = Новый ДвоичныеДанные(ИмяОбработки);
	АдресОбработки  = ПоместитьВоВременноеХранилище(ДанныеОбработки);
	
	Если ОбщегоНазначения.ЕстьЗащитаОтОпасныхДействий() Тогда
		ИмяОбработки = ВнешниеОбработки.Подключить(АдресОбработки, , ,
		ОбщегоНазначения.ОписаниеЗащитыБезПредупреждений());
	Иначе
		ИмяОбработки = ВнешниеОбработки.Подключить(АдресОбработки);
	КонецЕсли;
КонецЕсли;

МенеджерОбмена = ВнешниеОбработки.Создать(ИмяОбработки);

...
Показать

Ждём платформу 8.3.9 чтобы без снятия с поддержки обходить такие сюрпризы. Но есть опасения, что в борьбе с опасными действиями опять что-нибудь запретят.
jif; user665340_Drichuga; A7758735; BelFegor; nafa; NECHISTb; +6 Ответить
3. Максим Сухов (MaxS) 994 15.02.17 16:07 Сейчас в теме
Продолжение... блога.
Есть ещё одна особенность выполнения модулей из подключенной внешней обработки.
Допустим исходная ИБ умеет обмениваться версиями формата "1.0" и "1.2", конечная "1.0", "1.2" и "1.3".
В конечной ИБ к узлу подключаем внешнюю обработку, формат в узле по умолчанию "1.0".
При синхронизации конечная база может взять ПОД из модуля внешней обработки, а потом ПКО и отложенные обработки по заполнению объектов взять из общего модуля. :(
Это наблюдается один раз. После того как версия в узле и в принимаемом файле станут одинаковыми и максимальными, будет используется только внешняя обработка.

Поэтому перед первым обменом рекомендуется снять с регистрации все объекты и обменяться несколько раз пустыми сообщениями. Потом можно массово регистрировать объекты к обмену.
5. BelFegor (BelFegor) 24.08.17 11:11 Сейчас в теме
(3) А где взять обработку для отладки?
6. Максим Сухов (MaxS) 994 24.08.17 12:44 Сейчас в теме
(5) В конфигураторе меню Файл - Новый - внешняя обработка. Открыть модуль обработки, скопировать туда текст из общего модуля МенеджерОбменаЧерезУниверсальныйФормат или из КД 3. Сохранить обработку.
4. BOB lit (Parnishaykt) 13.06.17 16:23 Сейчас в теме
Спасибо,за полезную инфу!
7. Максим Сухов (MaxS) 994 09.10.17 16:45 Сейчас в теме
В последних БП 3.0.52 функционал подключения внешней обработки с правилами остался, а сама обработка нигде не используется.
Это недоразумение можно исправить расширением.
Необходимо изменить функцию ВерсииФорматаОбмена в общем модуле ОбменДаннымиXDTOСервер. Вместо менеджера обмена в виде общего модуля подставить менеджер обработки, указанный в узле обмена...
user618220_bulgol; +1 Ответить
8. Олег Булгаков (user618220_bulgol) 16.11.17 18:06 Сейчас в теме
(7)
Огромное спасибо, это именно то, что было нужно ))
9. Максим Сухов (MaxS) 994 20.11.17 06:43 Сейчас в теме
Больше подробностей теперь в статье https://infostart.ru/public/695523/
user706505_IKargin; +1 Ответить
Оставьте свое сообщение