Есть обмен между УТ 11.4 и БП 3.0. Обмен идет по правилам конвертации КД 2.1.8.
До меня так сделали, и надо их поправить. Делаю все как описано в https://infostart.ru/public/410529/ но в отладку правил не попадаю никак. Не понимаю, что делаю не так.
В общем так. Фирма 1С отказывается поддерживать отладку обработок в формате КД 2.1 и поэтому коды отладок не работают.
Таким образом в обработке КонвертацияОбъектовИнформационныхБаз надо поправить процедуру инициализации подключаемых обработок.
Делаем либо в самой процедуре ИнициализироватьОбработки(), либо в расширении. Я в расширении делал.
&Вместо("ИнициализироватьОбработки")
Функция Расш1_ИнициализироватьОбработки()
//{[-](фрагмент УДАЛЕН)
//Если ОтладкаОбработчиковВыгрузки Или ОтладкаОбработчиковЗагрузки Тогда
// ВызватьИсключение
// НСтр("ru = 'Внешняя обработка отладки, загружаемая из файла на диске, не поддерживается.'");
//КонецЕсли;
//}
//{[+](фрагмент ДОБАВЛЕН)
Если ОтладкаОбработчиковВыгрузки Тогда
Если ЗначениеЗаполнено(ИмяФайлаВнешнейОбработкиОтладкиВыгрузки) Тогда
ФайлОбработкиВыгрузки = Новый Файл(ИмяФайлаВнешнейОбработкиОтладкиВыгрузки);
Если ФайлОбработкиВыгрузки.Существует() Тогда
ОбработкаВыгрузки = ВнешниеОбработки.Создать(ИмяФайлаВнешнейОбработкиОтладкиВыгрузки);
ОбработкаВыгрузки.ПодключитьОбработкуДляОтладки(ЭтотОбъект);
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если ОтладкаОбработчиковЗагрузки Тогда
Если ЗначениеЗаполнено(ИмяФайлаВнешнейОбработкиОтладкиВыгрузки) Тогда
ФайлОбработкиЗагрузки = Новый Файл(ИмяФайлаВнешнейОбработкиОтладкиВыгрузки);
Если ФайлОбработкиЗагрузки.Существует() Тогда
ОбработкаЗагрузки = ВнешниеОбработки.Создать(ИмяФайлаВнешнейОбработкиОтладкиЗагрузки);
ОбработкаЗагрузки.ПодключитьОбработкуДляОтладки(ЭтотОбъект);
КонецЕсли;
КонецЕсли;
КонецЕсли;
//}
ИмяПланаОбмена = ИмяПланаОбмена();
ИмяПрофиляБезопасности = ОбменДаннымиПовтИсп.ИмяПрофиляБезопасности(ИмяПланаОбмена);
Возврат ИмяПрофиляБезопасности;
КонецФункции
Вроде делаю как описано, не могу попасть в отладку. не понимаю, что я делаю не так.
Мне надо отладить выгрузку из УТ 11.4 в БП 3.0.
Я запускаю базу УТ 11 в режиме толстого клиента, как пишут по ссылке. Отладчик доходит до сом соединения базы БП 3.0 обработки КонвертацияОбъектовИнформационныхБаз и процедуры ВыполнитьВыгрузкуДанных причем в той базе. Получается загрузка в УТ 11 из базы БП 3.0 и выгрузка туда же. А как к тому COM-соединению подключиться, да еще и обработки во внешней обработке выполнить? Что-то жесть какая-то...
Нафига тебе COM? Переключи на время отладки на обмен через каталог обмена. Заодно сможешь раздельно выгрузку и загрузку проверять. И в файл выгрузки можно будет заглянуть. Может и сообщений об ошибках достаточно будет. Мне всегда было лень разбираться с отладкой обработчиков. С обработчиками как-то и так все понятно всегда было.
Но вот этот вот "РежимОтладки" у меня так и не сработал. Все равно в фоне все выполнялось. И отладка фоновых заданий тоже не помогала, ибо типовой код срывал фоновое по таймауту. Поэтому в тех редких случаях когда все-таки нужна была отладка (но без отладки обработчиков), я временно убирал таймаут в коде типовой, чтобы из отладки не выбрасывало. Подозреваю, что есть прямее пути, но навскидку рабочие варианты я не нашел, поэтому выкручивался так.
В общем так. Фирма 1С отказывается поддерживать отладку обработок в формате КД 2.1 и поэтому коды отладок не работают.
Таким образом в обработке КонвертацияОбъектовИнформационныхБаз надо поправить процедуру инициализации подключаемых обработок.
Делаем либо в самой процедуре ИнициализироватьОбработки(), либо в расширении. Я в расширении делал.
&Вместо("ИнициализироватьОбработки")
Функция Расш1_ИнициализироватьОбработки()
//{[-](фрагмент УДАЛЕН)
//Если ОтладкаОбработчиковВыгрузки Или ОтладкаОбработчиковЗагрузки Тогда
// ВызватьИсключение
// НСтр("ru = 'Внешняя обработка отладки, загружаемая из файла на диске, не поддерживается.'");
//КонецЕсли;
//}
//{[+](фрагмент ДОБАВЛЕН)
Если ОтладкаОбработчиковВыгрузки Тогда
Если ЗначениеЗаполнено(ИмяФайлаВнешнейОбработкиОтладкиВыгрузки) Тогда
ФайлОбработкиВыгрузки = Новый Файл(ИмяФайлаВнешнейОбработкиОтладкиВыгрузки);
Если ФайлОбработкиВыгрузки.Существует() Тогда
ОбработкаВыгрузки = ВнешниеОбработки.Создать(ИмяФайлаВнешнейОбработкиОтладкиВыгрузки);
ОбработкаВыгрузки.ПодключитьОбработкуДляОтладки(ЭтотОбъект);
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если ОтладкаОбработчиковЗагрузки Тогда
Если ЗначениеЗаполнено(ИмяФайлаВнешнейОбработкиОтладкиВыгрузки) Тогда
ФайлОбработкиЗагрузки = Новый Файл(ИмяФайлаВнешнейОбработкиОтладкиВыгрузки);
Если ФайлОбработкиЗагрузки.Существует() Тогда
ОбработкаЗагрузки = ВнешниеОбработки.Создать(ИмяФайлаВнешнейОбработкиОтладкиЗагрузки);
ОбработкаЗагрузки.ПодключитьОбработкуДляОтладки(ЭтотОбъект);
КонецЕсли;
КонецЕсли;
КонецЕсли;
//}
ИмяПланаОбмена = ИмяПланаОбмена();
ИмяПрофиляБезопасности = ОбменДаннымиПовтИсп.ИмяПрофиляБезопасности(ИмяПланаОбмена);
Возврат ИмяПрофиляБезопасности;
КонецФункции