Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Вопрос по перехватчику... (число прочтений - 1134 )
ndvl
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 7
Зарегистрирован: 19. Мая 2009
Вопрос по перехватчику...
20. Мая 2009 :: 11:48
Печать  
Есть класс ПерехватчикСобытийФормы :
Перем КонтФормы Экспорт;
Процедура Инит(Конт) Экспорт
     КонтФормы = Конт;
     Перехватчик = СоздатьОбъект("Перехватчик");
     Если "тра-та-та" Тогда
           Перехватчик.ПерехватитьСобытияГК(КонтФормы, Контекст);
     КонецЕсли;
КонецПроцедуры

Есть класс ОбработкаСобытий, являющийся наследником вышеприведенного класса:
Перем КонтФормы Экспорт;
Перем КлассРодитель;

Функция Сам(Конт)
     Возврат Конт;
КонецФункции

Процедура Инит(Конт) Экспорт
     КлассРодитель = Сам(Контекст).ПолучитьБазовыйКласс();
     КлассРодитель.Инит(Конт);
     КонтФормы = Конт;
КонецПроцедуры

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

Так вот - событие перехватывается, передается в Функцию Событие_ПриОткрытии(), однако потом на строке ВызватьОригинальноеСобытие пишет вот такую ерунду, что-то типа "поле агрегатного объекта не обнаружено". Пробовал создать эту функцию в Базовом классе - там все отрабатывается нормально. Что я не так делаю?
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вопрос по перехватчику...
Ответ #1 - 20. Мая 2009 :: 11:55
Печать  
У тебя продублирован реквизит КонтФормы и в базе, и в наследнике.
Оставь только тот, что в базовом классе, и обращайся к нему через Сам(), а лучше через Вирт().
  

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


1C++ rocks!

Сообщений: 7
Зарегистрирован: 19. Мая 2009
Re: Вопрос по перехватчику...
Ответ #2 - 20. Мая 2009 :: 15:25
Печать  
Хорошо. Я обратился к КонтФормы Базы через Сам() (удалив эту переменную в наследнике). Но это ничего не изменило. Ошибка выскакивает та же самая. Я не пойму, почему в Базе можно вызывать метод ГК, а в наследнике нельзя?
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вопрос по перехватчику...
Ответ #3 - 21. Мая 2009 :: 11:04
Печать  
Приведи исправленный код обоих классов и пример установки перехвата с помощью этих классов.
  

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