Переключение на Главную Страницу Страницы: 1 ... 3 4 [5]  ОтправитьПечать
Очень популярная тема (более 25 ответов) Перехватчик. У кого как? (число прочтений - 16553 )
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Перехватчик. У кого как?
Ответ #60 - 05. Июня 2009 :: 08:15
Печать  
у меня вроде такое работает:
Код
Выбрать все
Функция Событие_ПриОткрытии(_ФлагЧтенияНастройки) Экспорт
	_ТипСобытия = "ПриОткрытии"; СообщитьОПерехвате(_ТипСобытия);
	_Событие = НаименованиеСобытия(_ТипСобытия);
	_ЕстьПараметр = _Параметр_ПриОткрытии.Принадлежит(_РасшифровкаОбъекта.Тип);
	_Пар = СоздатьОбъект("СписокЗначений");
	_Пар.ДобавитьЗначение(1,"ФСО");
	_Пар.ДобавитьЗначение(_РасшифровкаОбъекта,"РасшифровкаОбъекта");
	_МенеджерСобытий.ПослатьСобытие(_Контекст,_ТипСобытия,_Пар);
	SLT.СистемаМенеджерСобытий.ПослатьСобытие(_Контекст,_Событие,_Пар);
	_ФСО = Число(_Пар.Получить("ФСО"));
	Если _ФСО = 1 Тогда
		Если _ЕстьПараметр = 1 Тогда
			_ФСО = тройки);
		Иначе
			_ФСО = _Перехватчик.ВыполнитьОригинальноеСобытиеГК(_Контекст,_ТипСобытия);
		КонецЕсли;
	КонецЕсли;
	Возврат _ФСО;
КонецФункции 

  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик. У кого как?
Ответ #61 - 05. Июня 2009 :: 09:25
Печать  
dnp писал(а) 05. Июня 2009 :: 05:29:
CaBaT писал(а) 04. Июня 2009 :: 11:32:
artbear писал(а) 04. Июня 2009 :: 10:48:
Либо в одном классе для подобных событий делай проверку на разные типы форм и в зависимости от типа используй/не используй параметры.

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

А разве достаточно просто неиспользовать "лишние" параметры?
Мне казалось, что даже просто наличие лишнего параметра в описании обработчика события валило 1С...
Ошибаюсь?

Из-за наличия лишнего параметра 1С не упадет, упадет только при обращении к этому лишнему параметру, т.к. физически его нету, и идет обращение к левому адресу памяти или к NULL
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: Перехватчик. У кого как?
Ответ #62 - 05. Июня 2009 :: 11:28
Печать  
artbear писал(а) 05. Июня 2009 :: 09:25:
Из-за наличия лишнего параметра 1С не упадет, упадет только при обращении к этому лишнему параметру, т.к. физически его нету, и идет обращение к левому адресу памяти или к NULL

Но ведь стоит Функция Событие_ПриОткрытии ( ФлагЧтенияНастройки = 0 ) Экспорт
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик. У кого как?
Ответ #63 - 05. Июня 2009 :: 11:33
Печать  
blindvic писал(а) 05. Июня 2009 :: 11:28:
artbear писал(а) 05. Июня 2009 :: 09:25:
Из-за наличия лишнего параметра 1С не упадет, упадет только при обращении к этому лишнему параметру, т.к. физически его нету, и идет обращение к левому адресу памяти или к NULL

Но ведь стоит Функция Событие_ПриОткрытии ( ФлагЧтенияНастройки = 0 ) Экспорт

И что? Перехватчик в данном случае не добавит лишний параметр к родному событию 1С, которое передано без параметров.
Т.е. значение по умолчанию никакой роли здесь не сыграет, т.к. Перехватчик просто не будет передавать этот параметр.

ЗЫ сразу говорю - исправлять это поведение не буду! по разным причинам.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 3 4 [5] 
ОтправитьПечать