Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) несколько перехватчиков ГМ (число прочтений - 3371 )
MaxPiter
Full Member
***
Отсутствует


I Love 1C++

Сообщений: 187
Местоположение: Санкт-Петербург
Зарегистрирован: 20. Ноября 2008
Пол: Мужской
несколько перехватчиков ГМ
27. Июня 2012 :: 14:50
Печать  
Подскажите пожалуйста, как использовать более одного ПерехватитьСобытияГлобальногоМодуля
Сейчас
Код
Выбрать все
ПриНачалеРаботыСистемы()
...
	НастройкиВК = СоздатьОбъект("УправлениеНастройками");
	НастройкиВК.Сбросить("Проверка типов");
	НастройкиВК.Сбросить("Отладка");  
	НастройкиВК.Включить("Оптимизация");  
	НастройкиВК.Включить("TurboBL");  
	НастройкиВК.Включить("ПерехватитьСобытияГК");
	Перехватчик = СоздатьОбъект("Перехватчик");
	ПерехватчикСобытийГМ = СоздатьОбъект("КлассПерехватСобытий");
	Перехватчик.ПерехватитьСобытияГлобальногоМодуля(ПерехватчикСобытийГМ);
	Для Сч=1 По Метаданные.Документ() Цикл
		ИдОбъектДокумент = СокрЛП(Метаданные.Документ(Сч).Идентификатор);
		Перехватчик.СнятьПерехватСобытийПроведенияДокумента(ИдОбъектДокумент);
		бытийГМ);
	КонецЦикла;
	глУстановленПерехват = 1;
...
 


Как правильно добавить перехватчик для еще одного класса?
Так не работает
Код
Выбрать все
	ПерехватчикАля8 = СоздатьОбъект("Перехватчик");
	ПерехватчикАляВосьмерка = СоздатьОбъект("АляВосьмерка");
	ПерехватчикАля8.ПерехватитьСобытияГлобальногоМодуля(ПерехватчикАляВосьмерка); 


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



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: несколько перехватчиков ГМ
Ответ #1 - 27. Июня 2012 :: 14:57
Печать  
По-идее, должен быть один класс-перехватчик, который перехватывает события глобального контекста и рассылает дальше все события в КОП
  
Наверх
 
IP записан
 
MaxPiter
Full Member
***
Отсутствует


I Love 1C++

Сообщений: 187
Местоположение: Санкт-Петербург
Зарегистрирован: 20. Ноября 2008
Пол: Мужской
Re: несколько перехватчиков ГМ
Ответ #2 - 27. Июня 2012 :: 14:58
Печать  
такой ответ вы мне уже давали Улыбка
а по подробнее можно? в примерах Улыбка
  
Наверх
www  
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: несколько перехватчиков ГМ
Ответ #3 - 27. Июня 2012 :: 15:00
Печать  
У vandalsvq спроси, он делал подписки на события, по крайней мере в классе УправлениеФормой.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: несколько перехватчиков ГМ
Ответ #4 - 27. Июня 2012 :: 15:33
Печать  
На форуме есть примеры кода, ищи по слову Перехватчик, даже я выкладывал в свое время код.
  

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


I Love 1C++

Сообщений: 187
Местоположение: Санкт-Петербург
Зарегистрирован: 20. Ноября 2008
Пол: Мужской
Re: несколько перехватчиков ГМ
Ответ #5 - 27. Июня 2012 :: 15:37
Печать  
artbear писал(а) 27. Июня 2012 :: 15:33:
На форуме есть примеры кода, ищи по слову Перехватчик, даже я выкладывал в свое время код.

искал по слову перехватчик, находит 5 упоминаний и все, там ничего увы нет
  
Наверх
www  
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: несколько перехватчиков ГМ
Ответ #6 - 27. Июня 2012 :: 15:38
Печать  
Артур, пока ты здесь. Есть вопрос:

с помощью объекта ВыполняемыйМодуль, если мы привязали текст молуля к конкретному контексту, то через ссылку на этот контекст можно обращаться к переменным/методам выполняемого модуля ? Или не ?

примерчик:

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

Модуль.УстановитьКонтекст(Конт);
Модуль.КомпилироватьМодуль();


будет ли работать вызовы:

а = Конт.Вася ?
Конт.МойМетод() ?




  
Наверх
 
IP записан
 
MaxPiter
Full Member
***
Отсутствует


I Love 1C++

Сообщений: 187
Местоположение: Санкт-Петербург
Зарегистрирован: 20. Ноября 2008
Пол: Мужской
Re: несколько перехватчиков ГМ
Ответ #7 - 27. Июня 2012 :: 15:39
Печать  
В итоге весь код адаптировал в "свой" класс перехватчика, заработали вместе Улыбка
Вопрос о нескольких перехватчиках в данном случае уже не актуален, но было бы интересно знать как оно работает.
  
Наверх
www  
IP записан
 
Kalen
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 185
Зарегистрирован: 29. Марта 2010
Пол: Мужской
Re: несколько перехватчиков ГМ
Ответ #8 - 27. Июня 2012 :: 15:47
Печать  
Будь бобр, опиши "адаптацию" чуть подробнее пока "по горячим следам". Мне тоже понадобиться...
  
Наверх
GTalkICQ  
IP записан
 
MaxPiter
Full Member
***
Отсутствует


I Love 1C++

Сообщений: 187
Местоположение: Санкт-Петербург
Зарегистрирован: 20. Ноября 2008
Пол: Мужской
Re: несколько перехватчиков ГМ
Ответ #9 - 27. Июня 2012 :: 16:01
Печать  
Kalen писал(а) 27. Июня 2012 :: 15:47:
Будь бобр, опиши "адаптацию" чуть подробнее пока "по горячим следам". Мне тоже понадобиться...

ну если только бобр )))
Сам, новый класс кладем и прописываем как отдельный.
Переменные добавляю себе
Конструктор
Инит
СобытиеГМ_СозданиеКонтекста
вставляю себе в класс.
усе Улыбка
  
Наверх
www  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: несколько перехватчиков ГМ
Ответ #10 - 28. Июня 2012 :: 09:21
Печать  
Eprst писал(а) 27. Июня 2012 :: 15:38:
Артур, пока ты здесь. Есть вопрос:

с помощью объекта ВыполняемыйМодуль, если мы привязали текст молуля к конкретному контексту, то через ссылку на этот контекст можно обращаться к переменным/методам выполняемого модуля ? Или не ?

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

Модуль.УстановитьКонтекст(Конт);
Модуль.КомпилироватьМодуль();


будет ли работать вызовы:

а = Конт.Вася ?
Конт.МойМетод() ?


ИМХО не будут работать. Проверить легко? проверишь?
В свое время в 1С++ был добавлен метод по расширению контекста, правда, название не помню.
автор kms
  

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


Гражданин Вселенной

Сообщений: 855
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: несколько перехватчиков ГМ
Ответ #11 - 28. Июня 2012 :: 12:19
Печать  
Ёпрст, это не оно: ПрисоединитьТекущийМодуль() ? Для объекта ВыполняемыйМодуль. См. здесь http://www.1cpp.ru/forum/YaBB.pl?num=1156958544/4
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
zk96
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 320
Местоположение: Киев
Зарегистрирован: 15. Ноября 2009
Пол: Мужской
Re: несколько перехватчиков ГМ
Ответ #12 - 28. Июня 2012 :: 12:58
Печать  
Eprst писал(а) 27. Июня 2012 :: 15:38:
,..

"_ДобавитьКонтекст" из ТурбоБЛ, это то, что тебе нужно.
  
Наверх
 
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 855
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: несколько перехватчиков ГМ
Ответ #13 - 28. Июня 2012 :: 13:11
Печать  
угу, вот тут обсуждение: http://www.1cpp.ru/forum/YaBB.pl?num=1219695809/all
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: несколько перехватчиков ГМ
Ответ #14 - 02. Июля 2012 :: 09:58
Печать  
artbear писал(а) 28. Июня 2012 :: 09:21:
Eprst писал(а) 27. Июня 2012 :: 15:38:
Артур, пока ты здесь. Есть вопрос:

с помощью объекта ВыполняемыйМодуль, если мы привязали текст молуля к конкретному контексту, то через ссылку на этот контекст можно обращаться к переменным/методам выполняемого модуля ? Или не ?

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

Модуль.УстановитьКонтекст(Конт);
Модуль.КомпилироватьМодуль();


будет ли работать вызовы:

а = Конт.Вася ?
Конт.МойМетод() ?


ИМХО не будут работать. Проверить легко? проверишь?
В свое время в 1С++ был добавлен метод по расширению контекста, правда, название не помню.
автор kms


В том то и дело, что проверил - не добился результата Печаль

Пришлось "переменную" модуля лепить через ДобавитьАтрибут у формы.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать