Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Перехватчик: ВводНаОсновании, как заменить своим. (число прочтений - 1905 )
classic
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 330
Местоположение: г. Харьков
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Перехватчик: ВводНаОсновании, как заменить своим.
22. Февраля 2010 :: 10:56
Печать  
Дано: есть документы, которые вводятся на основании как пользователем, так и через
ОткрытьФорму();
Требуется - в некоторых случаях заменять процедуру ВводНаОсновании своим кодом. Т. е. когда мне нужно - я хочу, чтобы отработала процедура из класса - перехватчика, а когда не нужно - то, что написано в форме документа.
Перехватчиком можно ловить СобытиеГМ_ВводНаОсновании, там же можно разместить вызовы нужного мне кода. Но как при этом отменить выполнение кода в форме документа? Если возвращать 0 - то ввод на основании вообще не происходит. Если возвращать 1 или сделать СобытиеГМ_ВводНаОсновании процедурой - то выполняется еще и процедура из модуля формы, а она-то мне и не нужна.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик: ВводНаОсновании, как заменить своим.
Ответ #1 - 22. Февраля 2010 :: 15:19
Печать  
Версия 1С++ какая?
Вроде давно этот баг фиксил, еще Arta этот баг заметил.
  

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


I Love YaBB 2!

Сообщений: 330
Местоположение: г. Харьков
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Перехватчик: ВводНаОсновании, как заменить своим.
Ответ #2 - 22. Февраля 2010 :: 15:42
Печать  
Последняя, вроде бы, 3.0.1.26. Так же проверил на 3.0.1.24 - то же самое.
  
Наверх
 
IP записан
 
shmalevoz
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 55
Зарегистрирован: 23. Апреля 2009
Re: Перехватчик: ВводНаОсновании, как заменить своим.
Ответ #3 - 23. Февраля 2010 :: 00:55
Печать  
Можно, как обходной вариант, перехватывать ПослеСозданияФормы, например, и если ДокументОснование.Выбран() = 1 и СсылкаКонтекст.Выбран() = 0, то выполнять свой код.
  
Наверх
 
IP записан
 
classic
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 330
Местоположение: г. Харьков
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Перехватчик: ВводНаОсновании, как заменить своим.
Ответ #4 - 23. Февраля 2010 :: 06:11
Печать  
Мне нужно, обязательно нужно отключать стандартный.
  
Наверх
 
IP записан
 
shmalevoz
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 55
Зарегистрирован: 23. Апреля 2009
Re: Перехватчик: ВводНаОсновании, как заменить своим.
Ответ #5 - 23. Февраля 2010 :: 11:51
Печать  
Тогда по логике должна работать конструкция
Код
Выбрать все
Функция СобытиеГМ_ВводНаОсновании(.....

  _СтатусВозврата = 1;
  ...

  Если ОтключитьСтандарт = 1 Тогда
    _СтатусВозврата = 0;
    ОткрытьФорму(...
  КонецЕсли;

  Возврат _СтатусВозврата;
КонецФункции
 

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


I Love YaBB 2!

Сообщений: 330
Местоположение: г. Харьков
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Перехватчик: ВводНаОсновании, как заменить своим.
Ответ #6 - 23. Февраля 2010 :: 21:42
Печать  
Не понял идеи... Мне нужно отключить стандартный ввод на основании, и заменить его своим.
По твоему коду: если мне нужно отключить стандартный вводНаОсновании, то мне нужно вернуть 0 (стандартный не отработает) и вместо этого вызвать открыть форму? Откроется пустой документ, а как его заполнить? Ловить при открытии?
  
Наверх
 
IP записан
 
shmalevoz
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 55
Зарегистрирован: 23. Апреля 2009
Re: Перехватчик: ВводНаОсновании, как заменить своим.
Ответ #7 - 25. Февраля 2010 :: 02:49
Печать  
Конечно. Тебе же и надо заменить стандартное поведение ввода на основании. В параметрах передавай что необходимо. Что-то вроде
Код
Выбрать все
Параметры = СоздатьОбъект("СписокЗначений");
Параметры.ДобавитьЗначение(ДокОснование, "БывшееОснование");
Параметры.ДобавитьЗначение(1, "НадоПерехватитьПослеСозданияФормы");
ОткрытьФорму("Документ.КаляБаля", Параметры, );
 


И перехватывай любое из событий при открытии документа.
А как заполнить документ - это на твое усмотрение.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать