Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Нетипичное использование перехватчика (число прочтений - 1598 )
slider26
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Нетипичное использование перехватчика
27. Февраля 2009 :: 04:14
Печать  
Столкнулся со сл. проблемой: В глоб. модуле у меня создана своя процедура глСоздатьДокументНаОсновании(), вызываемая по кнопке в документе.

Необходимо было исключить ситуации ввода на основании документа, в котором не сохранены изменения (т.е. не пройдены проверки ПриЗаписи())

Естественно, метод Записать() группового контекста работает, но не вызывает событие ПриЗаписи().

Вызвать ПриЗаписи() можно, но нельзя определить, какой статус возврата установлен в функции...

Помог перехватчик Улыбка

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


И всё прекрасно решается использованием след функции гл. модуля:

Код
Выбрать все
Функция глЗаписатьГКДокумента(Конт) Экспорт

	Перем ПерехватчикКонтекста;

	Если ТипЗначенияСтр(Конт)="ГрупповойКонтекст" Тогда
		ПерехватчикКонтекста = глПерехватчикСобытий._Перехватчик.ПолучитьПерехватчикСобытийГК(Конт);
		Если (ПустоеЗначение(ПерехватчикКонтекста) = 0) Тогда
			Если (ПерехватчикКонтекста.Событие_ПриЗаписи() = 1) Тогда
				Возврат(Конт.Записать());
			КонецЕсли;
		КонецЕсли;
	КонецЕсли;
    
	Возврат(0);
    
КонецФункции //глЗаписатьГКДокумента 


Может кому пригодится Улыбка
Интересно, есть ли ещё к-л решения данной проблемы?
« Последняя редакция: 27. Февраля 2009 :: 08:11 - slider26 »  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Нетипичное использование перехватчика
Ответ #1 - 27. Февраля 2009 :: 10:27
Печать  
Нормальный вариант.
Я нечто подобное также юзаю.

Только ты забыл упомянуть, что еще нужно вести список перехваченных контекстов и перехватчиков для них Улыбка
  

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


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Re: Нетипичное использование перехватчика
Ответ #2 - 27. Февраля 2009 :: 15:51
Печать  
artbear писал(а) 27. Февраля 2009 :: 10:27:
Только ты забыл упомянуть, что еще нужно вести список перехваченных контекстов и перехватчиков для них Улыбка

А разве требуется отдельно вести список перехваченых контекстов?
Ведь метод "ПолучитьПерехватчикСобытийГК()" всегда сам вернёт ссылку на экземпляр перехватчика для ГК, если он когда-либо создавался?
  
Наверх
 
IP записан
 
slider26
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Re: Нетипичное использование перехватчика
Ответ #3 - 28. Февраля 2009 :: 01:16
Печать  
Кстати, надо ещё добавить Если-Док-Проведен-Провести, а не записать Улыбка
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Нетипичное использование перехватчика
Ответ #4 - 28. Февраля 2009 :: 09:02
Печать  
slider26 писал(а) 27. Февраля 2009 :: 15:51:
artbear писал(а) 27. Февраля 2009 :: 10:27:
Только ты забыл упомянуть, что еще нужно вести список перехваченных контекстов и перехватчиков для них Улыбка

А разве требуется отдельно вести список перехваченых контекстов?
Ведь метод "ПолучитьПерехватчикСобытийГК()" всегда сам вернёт ссылку на экземпляр перехватчика для ГК, если он когда-либо создавался?

Упс Улыбка
Совсем забыл про свой же встроенный метод Перехватчика Очень довольный
  

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