Переключение на Главную Страницу Страницы: [1] 2 3 ... 11 ОтправитьПечать
Очень популярная тема (более 25 ответов) Перехватчик. Для каких событий необходим ручной вызов оригинального? (число прочтений - 71197 )
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Перехватчик. Для каких событий необходим ручной вызов оригинального?
25. Ноября 2010 :: 09:08
Печать  
Начал работать с перехватчиком и словил немало сюрпризов.
Понял, что для некоторых событий просто необходимо из обработчика вызывать оригинальное, а для некоторых это противопоказано, например: СобытиеГМ_ВводНаОсновании:
  • если вызвать событие в обработчике - док отработает его дважды
  • попытка вызвать и вернуть 0 - отменяет событие
  • остается только контроллировать и позволять 1С-ке отработать событие самой

Потому хотелось бы найти где-то развернутую информацию о том, какие события как себя ведут, и как их надо обрабатывать.

Пока не понял, почему, но перестал работать пункт действий документа "Открыть в журнале" - журнал открывается, отладка кажет нормальную работу, но позиционирования не происходит, хотя параметр доходит верный...
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Перехватчик. Для каких событий необходим ручной вызов оригинального?
Ответ #1 - 25. Ноября 2010 :: 09:31
Печать  
Как проверил, что 2-ды отрабатывает ?
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Перехватчик. Для каких событий необходим ручной вызов оригинального?
Ответ #2 - 25. Ноября 2010 :: 09:36
Печать  
Eprst писал(а) 25. Ноября 2010 :: 09:31:
Как проверил, что 2-ды отрабатывает ?

Оно спрашивало разрешения на удаление строк. стал отладкой ловить, почему - выявил двойное выполнение метода ВводНаОсновании. При первом проходе док только создан, а при втором уже заполнен.

Это же касается и событий ВводНового и ПриОткрытии.
  
Наверх
 
IP записан
 
avgreen
Senior Member
****
Отсутствует



Сообщений: 254
Местоположение: Украина, Кривой Рог
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Перехватчик. Для каких событий необходим ручной вызов оригинального?
Ответ #3 - 25. Ноября 2010 :: 09:41
Печать  
Dmitry The Wing писал(а) 25. Ноября 2010 :: 09:08:
Начал работать с перехватчиком и словил немало сюрпризов.
Понял, что для некоторых событий просто необходимо из обработчика вызывать оригинальное, а для некоторых это противопоказано, например: СобытиеГМ_ВводНаОсновании:


Стоп! А почему "СобытиеГМ_ВводНаОсновании" а не "СобытиеГК_ВводНаОсовании"?
artbear советовал заменить все три события глобального модуля "ВводНового", "ПриОткрытии" и "ВводНаОсновании" на одно "СобытиеГМ_СозданиеКонтекста" и использовать его только для перехвата ГлобальногоКонтекста, а дальше уже работать с ПерехватчикомГК и не трогать ГМ
  
Наверх
ICQ  
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Перехватчик. Для каких событий необходим ручной вызов оригинального?
Ответ #4 - 25. Ноября 2010 :: 09:48
Печать  
Воспользовался советом. Убрал из перехватчика эти методы, однако что-то все еще мешает позиционированию в журнале ...

Еще проблема:
Перехватчик.ВыполнитьОригинальноеСобытиеГК(КонтОбъекта, "ПриОткрытии");
не отработает, если в форме у процедуры ПриОткрытии есть параметр... Как лечить? И как определить, что параметр надо передавать? и что он был передан?

А если его не вызвать - событие в форму не придет...
  
Наверх
 
IP записан
 
avgreen
Senior Member
****
Отсутствует



Сообщений: 254
Местоположение: Украина, Кривой Рог
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Перехватчик. Для каких событий необходим ручной вызов оригинального?
Ответ #5 - 25. Ноября 2010 :: 11:38
Печать  
Dmitry The Wing писал(а) 25. Ноября 2010 :: 09:48:
Воспользовался советом. Убрал из перехватчика эти методы, однако что-то все еще мешает позиционированию в журнале ...
Цитата:
Пока не понял, почему, но перестал работать пункт действий документа "Открыть в журнале" - журнал открывается, отладка кажет нормальную работу, но позиционирования не происходит, хотя параметр доходит верный...


А где этот пункт? В меню "Действия" не нашел. Или у тебя собственное "МенюДействийДокумента"? Тогда ничем помочь не могу т.к. для этого нужно увидеть его код.

Dmitry The Wing писал(а) 25. Ноября 2010 :: 09:48:
Еще проблема:
Перехватчик.ВыполнитьОригинальноеСобытиеГК(КонтОбъекта, "ПриОткрытии");
не отработает, если в форме у процедуры ПриОткрытии есть параметр... Как лечить? И как определить, что параметр надо передавать? и что он был передан?

А если его не вызвать - событие в форму не придет...

А где этот параметр есть? У Отчета небось? У меня  для Отчетов/Обработок свой класс-перехватчик, наследник основного перехватчика. Вот комментарий в его модуле:
Код
Выбрать все
// Создан и унаследован от ПерехватчикСобытий только для переопределения методов Событие_ПриОткрытии() и Событи_ВводНового()
// Первый из них имеет параметр "ФлагЧтенияНастроек" которого нету и Документов, Справочников, Журналов и др форм
// А для второго не должно вызываться оригинальное событие, т.к. его для отчетов просто нету....(avgreen)
 


А при инициализации Перехватчика (ПриСозданииКонтекста) я анализирую что мы перехватили следующим образом
Код
Выбрать все
	Если (ФормаРасш.ТипОбъекта() = "ВнешнийОтчет") Тогда
		//Сообщить("ВнешнийОтчет" + СокрЛП());
		НазваниеКлассаПерехватчика = "ПерехватчикСобытийОтчет";
		//Возврат 1;
	ИначеЕсли (ФормаРасш.ТипОбъекта() = "Отчет") Или (ФормаРасш.ТипОбъекта() = "Обработка") ИЛИ (ФормаРасш.ТипОбъекта() = "ВнешнийОтчет") Тогда
		НазваниеКлассаПерехватчика = "ПерехватчикСобытийОтчет";
	ИначеЕсли ФормаРасш.ТипОбъекта() = "Справочник" Тогда
		НазваниеКлассаПерехватчика = "ПерехватчикСобытийСпр";
	Иначе
		НазваниеКлассаПерехватчика = ТипЗначенияСтр(Сам());
	КонецЕсли;
	ПерехватчикСобытий = СоздатьОбъект(НазваниеКлассаПерехватчика);
	ПерехватчикСобытий.Инициализация(КонтФормы);
 



У Справочников кстати свои заморочки - с событием ПриЗаписи. Вот комментарий из класса ПерехватичикСобытийСпр
Код
Выбрать все
// Создан и унаследован от ПерехватчикСобытий только для переопределения единственного метода Событие_ПриЗаписи()
// Причина - для справочников, предопредеоенная процедура ПриЗаписи(), которую собственно и перехватывает Событие_ПриЗаписи()
// имеет один параметр СписокПериодическихРекв, а для Документа, Операции и т.п. этого параметра нету. И если
// попытаться перехватить запись Документа Событием_ПриЗаписи с параметром то 1С падает нафиг, причем не успев даже ругануться
// (что в принципе и не удивительно). Определить-же метод Событие_ПриЗаписи как метод с неопределенным количеством параметров
// и потом вызвать Сам().ПолучитьСписокПараметров("Событие_ПриЗаписи") у меня почему-то не получилось....
// Вот и пришлось так извратиться! Походу пришлось экспортнуть из родительского класса свойство КонтекстПерехваченнойФормы
// (avgreen)
 



Надеюсь достаточно исчерпывающий ответ? Не осталось "граблей на которые не ступала нога человека"?  Смех
  
Наверх
ICQ  
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Перехватчик. Для каких событий необходим ручной вызов оригинального?
Ответ #6 - 26. Ноября 2010 :: 02:10
Печать  
avgreen писал(а) 25. Ноября 2010 :: 11:38:
Dmitry The Wing писал(а) 25. Ноября 2010 :: 09:48:
Воспользовался советом. Убрал из перехватчика эти методы, однако что-то все еще мешает позиционированию в журнале ...
Цитата:
Пока не понял, почему, но перестал работать пункт действий документа "Открыть в журнале" - журнал открывается, отладка кажет нормальную работу, но позиционирования не происходит, хотя параметр доходит верный...


А где этот пункт? В меню "Действия" не нашел. Или у тебя собственное "МенюДействийДокумента"? Тогда ничем помочь не могу т.к. для этого нужно увидеть его код.

Почему-то был уверен, что этот пункт есть во всех типовых (в ПУБ в каждом документе есть кнопка Действия).
Код там простой - выпадающий список значений, содержащий для каждого документа свой набор действий, но 4 из них постоянны - это:
  • Структура подчиненности
  • Отчет о движениях документа
  • Ввести на основании
  • Открыть в журнале
Разговор о последнем. Код обработки лежит в глобальнике
Код
Выбрать все
Если Конт.Выбран() = 0 Тогда
	Предупреждение("Документ не записан!");
Иначе
	ДокументЖурнала = Конт.ТекущийДокумент();
	ОткрытьФорму("Журнал.Общий#", ДокументЖурнала);
КонецЕсли; 


В самом журнале (форма списка) в ПриОткрытии производится позиционирование с помощью АктивизироватьОбъект(Форма.Параметр);
Отладка показала, что вызов проходит и параметр верный, но позиционирования нет  Злой


avgreen писал(а) 25. Ноября 2010 :: 11:38:
Dmitry The Wing писал(а) 25. Ноября 2010 :: 09:48:
Еще проблема:
Перехватчик.ВыполнитьОригинальноеСобытиеГК(КонтОбъекта, "ПриОткрытии");
не отработает, если в форме у процедуры ПриОткрытии есть параметр... Как лечить? И как определить, что параметр надо передавать? и что он был передан?

А если его не вызвать - событие в форму не придет...

А где этот параметр есть? У Отчета небось? У меня  для Отчетов/Обработок свой класс-перехватчик, наследник основного перехватчика. Вот комментарий в его модуле: #
А при инициализации Перехватчика (ПриСозданииКонтекста) я анализирую что мы перехватили следующим образом #

У Справочников кстати свои заморочки - с событием ПриЗаписи. Вот комментарий из класса ПерехватичикСобытийСпр
#

Надеюсь достаточно исчерпывающий ответ? Не осталось "граблей на которые не ступала нога человека"?  Смех


К сожалению, недостаточно.
С методами ВводНового и ВводНаОсновании все просто - по типу объекта легко определить параметры, ибо они предопределены, либо отсутствуют (для отчетов).
А вот ПриОткрытии может иметь любое число параметров ... во всех отчетах по регистрам в типовой ПУБ есть как минимум 1 параметр - флаг восстановления настроек.

Проблема не в том, чтобы определить тип объекта и выбрать нужный класс перехватчик, а в разработке глобальной фабрики событий, позволяющей регистрировать более одного перехватчика на одно событие. все прекрасно работает со стандартными функциями, но ломается на ПриОткрытии (думаю, найдутся и другие).

Потому вопрос в том, как определить число параметров и их значения при перехвате, остается открытым!


Дальнейшие эксперименты показали: при отсутствии перехвата события формы Событие_ПриИзмененииРазмераОкна позиционирование проходит на ура. При использовании перехвата - нет.
Перехват реализован
Код
Выбрать все
Функция Событие_ПриИзмененииРазмераОкна(ТипСобытия, Ширина, Высота) Экспорт
	Сам = Сам(Контекст);
	Рез = 1;
	КонтОбъекта = Сам.ПолучитьКонтекстОкружения();
	Если ТипЗначенияСтр(КонтОбъекта) <> "ГрупповойКонтекст" Тогда
		Если ТипЗначенияСтр(КонтФормы) = "ГрупповойКонтекст" Тогда
			КонтОбъекта = КонтФормы;
		Иначе
			Возврат Рез;
		КонецЕсли;
	КонецЕсли;

	//Здесь будет что-то делаться

	Если Рез > 0 Тогда
		Перехватчик = СоздатьОбъект("Перехватчик");
		Рез = Перехватчик.ВыполнитьОригинальноеСобытиеГК(КонтОбъекта, "ПриИзмененииРазмераОкна", ТипСобытия, Ширина, Высота);
	КонецЕсли;

	Возврат Рез;
КонецФункции // Событие_ПриИзмененииРазмераОкна 

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



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Перехватчик. Для каких событий необходим ручной вызов оригинального?
Ответ #7 - 26. Ноября 2010 :: 05:54
Печать  
Дык ты всегда в конце вызывай оригинальное событие и привет - и будет тебе счастье.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик. Для каких событий необходим ручной вызов оригинального?
Ответ #8 - 26. Ноября 2010 :: 05:54
Печать  
Dmitry The Wing писал(а) 26. Ноября 2010 :: 02:10:
А вот ПриОткрытии может иметь любое число параметров ... во всех отчетах по регистрам в типовой ПУБ есть как минимум 1 параметр - флаг восстановления настроек.

Потому вопрос в том, как определить число параметров и их значения при перехвате, остается открытым!

Для отчетов/обработок ты можешь вызывать оригинальное событие, указав один доп.параметр. При этом не важно, есть ли у обработчика этого события этот параметр или нет, обработчик все равно будет вызван.
А вот для других форм нельзя указать доп.параметр.
Все это следует из реализации события ПриОткрытия штатным 1С.

ЗЫ перехватчик не добавляет параметры к родным событиям 1С и различных ВК!
  

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



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик. Для каких событий необходим ручной вызов оригинального?
Ответ #9 - 26. Ноября 2010 :: 07:48
Печать  
сначала у меня тоже возникал вопрос с кол-вом параметров у разных типов объектов, потом подсмотрел код у более грамотных людей и теперь у меня примерно вот так:
Код
Выбрать все
//============================выполняет оригинальные события Контекста или ГМ и далее вызывает выполнение всех подписчиков
Функция ВыполнитьСобытиеКонт(ИмяСобытия, флГлобальное, асПараметры="", МенеджерСобытий, ПараметрыМенеджера="")
	Перехватчик = Перехватчик();

	ВЗ = 1;
	Если флГлобальное=1 Тогда
		Если Врег(Лев(ИмяСобытия,10))=Врег("СобытиеГМ_") Тогда
			ИмяСобытия = Сред(ИмяСобытия,11);
		КонецЕсли;
		ВЗ = ъекта", "обБлокировки");
		Если ВЗ=0 Тогда
			Возврат 0;
		КонецЕсли;
	Иначе
		Если Врег(Лев(ИмяСобытия,8))=Врег("Событие_") Тогда
			ИмяСобытия = Сред(ИмяСобытия,9);
		КонецЕсли;

		Если ПустоеЗначение(асПараметры)=0 Тогда
			//асПараметры //:АссоциативныйВектор
			КолПараметров = асПараметры.Количество();
			Если КолПараметров=0 Тогда
				ВЗ = Перехватчик.ВыполнитьОригинальноеСобытиеГК(КонтекстФормы,ИмяСобытия);
			ИначеЕсли КолПараметров=1 Тогда
				ВЗ = Перехватчик.ВыполнитьОригинальноеСобытиеГК(КонтекстФормы,ИмяСобытия, асПараметры.Получить(0));
			ИначеЕсли КолПараметров=2 Тогда
				ВЗ = Перехватчик.ВыполнитьОригинальноеСобытиеГК(КонтекстФормы,ИмяСобытия, асПараметры.Получить(0), асПараметры.Получить(1));
			ИначеЕсли КолПараметров=3 Тогда
				ВЗ = Перехватчик.ВыполнитьОригинальноеСобытиеГК(КонтекстФормы,ИмяСобытия, асПараметры.Получить(0), асПараметры.Получить(1), асПараметры.Получить(2));
			ИначеЕсли КолПараметров=4 Тогда
				ВЗ = Перехватчик.ВыполнитьОригинальноеСобытиеГК(КонтекстФормы,ИмяСобытия, асПараметры.Получить(0), асПараметры.Получить(1), асПараметры.Получить(2), асПараметры.Получить(3));
			ИначеЕсли КолПараметров=5 Тогда
				ВЗ = Перехватчик.ВыполнитьОригинальноеСобытиеГК(КонтекстФормы,ИмяСобытия, асПараметры.Получить(0), асПараметры.Получить(1), асПараметры.Получить(2), асПараметры.Получить(3), асПараметры.Получить(4));
			ИначеЕсли КолПараметров=6 Тогда
				ВЗ = Перехватчик.ВыполнитьОригинальноеСобытиеГК(КонтекстФормы,ИмяСобытия, асПараметры.Получить(0), асПараметры.Получить(1), асПараметры.Получить(2), асПараметры.Получить(3), асПараметры.Получить(4), асПараметры.Получить(5));
			ИначеЕсли КолПараметров=7 Тогда
				ВЗ = Перехватчик.ВыполнитьОригинальноеСобытиеГК(КонтекстФормы,ИмяСобытия, асПараметры.Получить(0), асПараметры.Получить(1), асПараметры.Получить(2), асПараметры.Получить(3), асПараметры.Получить(4), асПараметры.Получить(5), асПараметры.Получить(6));
			КонецЕсли;
		Иначе
			ВЗ = Перехватчик.ВыполнитьОригинальноеСобытиеГК(КонтекстФормы,ИмяСобытия);
		КонецЕсли;
	КонецЕсли;

	ВЗ = ВЗ * ВыполнитьСобытиеМенеджеров(МенеджерСобытий, ПараметрыМенеджера);

	Возврат ВЗ;
КонецФункции // ВыполнитьСобытиеКонт

//*****************************************************
Функция Событие_ПриОткрытии(ФлагЧтенияНастройки) Экспорт
	//ТипОбъекта = РасширениеФормы.ТипОбъекта()
	Параметры = СоздатьОбъект("АссоциативныйВектор");
	ЕстьПараметры			= ?(Найти("|ВнешнийОтчет|Обработка|Отчет|","|"+ТипОбъекта+"|")=0,0,1);
	Если ЕстьПараметры=1 Тогда
		Параметры.Добавить(ФлагЧтенияНастройки);
	Иначе
	КонецЕсли;
	Менеджер = ДобавитьМенеджераСобытий(МенеджерСобытий() ,"ЛоггированиеИзменений", "Событие_ПриОткрытии");
	Возврат ВыполнитьСобытиеКонт("Событие_ПриОткрытии", 0, Параметры, Менеджер, Параметры);
КонецФункции// Событие_ПриОткрытии 

  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Перехватчик. Для каких событий необходим ручной вызов оригинального?
Ответ #10 - 29. Ноября 2010 :: 02:55
Печать  
JohnyDeath, все бы хорошо, но 1С не запрещает добавлять свои параметры в предопределенные функции.
Для большинства и типовых отчетов это сработает (спасибо, взял на заметку), но что если параметров будет больше?
Нужно все-таки найти способ определения числа параметров.
Сам добавлял в документах параметры в метод ПриЗаписи ... думаю, и в других найдется.

Кроме того, если перехват события используется - то вне зависимости от того, будет класс что-то делать или нет, вызвать родное событие необходимо, а это невозможно при отсутствии информации о числе параметров...
« Последняя редакция: 29. Ноября 2010 :: 05:00 - Dmitry The Wing »  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик. Для каких событий необходим ручной вызов оригинального?
Ответ #11 - 29. Ноября 2010 :: 06:08
Печать  
Предопределенных событий не сильно много, а предопределенных с разным количеством параметров еще меньше. Поэтому один раз описать все ситуации не составит большого труда. Тем более сейчас тебе нужны не все события.
ПриЗаписи у меня реализовано аналогично:
Код
Выбрать все
//======================================================================
Функция Событие_ПриЗаписи(СписокПериодРекв) Экспорт
	//Сообщить("Зашли в при записи ");
	Параметры = СоздатьОбъект("АссоциативныйВектор");
	ЕстьПараметры		= ?(Найти("|ПланСчетов|Справочник|","|"+ТипОбъекта+"|")=0,0,1);
	Если ЕстьПараметры=0 Тогда
	Иначе
		Параметры.Добавить(СписокПериодРекв);
	КонецЕсли;
	Менеджер = ДобавитьМенеджераСобытий(МенеджерСобытий() ,"ЛоггированиеИзменений", "Событие_ПриЗаписи");
	Возврат ВыполнитьСобытиеКонт("Событие_ПриЗаписи", 0,Параметры,Менеджер,Параметры);
КонецФункции // Событие_ПриЗаписи 

  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Перехватчик. Для каких событий необходим ручной вызов оригинального?
Ответ #12 - 29. Ноября 2010 :: 06:13
Печать  
У меня ПриЗаписи примерно так же описано сейчас (в копии), но я точно знаю, что есть документы, где ПриЗаписи имеет 2 параметра... т.е. совсем нестандартное поведение документа ... именно потому я ищу способ определить количество параметров, чтобы не бояться всяких непредвиденных вариантов (заранее можно описать, например, 3-5 параметров, но передавать столько, сколько описано в форме).
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик. Для каких событий необходим ручной вызов оригинального?
Ответ #13 - 29. Ноября 2010 :: 06:46
Печать  
Dmitry The Wing писал(а) 29. Ноября 2010 :: 06:13:
но я точно знаю, что есть документы, где ПриЗаписи имеет 2 параметра... т.е. совсем нестандартное поведение документа ...

1. Пример таких документов в студию, слабо верится Печаль
2. Каким образом вызывается данное событие? системой/1С или вручную, пользовательским кодом?

Dmitry The Wing писал(а) 29. Ноября 2010 :: 06:13:
именно потому я ищу способ определить количество параметров, чтобы не бояться всяких непредвиденных вариантов (заранее можно описать, например, 3-5 параметров, но передавать столько, сколько описано в форме).

Встроенный класс Информатор из 1С++ поможет Улыбка
  

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



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик. Для каких событий необходим ручной вызов оригинального?
Ответ #14 - 29. Ноября 2010 :: 07:00
Печать  
Мне тоже интересен документ с двумя параметрами.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 3 ... 11
ОтправитьПечать