Переключение на Главную Страницу Страницы: 1 ... 6 7 [8] 9  ОтправитьПечать
Очень популярная тема (более 25 ответов) СтатусВозврата в классе "Перехватчик" (число прочтений - 43265 )
DionX
Senior Member
****
Отсутствует



Сообщений: 373
Местоположение: Кемерово
Зарегистрирован: 22. Августа 2006
Пол: Мужской
Re: СтатусВозврата в классе "Перехватчик"
Ответ #105 - 24. Мая 2007 :: 03:15
Печать  
в КОП есть объект Перехватчик, который перехватывает события док-та и перенаправляет их в этот же КОП.
В модуле КОП есть процедура Событие_ПриОкончанииРедактированияСтроки(НовСтр), в модуле формы документа пред. процедуры ПриОкончанииРедактированияСтроки() нету.
Метод Информатора, созданного в другом КОП, МетодСуществует(Конт,"ПриОкончанииРедактированияСтроки") возвращает 0.
Попытка Конт.ПриОкончанииРедактированияСтроки(1); заканчивается ошибкой. Конт - это контекст документа.
Как быть? Как выполнить пред. процедуру, если она не существует в модуле формы документа, но существует в КОП, перехватывающим события этого документа? При этом в заранее не известно, существует ли процедура в модуле формы док-та или нет.

Несколько сумбурно написал, ечли что не понятно - уточняйте ))))
  
Наверх
ICQ  
IP записан
 
DionX
Senior Member
****
Отсутствует



Сообщений: 373
Местоположение: Кемерово
Зарегистрирован: 22. Августа 2006
Пол: Мужской
Re: СтатусВозврата в классе "Перехватчик"
Ответ #106 - 24. Мая 2007 :: 04:43
Печать  
Пока вышел из положения вот так:
Код
Выбрать все
Если Инф.МетодСуществует(Перехват, "Событие_ПриОкончанииРедактированияСтроки")=1 Тогда
	Перехват.Событие_ПриОкончанииРедактированияСтроки(0);
КонецЕсли;
 


Где Перехват - это контекст КОП, в котором осуществляется перехват событий.
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: СтатусВозврата в классе "Перехватчик"
Ответ #107 - 24. Мая 2007 :: 05:48
Печать  
Для этого нужно прочитать доку и найти там методы Перехватчик::ВыполнитьОригинальноеСобытиеГК
Перехватчик::ВыполнитьОригинальноеСобытиеГМ
которые вызывают метод, если он существует в соответствующем модуле, и ничего не делают, если его нет, и не выдают ошибку при этом!

ЗЫ специально же сделал для обхода ситуации, подобной твоей Улыбка
Информатор здесь не нужен Улыбка
  

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: СтатусВозврата в классе "Перехватчик"
Ответ #108 - 24. Мая 2007 :: 06:27
Печать  
блин, Артур, нафига ты меня постоянно заставляешь читать доку, я не похож на настоящего камикадзе?  Смех

Спасибо
  
Наверх
ICQ  
IP записан
 
DionX
Senior Member
****
Отсутствует



Сообщений: 373
Местоположение: Кемерово
Зарегистрирован: 22. Августа 2006
Пол: Мужской
Re: СтатусВозврата в классе "Перехватчик"
Ответ #109 - 24. Мая 2007 :: 06:31
Печать  
хотя, это, наверное, немного не то...
мне нужно выполнить, если есть, событие описанное в КОП перехватчика и только если его там нет, то выполнить собитие описанное в форме док-та... опять же если оно там есть. И всё это из модуля другого, стороннего КОП (не того, в котором осуществляется перехват событий).
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: СтатусВозврата в классе "Перехватчик"
Ответ #110 - 24. Мая 2007 :: 06:36
Печать  
DionX писал(а) 24. Мая 2007 :: 06:31:
хотя, это, наверное, немного не то...
мне нужно выполнить, если есть, событие описанное в КОП перехватчика и только если его там нет, то выполнить собитие описанное в форме док-та... опять же если оно там есть. И всё это из модуля другого, стороннего КОП (не того, в котором осуществляется перехват событий).

Не понял, давай как-то подробнее, ИМХО странного хочешь Улыбка
  

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: СтатусВозврата в классе "Перехватчик"
Ответ #111 - 24. Мая 2007 :: 06:37
Печать  
Если все-таки хочешь именно этого, тогда только информатор с проверкой по соответствующим методам модуля формы и модуля КОП
  

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


___

Сообщений: 498
Местоположение: Тула
Зарегистрирован: 15. Февраля 2007
Пол: Мужской
Re: СтатусВозврата в классе "Перехватчик"
Ответ #112 - 30. Мая 2007 :: 06:28
Печать  
To artbear

Есть вопрос: можешь сделать, чтобы перехватчик для форм работал не только с предопределенными процедурами, но и с теми, которые определил программист?
Хотелось бы видеть следующее:

На форме есть реквизит "Фирма" у которого прописана формула "ПриВыбореФирмы"
В модуле формы и перехватчике есть процедура "ПриВыбореФирмы"
При выборе значения вызывается процедура ТОЛЬКО из класса
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: СтатусВозврата в классе "Перехватчик"
Ответ #113 - 30. Мая 2007 :: 07:29
Печать  
Не понял - в классе-перехватчике вызывается не предопределенная "ПриВыбореЗначения", а пользовательская "ПриВыбореФирмы" ?
Неужели и такой перехват возможен? Удивил ты меня Улыбка
  

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


___

Сообщений: 498
Местоположение: Тула
Зарегистрирован: 15. Февраля 2007
Пол: Мужской
Re: СтатусВозврата в классе "Перехватчик"
Ответ #114 - 30. Мая 2007 :: 07:30
Печать  
artbear писал(а) 30. Мая 2007 :: 07:29:
Не понял - в классе-перехватчике вызывается не предопределенная "ПриВыбореЗначения", а пользовательская "ПриВыбореФирмы" ?
Неужели и такой перехват возможен? Удивил ты меня Улыбка


Хочется перехват процедуры, вызываемой из реквизита
  
Наверх
ICQ  
IP записан
 
Chieftain
Senior Member
****
Отсутствует


___

Сообщений: 498
Местоположение: Тула
Зарегистрирован: 15. Февраля 2007
Пол: Мужской
Re: СтатусВозврата в классе "Перехватчик"
Ответ #115 - 30. Мая 2007 :: 07:33
Печать  
artbear писал(а) 30. Мая 2007 :: 07:29:
Неужели и такой перехват возможен? Удивил ты меня Улыбка


Я вообще-то считал, что "CBLModule7::ExecProc" вызывается при вызове любой процедуры/функции
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: СтатусВозврата в классе "Перехватчик"
Ответ #116 - 30. Мая 2007 :: 10:27
Печать  
Chieftain писал(а) 30. Мая 2007 :: 07:33:
artbear писал(а) 30. Мая 2007 :: 07:29:
Неужели и такой перехват возможен? Удивил ты меня Улыбка


Я вообще-то считал, что "CBLModule7::ExecProc" вызывается при вызове любой процедуры/функции

нет, только при вызове обработчиков предопределенных процедур.

Кстати, я пока не знаю, каким образом происходит вызов функции из атрибута Печаль
  

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


___

Сообщений: 498
Местоположение: Тула
Зарегистрирован: 15. Февраля 2007
Пол: Мужской
Re: СтатусВозврата в классе "Перехватчик"
Ответ #117 - 30. Мая 2007 :: 10:29
Печать  
Это плохо Печаль
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: СтатусВозврата в классе "Перехватчик"
Ответ #118 - 30. Мая 2007 :: 11:19
Печать  
Точнее так - я знаю, какой внутренний метод вызывается для исполнения формулы атрибута - это CBLModule7::TryEvalExpr.
Но данному методу передается вся строка формулы/выражения.
Поэтому, если в формуле стоит не простое "ПриВыбореФирмы", а что-то более сложное типа "А =0; ПриВыбореФирмы()", то уже нельзя без разбора выражения определить, какую функцию-обработчик нужно вызывать.

Хотя простой вариант обработать не сложно Улыбка
  

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


___

Сообщений: 498
Местоположение: Тула
Зарегистрирован: 15. Февраля 2007
Пол: Мужской
Re: СтатусВозврата в классе "Перехватчик"
Ответ #119 - 30. Мая 2007 :: 11:21
Печать  
artbear писал(а) 30. Мая 2007 :: 11:19:
Точнее так - я знаю, какой внутренний метод вызывается для исполнения формулы атрибута - это CBLModule7::TryEvalExpr.
Но данному методу передается вся строка формулы/выражения.
Поэтому, если в формуле стоит не простое "ПриВыбореФирмы", а что-то более сложное типа "А =0; ПриВыбореФирмы()", то уже нельзя без разбора выражения определить, какую функцию-обработчик нужно вызывать.

Хотя простой вариант обработать не сложно Улыбка


Сделаешь хотя бы такой перехват?
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 6 7 [8] 9 
ОтправитьПечать