Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Перехватчик. Как вызвать оригинальное событие? (число прочтений - 5936 )
Afina
YaBB Newbies
*
Отсутствует



Сообщений: 7
Местоположение: Екатеринбург
Зарегистрирован: 22. Марта 2011
Пол: Женский
Перехватчик. Как вызвать оригинальное событие?
23. Марта 2011 :: 11:27
Печать  
Пожалуйста помогите.
Создаю класс перехватчик, ловлю контекст формы при создании контекста, далее перехватываю события: Событие_ПриЗаписи(), Событие_ПриНачалеРедактированияСтроки, Событие_ПриВводеСтроки для объектов форма списка справочника, форма элемента справочника, форма документа.
События перехватываются, но при этом не выполняется тот код, который на эти события прописан в самой форме.
после кода обработчика перехватываемого события пишу:

Рез=Перехватчик.ВыполнитьОригинальноеСобытиеГК(КонтекстФормы,"ПриВводеСтроки");


но на этой строке происходит исключительная ситуация.
1с++ версии 3.2.3.10
  
Наверх
ICQ  
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Перехватчик. Как вызвать оригинальное событие?
Ответ #1 - 23. Марта 2011 :: 11:47
Печать  
КонтекстФормы у тебя что ?
  
Наверх
 
IP записан
 
Afina
YaBB Newbies
*
Отсутствует



Сообщений: 7
Местоположение: Екатеринбург
Зарегистрирован: 22. Марта 2011
Пол: Женский
Re: Перехватчик. Как вызвать оригинальное событие?
Ответ #2 - 23. Марта 2011 :: 11:58
Печать  
Eprst писал(а) 23. Марта 2011 :: 11:47:
КонтекстФормы у тебя что ?

Спасибо!!!!! не ту переменную оказывается пытаюсь использовать.
очень-очень спасибо. все заработало!
  
Наверх
ICQ  
IP записан
 
Afina
YaBB Newbies
*
Отсутствует



Сообщений: 7
Местоположение: Екатеринбург
Зарегистрирован: 22. Марта 2011
Пол: Женский
Re: Перехватчик. Как вызвать оригинальное событие?
Ответ #3 - 12. Апреля 2011 :: 09:42
Печать  
Можно снова спрошу?

в том же перехватчике в функции
Код
Выбрать все
Функция СобытиеГМ_ПриУдаленииДокумента(Док,Режим) Экспорт 


при попытке выполнить строку
Код
Выбрать все
); 


или
Код
Выбрать все
Док,Режим); 


возникает исключительная ситуация.
Что я снова напутала, помогите пожалуйста разобраться...

переменная КонтФормы заполняется при создании контекста
Код
Выбрать все
Процедура СобытиеГМ_СозданиеКонтекста(вхКонтекстФормы) Экспорт
ПерехватчикСобытийФормы = СоздатьОбъект("КлассПерехватСобытий");
ПерехватчикСобытийФормы.КонтФормы=вхКонтекстФормы; 

  
Наверх
ICQ  
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Перехватчик. Как вызвать оригинальное событие?
Ответ #4 - 12. Апреля 2011 :: 09:56
Печать  
Ну ё.. У глобальника же нет контекста Улыбка
Будь проще:

Код
Выбрать все
Функция СобытиеГМ_ПриУдаленииДокумента(УдалДокум,Режим) Экспорт
	Возврат Перехватчик.ВыполнитьОригинальноеСобытиеГлобальногоМодуля ("ПриУдаленииДокумента",УдалДокум,Режим);
КонецФункции 

  
Наверх
 
IP записан
 
Afina
YaBB Newbies
*
Отсутствует



Сообщений: 7
Местоположение: Екатеринбург
Зарегистрирован: 22. Марта 2011
Пол: Женский
Re: Перехватчик. Как вызвать оригинальное событие?
Ответ #5 - 12. Апреля 2011 :: 10:02
Печать  
Опробовала вот такую вариацию
Код
Выбрать все
Функция СобытиеГМ_ПриУдаленииДокумента(Док,Режим) Экспорт
Попытка
   нта",Док,Режим);
Исключение
   Сообщить("А нифига!");
КонецПопытки; 



Выдает нифига Печаль
  
Наверх
ICQ  
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Перехватчик. Как вызвать оригинальное событие?
Ответ #6 - 12. Апреля 2011 :: 10:12
Печать  
На вот, мой тестовый класс, в нём всё работает:

Для работы в глобальнике пропиши:

Код
Выбрать все
Процедура ПриНачалеРаботыСистемы()
	ЗагрузитьВнешнююКомпоненту("1cpp.dll");
	Настройки=СоздатьОбъект("УправлениеНастройками");
	Настройки.Сбросить("Проверка типов");
	Настройки.Сбросить("Отладка");
	//Настройки.Сбросить("Оптимизация");
	Настройки.Включить("Оптимизация");
	Настройки.Включить("TurboBL");

	Настройки.Включить("ПерехватитьСобытияГК");
	Перехватчик = СоздатьОбъект("Перехватчик");  
	ПерехватчикСобытийГМ = СоздатьОбъект("ПерехватСобытий");  
Перехватчик.ПерехватитьСобытияГлобальногоМодуля(ПерехватчикСобытийГМ);
	ПерехватчикСобытийГМ.ПерехватитьПроведение();
	ЗагрузитьВнешнююКомпоненту("formex.dll");
КонецПроцедуры
// Предопределенная процедура.
//
Процедура ПриУдаленииЭлемента(УдалЭлем,Режим)
    Сообщить("Удаление в глобальничке")
УдалЭлем.ПометкаУдаления()));
КонецПроцедуры  

  

________________001.rar ( 7 KB | Загрузки )
Наверх
 
IP записан
 
Afina
YaBB Newbies
*
Отсутствует



Сообщений: 7
Местоположение: Екатеринбург
Зарегистрирован: 22. Марта 2011
Пол: Женский
Re: Перехватчик. Как вызвать оригинальное событие?
Ответ #7 - 12. Апреля 2011 :: 10:17
Печать  
Это важно - загружать компоненту formex уже после объявления перехватчика?
в нашей базе загрузка компонент происходит до исполнения каких-либо процедур..
  
Наверх
ICQ  
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Перехватчик. Как вызвать оригинальное событие?
Ответ #8 - 12. Апреля 2011 :: 10:26
Печать  
Afina писал(а) 12. Апреля 2011 :: 10:17:
Это важно - загружать компоненту formex уже после объявления перехватчика?
в нашей базе загрузка компонент происходит до исполнения каких-либо процедур..


важно только, чтоб формекс был позже 1cpp (если он вообще нужен)
  
Наверх
 
IP записан
 
Afina
YaBB Newbies
*
Отсутствует



Сообщений: 7
Местоположение: Екатеринбург
Зарегистрирован: 22. Марта 2011
Пол: Женский
Re: Перехватчик. Как вызвать оригинальное событие?
Ответ #9 - 12. Апреля 2011 :: 10:32
Печать  
А что это у вас за мистический Вирт() такой?
несколько раз натыкалась на его использование, но не нашла что это такое и где должно быть расположено и как должно выглядеть  Озадачен
  
Наверх
ICQ  
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Перехватчик. Как вызвать оригинальное событие?
Ответ #10 - 12. Апреля 2011 :: 11:51
Печать  
Afina писал(а) 12. Апреля 2011 :: 10:32:
А что это у вас за мистический Вирт() такой?
несколько раз натыкалась на его использование, но не нашла что это такое и где должно быть расположено и как должно выглядеть  Озадачен


http://www.1cpp.ru/docum/icpp/html/classes.html#id36
  
Наверх
 
IP записан
 
Afina
YaBB Newbies
*
Отсутствует



Сообщений: 7
Местоположение: Екатеринбург
Зарегистрирован: 22. Марта 2011
Пол: Женский
Re: Перехватчик. Как вызвать оригинальное событие?
Ответ #11 - 12. Апреля 2011 :: 11:56
Печать  
Большое спасибо за потраченное время, уделение внимания и выданную информацию. Я вам очень признательна Улыбка
@}->-
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать