artbear писал(а) 26. Февраля 2010 :: 12:56:ИМХО для гарантированной работы перехвата нужно его включать СРАЗУ после загрузки 1С++ и до загрузки остальных ВК.
Из опыта - 1С++ ВСЕГДА должен грузиться первым, пока меня это правило не подводило.
Версия 1С++ и ФормЕкс, надеюсь, последняя?
Поменял порядок загрузки и старта Перехватчика.
нефига не помогло.
Вот переписал функцию загрузки внешних компонент.
Функция глЗагрузитьВнешнююКомпоненту(Имя,Путь="") Экспорт
стат=0;
Если стат=0 Тогда
СпСид=СоздатьОбъект("СписокЗначений");
СпСид.ДобавитьЗначение("1cpp.dll","AddIn.1c++");
СпСид.ДобавитьЗначение("usersdef.dll","AddIn.UsersDef");
//СпСид.ДобавитьЗначение("addin.filewatcher","AddIn.FileWatcher");
ИмяКомпоненты=Нрег(Имя);
поз=СпСид.НайтиЗначение(ИмяКомпоненты);
Если поз>0 Тогда
стр="";
СпСид.ПолучитьЗначение(поз,стр);
Попытка
стат=ПодключитьВнешнююКомпоненту(стр);
Исключение
КонецПопытки;
КонецЕсли;
Если поз=1 Тогда
УправлениеНастройками = СоздатьОбъект("УправлениеНастройками");
Если УправлениеНастройками.Получить("EnableDebugging")=0 Тогда
УправлениеНастройками.Включить("ПерехватитьСобытияГК");
Перехватчик = СоздатьОбъект("Перехватчик");
Перехватчик.ПодключитьСобытие_НеобработаннаяОшибка();
Перехватчик.ПодключитьСобытие_ЗаписьСобытияЖурналаРегистрации();
;
ПерехватчикСобытий=СоздатьОбъект("ПерехватГМ");
ПерехватчикСобытий.ВключитьПерехватСобытий();
КонецЕсли;
конецЕсли;
КонецЕсли;
Если стат=0 Тогда
лСпПутей=СоздатьОбъект("СписокЗначений");
Если ПустоеЗначение(Путь)=1 Тогда
лСпПутей.ДобавитьЗначение(КаталогИБ()+Имя);
лСпПутей.ДобавитьЗначение(КаталогИБ()+"..\"+Имя);
лСпПутей.ДобавитьЗначение(КаталогИБ()+"..\lib\"+Имя);
лСпПутей.ДобавитьЗначение(КаталогПрограммы()+Имя);
Для н=1 По лСпПутей.РазмерСписка() Цикл
лПуть=лСпПутей.ПолучитьЗначение(н);
Если ФС.СуществуетФайл(лПуть)=1 Тогда
Попытка
стат=ЗагрузитьВнешнююКомпоненту(лПуть);
Прервать;
Исключение
КонецПопытки;
КонецЕсли;
КонецЦикла;
Иначе
лПуть=Путь+Имя;
Попытка
стат=ЗагрузитьВнешнююКомпоненту(лПуть);
Исключение
КонецПопытки;
КонецЕсли;
КонецЕсли;
Возврат стат;
КонецФункции // глЗагрузитьВнешнююКомпоненту
: