Переключение на Главную Страницу Страницы: 1 [2] 3  ОтправитьПечать
Очень популярная тема (более 25 ответов) Класс "Перехватчик" (число прочтений - 12383 )
DionX
Senior Member
****
Отсутствует



Сообщений: 373
Местоположение: Кемерово
Зарегистрирован: 22. Августа 2006
Пол: Мужской
Re: Класс "Перехватчик"
Ответ #15 - 31. Октября 2006 :: 04:47
Печать  
Не работало именно вот так:
DionX писал(а) 31. Октября 2006 :: 03:36:
Как подключить перехватчик в самом КОП?
Цитата:
ПерехватитьСобытияГлобальногоМодуля: объект-перехватчик должен быть пользовательским классом 1С++

т.е. возникала такая ошибка и дальнейшая обработка в процедуре не происходила.
Заменил
клПерехватчик.ПерехватитьСобытияГК(Конт,Сам(Контекст));
на
клПерехватчик.ПерехватитьСобытияГК(Конт,Контекст);
Теперь пишет:
Цитата:
Использование метода 'ПерехватитьСобытияГК' запрещено в настройках

не смотря на строки
Код
Выбрать все
	клУправлениеНастр=СоздатьОбъект("УправлениеНастройками");
	клУправлениеНастр.Включить("ПерехватитьСобытияГК");
 

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Класс "Перехватчик"
Ответ #16 - 31. Октября 2006 :: 05:05
Печать  
1. Т.е. когда писал
клПерехватчик.ПерехватитьСобытияГК(Конт,Сам(Контекст));
все равно выдавалась ошибка
Цитата:
ПерехватитьСобытияГлобальногоМодуля: объект-перехватчик должен быть пользовательским классом 1С++

?
или все-таки написано
Цитата:
ПерехватитьСобытияГК: объект-перехватчик должен быть пользовательским классом 1С++


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


?

3. На сборке от какого числа тестишь?
  

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



Сообщений: 373
Местоположение: Кемерово
Зарегистрирован: 22. Августа 2006
Пол: Мужской
Re: Класс "Перехватчик"
Ответ #17 - 31. Октября 2006 :: 05:22
Печать  
1. не могу повтоить ситуацию  Нерешительный Теперь все время
Цитата:
Использование метода 'ПерехватитьСобытияГК' запрещено в настройках

2.
Код
Выбрать все
	клУправлениеНастр=СоздатьОбъект("УправлениеНастройками");
	Флаг = клУправлениеНастр.Получить("ПерехватитьСобытияГК");
	Сообщить("раз "+Флаг);

	клУправлениеНастр.Включить("ПерехватитьСобытияГК");

	Флаг = клУправлениеНастр.Получить("ПерехватитьСобытияГК");
	Сообщить("дваз "+Флаг);
 


Цитата:
раз 0
дваз 0


3. сегодняшняя ночная
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Класс "Перехватчик"
Ответ #18 - 31. Октября 2006 :: 15:23
Печать  
Я исправил ошибки
http://www.1cpp.ru/forum/YaBB.pl?num=1158076903/24#24

Почитай и закачай правленную версию - специально выложил на слил.ру
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Класс "Перехватчик"
Ответ #19 - 01. Ноября 2006 :: 04:58
Печать  
Окончательно поправил работу с настройками Улыбка после двух попыток Печаль
В итоге можно нормально начать работу с Перехватчиком Улыбка
http://www.1cpp.ru/forum/YaBB.pl?num=1158076903/24#24
  

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



Сообщений: 373
Местоположение: Кемерово
Зарегистрирован: 22. Августа 2006
Пол: Мужской
Re: Класс "Перехватчик"
Ответ #20 - 01. Ноября 2006 :: 05:07
Печать  
Пожелание по работе:

Хотелось бы, чтобы перехватывались события модуля документа, такие как ОбработкаПроведения() и тп.
  
Наверх
ICQ  
IP записан
 
DionX
Senior Member
****
Отсутствует



Сообщений: 373
Местоположение: Кемерово
Зарегистрирован: 22. Августа 2006
Пол: Мужской
Re: Класс "Перехватчик"
Ответ #21 - 21. Ноября 2006 :: 04:08
Печать  
Нарыл багу... или тормажу Подмигивание
Есть КОП "МойСуперКласс". В модуле класса:
Код
Выбрать все
Перем клПерехватчик;
.....
Процедура Инит(Конт) Экспорт
	......
	клПерехватчик.ПерехватитьСобытияГК(Конт,Контекст);
	......
КонецПроцедуры
 


всё работает, все ОК.
В документе в ПослеОткрытия() создаётся объект вышеназванного класса, хранится в переменной модуля формы, т.е. "жив" пока открыт документ.
при закрытии документа, если признак модифицированности формы=1 и в модуле формы есть ПриЗаписи() 1с падает. Если есть ПриЗакрытии(), то падает независимо от признака модифицированности. Процедуры могут быть пустыми, не важно.
НО! Если в модуле объявить МойСуперКласс объявить, просто объявить пустую Деструктор() - падения прекращаются. Если в эту процедуру добавить клПерехватчик=0; опять начинает падать.

З.Ы. если из модуля КОП убрать клПерехватчик.ПерехватитьСобытияГК(Конт,Контекст) падения тоже прекращаются, т.е. дело, думаю, именно в перехватчике Печаль
З.Ы.Ы. Процедуры ПриЗаписи(), ПриЗакрытии() в модуле КОП не переопределены.


З.Ы.Ы.Ы.Ы. После продолжения эксперементов выяснилось, что окончательного падения удалось добиться только после определения в модуле КОП процедур ПриЗаписи(), ПриЗакрытии()
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Класс "Перехватчик"
Ответ #22 - 21. Ноября 2006 :: 08:19
Печать  
Релиз 1С++ или дата ночной сборки ?
  

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



Сообщений: 373
Местоположение: Кемерово
Зарегистрирован: 22. Августа 2006
Пол: Мужской
Re: Класс "Перехватчик"
Ответ #23 - 21. Ноября 2006 :: 08:31
Печать  
01.11.2006
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Класс "Перехватчик"
Ответ #24 - 21. Ноября 2006 :: 08:34
Печать  
DionX писал(а) 21. Ноября 2006 :: 04:08:
З.Ы.Ы.Ы.Ы. После продолжения эксперементов выяснилось, что окончательного падения удалось добиться только после определения в модуле КОП процедур ПриЗаписи(), ПриЗакрытии()


Пожалуйста, выложи простую тестовую конфу, где ошибка четко видна. Тогда я смогу быстро поправить.

Сейчас я не пойму - данный баг встречается только при перехвате форм документов или любых форм? и т.д. и т.п.
  

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



Сообщений: 373
Местоположение: Кемерово
Зарегистрирован: 22. Августа 2006
Пол: Мужской
Re: Класс "Перехватчик"
Ответ #25 - 21. Ноября 2006 :: 08:36
Печать  
Минуточку...
  
Наверх
ICQ  
IP записан
 
DionX
Senior Member
****
Отсутствует



Сообщений: 373
Местоположение: Кемерово
Зарегистрирован: 22. Августа 2006
Пол: Мужской
Re: Класс "Перехватчик"
Ответ #26 - 21. Ноября 2006 :: 09:16
Печать  
Еще небольшое условие на возникновения бага:
жолжно сработать одно из перехватываемях в КОПе событий.
Например, в примере, к классе перехватывается ПриОтжатииКнопкиКлавиатуры() и для почвляния бага:
1. открываем документ
2. нажимаем на любые клавиши.
3. закрываем документ. Печаль всё!  Плачущий
  
Наверх
ICQ  
IP записан
 
DionX
Senior Member
****
Отсутствует



Сообщений: 373
Местоположение: Кемерово
Зарегистрирован: 22. Августа 2006
Пол: Мужской
Re: Класс "Перехватчик"
Ответ #27 - 21. Ноября 2006 :: 09:20
Печать  
блин, не получается подкрепитьПечаль
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Класс "Перехватчик"
Ответ #28 - 21. Ноября 2006 :: 09:20
Печать  
Ты пример давай, иначе долго искать Печаль
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Класс "Перехватчик"
Ответ #29 - 23. Ноября 2006 :: 04:47
Печать  
Исправлено: в определенных ситуациях происходил вызов неверной функции в классе обработчика

Короче, весь прикол был во взаимодействии ФормЕкс и 1С++, а ты мне неправильную диагностику давал.
Если из твоего класса убрать ПриОтжатииКнопкиКлавиатуры, тогда все ок.
Если же этот метод есть в классе и он хотя бы раз был вызван, тогда был возможен указанный баг.

Брать завтра, в ночной сборке.
  

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