Имя: Пароль:
1C
1C 7.7
v7: ПерехватитьСобытияГК
0 Adecvator
 
04.02.13
18:59
Хочу включить перехват события:
       Если (ЗагрузитьВнешнююКомпоненту(глКаталогDLL+"FormEx.dll") = 1) и
            (ЗагрузитьВнешнююКомпоненту(глКаталогDLL+"1CPP32320.dll") = 1) Тогда
           гл1CPP = 1;
           глСервис = СоздатьОбъект("Сервис");
           глСервис.ВключитьРаскраскуТаблиц();
           
           //ПерехватГК = СоздатьОбъект("ПерехватчикСобытийГК");
           //ПерехватГК.ВключитьПерехват();
           
           глСервис.ПерехватитьСобытияГК();
           
       КонецЕсли;    

а он ругается:
глСервис.ПерехватитьСобытияГК();
{Глобальный модуль(4114)}: Поле агрегатного объекта не обнаружено (ПерехватитьСобытияГК)
1 FN
 
04.02.13
19:15
ПерехватитьСобытияГК никакого отношения к объекту Сервис не имеет
2 Adecvator
 
04.02.13
19:24
(1) а как его тогда вкл. Попробовал так:
глУпрНастройками =СоздатьОбъект("УправлениеНастройками");
глУпрНастройками.Установить("ПерехватитьСобытияГК",1);
ругаться не ругается но вот в процедуры:
//=========================================================
Процедура Событие_ЗаписьПользовательскогоСобытияЖурналаРегистрации(EventCategory, Event, EvType, comment, object, ObjDescr)
   Сообщить("" + EventCategory + "" + Event + "" + EvType + "" + comment + "" + object + "" + ObjDescr);
КонецПроцедуры // Событие_ЗаписьПользовательскогоСобытияЖурналаРегистрации

//==========================================================
Процедура Событие_ЗаписьСобытияЖурналаРегистрации(EventCategory, Event, EvType, comment, object, ObjDescr)
   Сообщить("" + EventCategory + "" + Event + "" + EvType + "" + comment + "" + object + "" + ObjDescr);
КонецПроцедуры // Событие_ЗаписьСобытияЖурналаРегистрации

не заходит :(
3 monsterZE
 
04.02.13
20:42
4 monsterZE
 
04.02.13
20:43
5 Adecvator
 
05.02.13
12:03
Вот так я включил перехватчик:
ЗагрузитьВнешнююКомпоненту(глКаталогDLL+"FormEx.dll");
ЗагрузитьВнешнююКомпоненту(глКаталогDLL+"1CPP32320.dll");
глУпрНастройками =СоздатьОбъект("УправлениеНастройками");
глУпрНастройками.Включить("ПерехватитьСобытияГК");
Перехватчик = СоздатьОбъект("Перехватчик");
Перехватчик.ПодключитьСобытие_НеобработаннаяОшибка();
Перехватчик.ПодключитьСобытие_ЗаписьСобытияЖурналаРегистрации();
Перехватчик.ПодключитьСобытие_ЗаписьПользовательскогоСобытияЖурналаРегистрации();

вот так я пытаюсь перехватить запись в журнал регистраций:
Процедура Событие_ЗаписьПользовательскогоСобытияЖурналаРегистрации (EventCategory, Event, EvType, comment, object, ObjDescr) Экспорт
   Сообщить("" + EventCategory + "" + Event + "" + EvType + "" + comment + "" + object + "" + ObjDescr);
   Сообщить("Перехватчик работает!!!");
КонецПроцедуры // Событие_ЗаписьПользовательскогоСобытияЖурналаРегистрации

Почему оно не работает?
6 Ёпрст
 
05.02.13
12:04
1cpp должна всегда грузится первой.
7 Ёпрст
 
05.02.13
12:04
(5) читай доку. Там ответ на твой вопрос.
8 Ёпрст
 
05.02.13
12:05
9 Adecvator
 
05.02.13
13:14
Процедура: Событие_ЗаписьПользовательскогоСобытияЖурналаРегистрации() у меня не отработала, а вот Событие_ЗаписьСобытияЖурналаРегистрации, работает, теперь проблема как записать comment, обычным присвоение не помогает :(
Если СокрЛП(Event) = "DocPassed" Тогда
       comment = "DocWrite";
   Сообщить(1);
КонецЕсли;
10 Ёпрст
 
05.02.13
13:16
(9) дык пользовательское, это когда ручонками записьЖурналаРегистрации вызывается в коде, ты точно его хотел ловить то ?
:)
11 Adecvator
 
05.02.13
13:19
(10) точно :) а как комент записать не подскажешь?
12 Ёпрст
 
05.02.13
13:19
И еще, что бы что то записать ссвоё, нужно записьЖурналаРегистрации вызвать вестимо.
13 Ёпрст
 
05.02.13
13:19
и отменить штатное действие.
14 Adecvator
 
05.02.13
15:10
(13) а как отменить штатное действие записи в журнал регистрации?
15 Ёпрст
 
05.02.13
15:11
дык не вызывать оригинальное событие вестимо
16 Adecvator
 
05.02.13
15:14
(15) не до понял, что значит: "не вызывать оригинальное событие вестимо" ???
17 Ёпрст
 
05.02.13
15:17
Общая схема перехвата - ты перехватываешь предопределенные события чего угодно в своём классе, если ты в этих событиях не вызываешь оригинальное событие - оно не выполняется.

См.
ВыполнитьОригинальноеСобытиеГК
ВыполнитьОригинальноеСобытиеГлобальногоМодуля
18 Adecvator
 
05.02.13
15:39
(17) что бы выполнить орг. событие необходимо его перехватить ПерехватитьСобытияГК, прописываю в глобальнике функцию ПерехватитьСобытияГК она туда не заходит :(
19 Ёпрст
 
05.02.13
15:48
(18) всё не так.
20 Ёпрст
 
05.02.13
16:09
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс