Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) Перехватчик. Проблема с пониманием полная. (число прочтений - 7216 )
Kran
Junior Member
**
Отсутствует



Сообщений: 51
Местоположение: Волжский Волгоградской обл.
Зарегистрирован: 27. Августа 2007
Пол: Мужской
Перехватчик. Проблема с пониманием полная.
18. Октября 2007 :: 10:47
Печать  
Подскажите люди добрые. Вот копаю я дальше и дальше с Перехватчиком и возникает два вопроса:
1. Как отлаживать классы? Сталкиваюсь с этой проблемой и каждый раз в недоумении как вы тестите классы? см.п.2
2. Пытаюсь перехватить событие глобального модуля: ПриУдаленииЭлемента
Код класса перехвата ГМ:
Код
Выбрать все
Функция СобытиеГМ_ПриУдаленииЭлемента(Конт, УдалЭлем, Режим) Экспорт
	Сообщить(УдалЭлем.Наименование);
КонецФункции
 


1С падает. Что здесь не так?
Очень подразумеваю, что нет параметров УдалЭлем и Режим у этой функции. Но блин, как догадаться что это так?
  
Наверх
wwwICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик. Проблема с пониманием полная.
Ответ #1 - 18. Октября 2007 :: 11:01
Печать  
У ПриУдаленииДокумента два параметра: Докум и Режим
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик. Проблема с пониманием полная.
Ответ #2 - 18. Октября 2007 :: 11:01
Печать  
Kran писал(а) 18. Октября 2007 :: 10:47:
Но блин, как догадаться что это так?

Курить доку на 1С  Смех
  
Наверх
 
IP записан
 
Kran
Junior Member
**
Отсутствует



Сообщений: 51
Местоположение: Волжский Волгоградской обл.
Зарегистрирован: 27. Августа 2007
Пол: Мужской
Re: Перехватчик. Проблема с пониманием полная.
Ответ #3 - 18. Октября 2007 :: 11:06
Печать  
Сюда же:
Вот добился я выполнения такого кода:
Код
Выбрать все
//_____________________________________________________________________________
Функция СобытиеГМ_ПриУдаленииЭлемента(Конт) Экспорт
	Перехватчик = СоздатьОбъект("Перехватчик");
	Возврат ;
КонецФункции
 


Но вот теперь выдает сообщение:
Перехватчик::ВыполнитьОригинальноеСобытиеГлобальногоМодуля - Неверное число параметров у обработчика события <ПриУдаленииЭлемента>
Как понять сколько параметров передавать? В доках не нашел Печаль
  
Наверх
wwwICQ  
IP записан
 
Kran
Junior Member
**
Отсутствует



Сообщений: 51
Местоположение: Волжский Волгоградской обл.
Зарегистрирован: 27. Августа 2007
Пол: Мужской
Re: Перехватчик. Проблема с пониманием полная.
Ответ #4 - 18. Октября 2007 :: 11:07
Печать  
Arta писал(а) 18. Октября 2007 :: 11:01:
У ПриУдаленииДокумента два параметра: Докум и Режим

Смешно конечно, но я то говорю про ПриУдаленииЭлемента
  
Наверх
wwwICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик. Проблема с пониманием полная.
Ответ #5 - 18. Октября 2007 :: 11:09
Печать  
Kran писал(а) 18. Октября 2007 :: 11:07:
Arta писал(а) 18. Октября 2007 :: 11:01:
У ПриУдаленииДокумента два параметра: Докум и Режим

Смешно конечно, но я то говорю про ПриУдаленииЭлемента

Твоя правда. Но мне по прежнему смешно Улыбка
ПриУдаленииЭлемента(Элемент, Режим)
  
Наверх
 
IP записан
 
Kran
Junior Member
**
Отсутствует



Сообщений: 51
Местоположение: Волжский Волгоградской обл.
Зарегистрирован: 27. Августа 2007
Пол: Мужской
Re: Перехватчик. Проблема с пониманием полная.
Ответ #6 - 18. Октября 2007 :: 11:16
Печать  
Arta писал(а) 18. Октября 2007 :: 11:09:
Kran писал(а) 18. Октября 2007 :: 11:07:
Arta писал(а) 18. Октября 2007 :: 11:01:
У ПриУдаленииДокумента два параметра: Докум и Режим

Смешно конечно, но я то говорю про ПриУдаленииЭлемента

Твоя правда. Но мне по прежнему смешно Улыбка
ПриУдаленииЭлемента(Элемент, Режим)


Ну вот совсем запутался:
Правильно ли я понял, что, если мы перехватываем события типа СобытиеГМ_ПриОткрытии или СобытиеГМ_ВводНового - события ГК, то первым параметром там всегда идет ГК, а потом стандартные параметры. Например, для СобытиеГМ_ВводНового(Конт, Признак, Объект).
А вот, когда перехватывается событие ГМ, то Конт не передается и надо просто писать параметры, типа СобытиеГМ_ПриУдаленииЭлемента(Элемент, Режим). И что будет, если я передам пустые параметры вот в такой конструкции:
Возврат лПерехватчик.ВыполнитьОригинальноеСобытиеГК(лКонтФормы,"ВводНового",,);
Будет ли это означать, что оригинальная процедура получит их пустыми?
  
Наверх
wwwICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик. Проблема с пониманием полная.
Ответ #7 - 18. Октября 2007 :: 11:22
Печать  
Kran писал(а) 18. Октября 2007 :: 11:16:
Ну вот совсем запутался:


Запутался. Думаю надо еще раз перечитать доку на перехватчик. Про лишние параметры кроме стандартных ничего не написано.
Ты просто перехватываешь ГлобальныйМодуль и все. Ну еще видоизменяешь название процедур, добавляя "СобытиеГМ_"

А СобытиеГМ_ПриОткрытии это отдельное событие поддерживаемое только перехватчиком, соответственно порядок параметров свой. Там Конт есть.
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик. Проблема с пониманием полная.
Ответ #8 - 18. Октября 2007 :: 11:25
Печать  
Kran писал(а) 18. Октября 2007 :: 11:16:
Правильно ли я понял, что, если мы перехватываем события типа СобытиеГМ_ПриОткрытии или СобытиеГМ_ВводНового - события ГК, то первым параметром там всегда идет ГК, а потом стандартные параметры.

Что есть стандартные параметры? Описанные Артуром (разработчиком)? Улыбка
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик. Проблема с пониманием полная.
Ответ #9 - 18. Октября 2007 :: 11:25
Печать  
Arta писал(а) 18. Октября 2007 :: 11:09:
[quote author=Kran link=1192704472/0#4 date=1192705641]
Твоя правда. Но мне по прежнему смешно Улыбка
ПриУдаленииЭлемента(Элемент, Режим)

+1 Именно так.
Изучаем штатную доку на 1С Улыбка
Весь смысл в том, что почти ничего не придумываю по событиям, а просто сделал интерфейс для удобного перехвата.

Kran писал(а) 18. Октября 2007 :: 11:16:
Ну вот совсем запутался:
Правильно ли я понял, что, если мы перехватываем события типа СобытиеГМ_ПриОткрытии или СобытиеГМ_ВводНового - события ГК, то первым параметром там всегда идет ГК, а потом стандартные параметры. Например, для СобытиеГМ_ВводНового(Конт, Признак, Объект).
А вот, когда перехватывается событие ГМ, то Конт не передается и надо просто писать параметры, типа СобытиеГМ_ПриУдаленииЭлемента(Элемент, Режим). И что будет, если я передам пустые параметры вот в такой конструкции:
Возврат лПерехватчик.ВыполнитьОригинальноеСобытиеГК(лКонтФормы,"ВводНового",,);
Будет ли это означать, что оригинальная процедура получит их пустыми?

Есть несколько видов событий глобального модуля
1. Штатные события 1С
- типа ПриУдаленииЭлемента, ПриУдаленииДокумента, ПриЗавершенииРаботыСистемы.
2. События глобальника от ФормЕкс и других ВК

При перехвате событий из 1 и 2 в обработчике классов должны быть те же параметры, что описаные в штатной доке 1С на эти параметры.

3. Спец. события, введенные в Перехватчике - СобытиеГМ_ПриОткрытии, СобытиеГМ_ВводНового, СобытиеГМ_ВводНаОсновании
Эти события не имеют аналогов в глобальнике, т.е. бесполезно их писать в глобальном модуле !
При перехвате этих спец.событий глобальника первым параметром всегда идет контекст открываемой формы, а далее следуют штатные параметры соответствующих событий, т.е. ПриОткрытии, ВводНового, ВводНаОсновании соответственно.

Понятно объяснил или еще есть вопросы?
  

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



Сообщений: 51
Местоположение: Волжский Волгоградской обл.
Зарегистрирован: 27. Августа 2007
Пол: Мужской
Re: Перехватчик. Проблема с пониманием полная.
Ответ #10 - 18. Октября 2007 :: 11:25
Печать  
Arta писал(а) 18. Октября 2007 :: 11:22:
Kran писал(а) 18. Октября 2007 :: 11:16:
Ну вот совсем запутался:


Запутался. Думаю надо еще раз перечитать доку на перехватчик. Про лишние параметры кроме стандартных ничего не написано.
Ты просто перехватываешь ГлобальныйМодуль и все. Ну еще видоизменяешь название процедур, добавляя "СобытиеГМ_"

А СобытиеГМ_ПриОткрытии это отдельное событие поддерживаемое только перехватчиком, соответственно порядок параметров свой. Там Конт есть.


Дока:
Синтаксис: ВыполнитьОригинальноеСобытиеГлобальногоМодуля(ИмяСобытия, ...)
Возвращает: тип: Число - статус возврата глобального модуля.
Параметры: - ИмяСобытия - тип: Строка.

Что значит .... У процедуры ПриУдаленииЭлемента(УдалЭлем, Режим) как видим два параметра.
Почему же тогда вот такая конструкция не правильная:
УдалЭлем, Режим);

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик. Проблема с пониманием полная.
Ответ #11 - 18. Октября 2007 :: 11:27
Печать  
Kran писал(а) 18. Октября 2007 :: 11:16:
И что будет, если я передам пустые параметры вот в такой конструкции:
Возврат лПерехватчик.ВыполнитьОригинальноеСобытиеГК(лКонтФормы,"ВводНового",,);
Будет ли это означать, что оригинальная процедура получит их пустыми?

Да, конечно, будут именно пустые параметры !
  

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



Сообщений: 51
Местоположение: Волжский Волгоградской обл.
Зарегистрирован: 27. Августа 2007
Пол: Мужской
Re: Перехватчик. Проблема с пониманием полная.
Ответ #12 - 18. Октября 2007 :: 11:28
Печать  
А правильная вот такая:
;
Но в то же время вот такое говорит, что не хватает параметров:
Перехватчик.ВыполнитьОригинальноеСобытиеГК(лКонтФормы,"ВводНового");
  
Наверх
wwwICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик. Проблема с пониманием полная.
Ответ #13 - 18. Октября 2007 :: 11:30
Печать  
Kran писал(а) 18. Октября 2007 :: 11:25:
Почему же тогда вот такая конструкция не правильная:
УдалЭлем, Режим);

Ты уверен, что она неправильна? Хорошо проверил?
  

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



Сообщений: 51
Местоположение: Волжский Волгоградской обл.
Зарегистрирован: 27. Августа 2007
Пол: Мужской
Re: Перехватчик. Проблема с пониманием полная.
Ответ #14 - 18. Октября 2007 :: 11:30
Печать  
Логика получается разная. В глобальнике ничего передавать не надо при Выполнении ориг.события. А в ГК надо?
  
Наверх
wwwICQ  
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать