Каталог решений - Отладка правил обмена КД2 для подсистемы БСП Обмен данными

Отладка правил обмена КД2 для подсистемы БСП Обмен данными

Отладка правил обмена КД2 для подсистемы БСП Обмен данными

В наличии

Уже давно нельзя отлаживать правила обмена при помощи внешних файлов. Попробуем исправить это.

Категория:

Описание

В обработку КонвертацияОбъектовИнформационныхБаз в функцию ИнициализироватьОбработки разработчики любезно добавили кусочек кода:

	Если ОтладкаОбработчиковВыгрузки Или ОтладкаОбработчиковЗагрузки Тогда 
		ВызватьИсключение
			НСтр("ru = 'Внешняя обработка отладки, загружаемая из файла на диске, не поддерживается.'");
	КонецЕсли;

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

Давайте его сделаем. Создадим новое расширение с префиксом Обмен_

Вынесем в расширение функцию ИнициализироватьОбработки из модуля объекта обработки КонвертацияОбъектовИнформационныхБа:

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

Здесь мы подключаем обработки отладки выгрузки и загрузки из обработок конфигурации. В реквизитах ИмяФайлаВнешнейОбработкиОтладкиВыгрузки и ИмяФайлаВнешнейОбработкиОтладкиЗагрузки теперь нужно хранить не путь к обработкам, а их имена в конфигурации. Для этого вынесем в расширение форму ЗагрузитьПравилаСинхронизацииДанных регистра сведений ПравилаДляОбменаДанными.

В форме поменяем заголовки у реквизитов:

 

Для того, чтобы не придумывать имена самостоятельно вынесем процедуру формы ПриСозданииНаСервере в расширение и в ней создадим процедуры автоматически формирующие наименования используя имя плана обмена:

&НаСервере
Процедура Обмен_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
	
	АвтоНаименованиеОбработкиВыгрузки();
	АвтоНаименованиеОбработкиЗагрузки();
	
КонецПроцедуры


&НаСервере
Процедура АвтоНаименованиеОбработкиВыгрузки()
	
	Элементы.ВнешняяОбработкаДляОтладкиВыгрузки.СписокВыбора.Очистить();
	
	СтрокаНаименования = "ОтладкаВыгрузки_" + ИмяПланаОбмена;
	
	Элементы.ВнешняяОбработкаДляОтладкиВыгрузки.СписокВыбора.Добавить(СтрокаНаименования);
	
КонецПроцедуры

&НаСервере
Процедура АвтоНаименованиеОбработкиЗагрузки()
	
	Элементы.ВнешняяОбработкаДляОтладкиЗагрузки.СписокВыбора.Очистить();
	
	СтрокаНаименование = "ОтладкаЗагрузки_" + ИмяПланаОбмена;
	
	Элементы.ВнешняяОбработкаДляОтладкиЗагрузки.СписокВыбора.Добавить(СтрокаНаименование);
	
КонецПроцедуры

Теперь нам нужно изменить поведение полей ВнешняяОбработкаДляОтладкиВыгрузки и ВнешняяОбработкаДляОтладкиЗагрузки в свойствах полей нужно установить КнопкаВыпадающегоСписка = Да, КнопкаВыбора = Авто и переопределить событие Началовыбора.

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

&НаКлиенте
Процедура Обмен_ВнешняяОбработкаДляОтладкиВыгрузкиНачалоВыбораВместо(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	Возврат;
	
КонецПроцедуры

&НаКлиенте
Процедура Обмен_ВнешняяОбработкаДляОтладкиЗагрузкиНачалоВыбораВместо(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	Возврат;
	
КонецПроцедуры

Теперь в полях можно выбрать имена обработок сформированные автоматически:

Завершающим этапом в расширении нужно создать две обработки с именами из полей формы.

Для отладки правил, их нужно скопировать в модуль объекта соответствующей обработки и выставить точки останова.

Тестировалось Платформа 8.3.13.1690 БСП3.0.2.

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