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



Сообщений: 51
Местоположение: Волжский Волгоградской обл.
Зарегистрирован: 27. Августа 2007
Пол: Мужской
Перехватчик. У кого как?
11. Октября 2007 :: 04:33
Печать  
В документации написано:
После установки перехвата при вызове системой события управление будет передано в соответствующий обработчик события в классе-перехватчике. В этом случае встроенные обработчики предопределенных событий в перехваченном контексте или глобальном модуле автоматически вызываться не будут. Разработчик сам должен вызвать данные обработчики (см. п.7), когда это необходимо.

У меня встроенные обработчики отрабатывают сами.
Это баг и будет исправлен в дальнейшем или уже фича которая останется?
1C рел.27
1Cpp 2.0.5.76

Приаттачил примерчик там видно, что сначала отрабатывает перехватчик, потом форма сама.
  

Prob.rar ( 6 KB | Загрузки )
Наверх
wwwICQ  
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Перехватчик. У кого как?
Ответ #1 - 11. Октября 2007 :: 04:43
Печать  
А где же класс "МойКласс"?
  
Наверх
ICQ  
IP записан
 
Kran
Junior Member
**
Отсутствует



Сообщений: 51
Местоположение: Волжский Волгоградской обл.
Зарегистрирован: 27. Августа 2007
Пол: Мужской
Re: Перехватчик. У кого как?
Ответ #2 - 11. Октября 2007 :: 04:48
Печать  
vip писал(а) 11. Октября 2007 :: 04:43:
А где же класс "МойКласс"?

Ой Улыбка
Забыл сказать - открывать справочник Новый1 (там правда больше ничего нет)
  

Class_001.rar ( 1 KB | Загрузки )
Наверх
wwwICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик. У кого как?
Ответ #3 - 11. Октября 2007 :: 06:35
Печать  
Перем МойКласс Экспорт;
  
Наверх
 
IP записан
 
Kran
Junior Member
**
Отсутствует



Сообщений: 51
Местоположение: Волжский Волгоградской обл.
Зарегистрирован: 27. Августа 2007
Пол: Мужской
Re: Перехватчик. У кого как?
Ответ #4 - 11. Октября 2007 :: 06:38
Печать  
Arta писал(а) 11. Октября 2007 :: 06:35:
Перем МойКласс Экспорт;

Добавил в Глобальник - Не помогло
  
Наверх
wwwICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик. У кого как?
Ответ #5 - 11. Октября 2007 :: 06:41
Печать  
Брр... ты перехватываешь глобальник, и смотришь на локальные события?
  
Наверх
 
IP записан
 
Kran
Junior Member
**
Отсутствует



Сообщений: 51
Местоположение: Волжский Волгоградской обл.
Зарегистрирован: 27. Августа 2007
Пол: Мужской
Re: Перехватчик. У кого как?
Ответ #6 - 11. Октября 2007 :: 06:43
Печать  
Arta писал(а) 11. Октября 2007 :: 06:41:
Брр... ты перехватываешь глобальник, и смотришь на локальные события?

А как перехватить локальное ПриОткрытии?
  
Наверх
wwwICQ  
IP записан
 
Kran
Junior Member
**
Отсутствует



Сообщений: 51
Местоположение: Волжский Волгоградской обл.
Зарегистрирован: 27. Августа 2007
Пол: Мужской
Re: Перехватчик. У кого как?
Ответ #7 - 11. Октября 2007 :: 06:58
Печать  
У меня задача такая - При открытии любой формы перехватывать ПриОткрытии.
Методу:
ПерехватитьСобытияГК(ГрупповойКонтекстФормы, ОбъектПользовательскогоКлассаОбработчикаПерехвата)
Нужно передать ГрупповойКонтекст, а где его взять до отработки СтандартногоСобытия ПриОткрытии?
А после его отработки зачем его уже перехватывать?
  
Наверх
wwwICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик. У кого как?
Ответ #8 - 11. Октября 2007 :: 07:18
Печать  
Вот для этого и будет нужен твой класс МойКласс, который перехватил глобальник Улыбка

Процедура ПриОткрытии(Конт)

Только перехватывать надо еще и ВводНового и ВводНаОсновании
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик. У кого как?
Ответ #9 - 11. Октября 2007 :: 07:21
Печать  
  
Наверх
 
IP записан
 
Kran
Junior Member
**
Отсутствует



Сообщений: 51
Местоположение: Волжский Волгоградской обл.
Зарегистрирован: 27. Августа 2007
Пол: Мужской
Re: Перехватчик. У кого как?
Ответ #10 - 11. Октября 2007 :: 08:16
Печать  
Arta писал(а) 11. Октября 2007 :: 07:18:
Вот для этого и будет нужен твой класс МойКласс, который перехватил глобальник Улыбка

Процедура ПриОткрытии(Конт)

Только перехватывать надо еще и ВводНового и ВводНаОсновании


Что-то я туплю:
Я что в глобальнике должен написать?
     Перехватчик.ПерехватитьСобытияГК(МойКласс)?
Но тогда я должен написать КонтекстСюда - где взять?
в классе я написал:
Функция ПриОткрытии(Конт) Экспорт
     Сообщить("Перехватчик - " + Конт.Вид());
     Возврат 1;
КонецФункции

  
Наверх
wwwICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик. У кого как?
Ответ #11 - 11. Октября 2007 :: 09:49
Печать  
Я дал урлу. Там есть пример как можно сделать.



P.S. Это код для класса перехваченного глобальника.
  
Наверх
 
IP записан
 
Kran
Junior Member
**
Отсутствует



Сообщений: 51
Местоположение: Волжский Волгоградской обл.
Зарегистрирован: 27. Августа 2007
Пол: Мужской
Re: Перехватчик. У кого как?
Ответ #12 - 11. Октября 2007 :: 12:34
Печать  
[quote author=Arta link=1192077184/0#11 date=1192096162]Я дал урлу. Там есть пример как можно сделать.



P.S. Это код для класса перехваченного глобальника.[/quote]
Правильно ли я понял из твоего урла, что я должен сделать также как и было, но внутри СобытиеГМ_ПриОткрытии
Прописать перехват еще и просто при открытии. По крайней мере вот этот кусок из урла говорит об этом:

[color=#0000ff]Функция СобытиеГМ_ПриОткрытии(Конт) Экспорт
   Если ПустоеЗначение(Конт) = 0 Тогда
     Перехватчик = СоздатьОбъект("Перехватчик");
     ПерехватчикСобытий = Перехватчик.ПолучитьПерехватчикСобытийГК(Конт);
     Если ПустоеЗначение(ПерехватчикСобытий) = 1 Тогда
        РасширениеФормы = СоздатьОбъект("РасширениеФормы");
        РасширениеФормы.УстановитьФорму(Конт.Форма);
        ПолныйТипОбъекта = РасширениеФормы.ПолныйТипОбъекта();

        Если ПолныйТипОбъекта = "Документ.Ваш_документ.Форма" Тогда
           ПерехватчикСобытий = СоздатьОбъект("Класс_перехвата_вашей_формы");
        Иначе
           ПерехватчикСобытий = СоздатьОбъект("ПерехватчикиСобытийФормы"); //мой класс перехвата
        КонецЕсли;
        ПерехватчикСобытий.Инициализация(Конт);
     КонецЕсли;
   КонецЕсли;
   Возврат 1;
КонецФункции[/color]
  
Наверх
wwwICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик. У кого как?
Ответ #13 - 11. Октября 2007 :: 12:41
Печать  
Ох...
Если у тебя один класс на все формы, то в классе перехваченного глобальника (он уже у тебя есть) делаешь:

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



и делаешь класс "ПерехватчикиСобытийФормы", в котором делаешь все свои безобразия. Хоть ПриОткрытии перехватывай, хоть ПриНажатииКлавиатуры...
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик. У кого как?
Ответ #14 - 11. Октября 2007 :: 12:45
Печать  
А вообще - правильной дорогой идете товарисч! Улыбка
Как понравится - за уши не оттянешь от Перехатчика Улыбка
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 3 ... 5
ОтправитьПечать