Переключение на Главную Страницу Страницы: 1 2 [3] 4 5 ... 9 ОтправитьПечать
Очень популярная тема (более 25 ответов) СтатусВозврата в классе "Перехватчик" (число прочтений - 43228 )
Chieftain
Senior Member
****
Отсутствует


___

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

КонтФормы=Сам(Контекст).ПолучитьКонтекстОкружения();
ОбъектПерехватчик=СоздатьОбъект("Перехватчик");
ОбъектПерехватчик.ПерехватитьСобытияГК(КонтФормы,Сам(Контекст));
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: СтатусВозврата в классе "Перехватчик"
Ответ #31 - 22. Марта 2007 :: 13:27
Печать  
Ну вот что тебе мешает сделать простую конфу, в которой один справочник и один класс. В глобальнике прописано открытие формы списка справочника.
В этом случае все будет просто и ясно.
Я смогу четко увидеть, в чем твоя или моя Печаль ошибка.

Сделай, плиз, клещами ведь код из тебя тянуть не хочется Улыбка
  

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: СтатусВозврата в классе "Перехватчик"
Ответ #32 - 22. Марта 2007 :: 13:27
Печать  
Ладно, ща нарисую
  
Наверх
ICQ  
IP записан
 
Chieftain
Senior Member
****
Отсутствует


___

Сообщений: 498
Местоположение: Тула
Зарегистрирован: 15. Февраля 2007
Пол: Мужской
Re: СтатусВозврата в классе "Перехватчик"
Ответ #33 - 22. Марта 2007 :: 14:00
Печать  
Сделал пустую конфу - тока хуже стало  Печаль
Вообще не отрабатывает Возврат 1/0


ЗЫ если в теле модуля формы поставить СтатусВозврата(1), тогда нормально отрабатывают дальнейшее изменение статуса из класса...
  

Test_001.rar ( 15 KB | Загрузки )
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: СтатусВозврата в классе "Перехватчик"
Ответ #34 - 23. Марта 2007 :: 04:31
Печать  
Chieftain писал(а) 22. Марта 2007 :: 10:11:
Так вот - форма не открывается, если процедура "ПриОткрытии" в форме пустая

Не подтверждаю, все работает.
Форма
Код
Выбрать все
Процедура ПриОткрытии(УровеньДоступа)
КонецПроцедуры	// ПриОткрытии
 


Класс
Код
Выбрать все
Функция ПриОткрытии() Экспорт
	Сообщить("ПриОткрытии");

	СписПарам			= СоздатьОбъект("СписокЗначений");
	СписПарам.ДобавитьЗначение("ВсеМожно");
	Сам(Контекст).ВызватьОригинальноеСобытиеГК(КонтФормы,"ПриОткрытии",СписПарам);
	Возврат 1;
КонецФункции
 


Все нормально открывается вне зависимости от наличия/присутствия/заполненности метода ПриОткрытии в модуле формы.
  

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: СтатусВозврата в классе "Перехватчик"
Ответ #35 - 23. Марта 2007 :: 05:06
Печать  
Нашел - неверное значение СтатусВозврата() возвращает, если в классе есть обработчик события ПриЗакрытии Печаль
Если же его нет, при первом открытии формы элемента СтатусВозврата неверный, а при последующих все ок = 1.

Буду править.
  

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: СтатусВозврата в классе "Перехватчик"
Ответ #36 - 23. Марта 2007 :: 05:27
Печать  
Исправил баг.
Будет завтра в ночной сборке.

ЗЫ (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: СтатусВозврата в классе "Перехватчик"
Ответ #37 - 23. Марта 2007 :: 06:41
Печать  
Радует оперативность. Спасибо

ЗЫ Попробовал без перехвата "ПриЗакрытии" - точно работает
  
Наверх
ICQ  
IP записан
 
Chieftain
Senior Member
****
Отсутствует


___

Сообщений: 498
Местоположение: Тула
Зарегистрирован: 15. Февраля 2007
Пол: Мужской
Re: СтатусВозврата в классе "Перехватчик"
Ответ #38 - 23. Марта 2007 :: 08:51
Печать  
Э... рано обрадовался - все равно не каждый раз срабатывает...

При перезапуске 1С то работает, то нет...
Или при открытии элемента справочника несколько раз не отработает, а потом все нормально...

Ладно, буду ждать ночную сборку
  
Наверх
ICQ  
IP записан
 
Chieftain
Senior Member
****
Отсутствует


___

Сообщений: 498
Местоположение: Тула
Зарегистрирован: 15. Февраля 2007
Пол: Мужской
Re: СтатусВозврата в классе "Перехватчик"
Ответ #39 - 23. Марта 2007 :: 11:09
Печать  
Еще одна непонятка:

В файле реализации класса:
   Функция ВводНового(Скопирован) Экспорт
     СписПарам                  = СоздатьОбъект("СписокЗначений");
     СписПарам.ДобавитьЗначение(Скопирован);
     Сам(Контекст).ВызватьОригинальноеСобытиеГК(КонтФормы,"ВводНового",СписПарам);
        Возврат 1;
   КонецФункции      // ВводНового

В форме элемента справочника:
   Процедура ВводНового(Скопирован)
     Сообщить("Вводим новый:"+СтатусВозврата());
   КонецПроцедуры      // ВводНового


В окне сообщений при вводе нового элемента:
   Вводим новый:150994950

Или какие-нибудь другие циферки
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: СтатусВозврата в классе "Перехватчик"
Ответ #40 - 23. Марта 2007 :: 12:02
Печать  
Все эти баги исправлены, как я уже сказал.
Жди завтра.
  

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: СтатусВозврата в классе "Перехватчик"
Ответ #41 - 26. Марта 2007 :: 06:28
Печать  
artbear писал(а) 23. Марта 2007 :: 12:02:
Все эти баги исправлены, как я уже сказал.
Жди завтра.


Подтверждаю: описанных багов нет.

Появился вопросик - скорее не по перехватчику, а по видмости переменных:
В тестовой конфе в форме определялась переменная "СервисФормы", которая в теле модуля определялась черех "СоздатьОбъект".

Так вот при удалении строки "Перем СервисФормы;" переменая, вроде, не должна быть доступна из других процедур и тем более извне.
Но к ней можно обращаться (хотя и синтаксический контроль не пройдет).
Как относиться к такому поведению - можно использовать, или есть вероятность, что такое поведение будет устранено?
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

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

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: СтатусВозврата в классе "Перехватчик"
Ответ #43 - 26. Марта 2007 :: 07:05
Печать  
Ясно. Уже сделал через "ПолучитьПерехватчикСобытийГК".
Просто хочу вынести назначение перехвата в единое место, чтобы не править модули MD.

Еще вопрос.
Есть ли возможность сделать процедуру типа "ПриИнициализацииФормы", чтобы назначить перехват уже при инициализации.
И в какой момент срабатывает перехват "СобытиеГМ_ПриОткрытии(КонтФормы)" - не пойдет она в такой роли?
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: СтатусВозврата в классе "Перехватчик"
Ответ #44 - 26. Марта 2007 :: 07:42
Печать  
Chieftain писал(а) 26. Марта 2007 :: 07:05:
И в какой момент срабатывает перехват "СобытиеГМ_ПриОткрытии(КонтФормы)" - не пойдет она в такой роли?

Это событие как раз для этой цели и предназначено.
Фактически это перехват события ПриОткрытии для обычного контекста.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1 2 [3] 4 5 ... 9
ОтправитьПечать