Переключение на Главную Страницу Страницы: 1 [2] 3 4 ... 9 ОтправитьПечать
Очень популярная тема (более 25 ответов) СтатусВозврата в классе "Перехватчик" (число прочтений - 43238 )
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: СтатусВозврата в классе "Перехватчик"
Ответ #15 - 21. Марта 2007 :: 14:47
Печать  
да, именно.
Как видишь, все просто.
  

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: СтатусВозврата в классе "Перехватчик"
Ответ #16 - 22. Марта 2007 :: 06:42
Печать  
Тогда спасибо за доработку
  
Наверх
ICQ  
IP записан
 
Chieftain
Senior Member
****
Отсутствует


___

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

Короче на последней ночной сборке начал переделывать класс перехватчика для форм справочников и документов. Со статусом возврата все работает на ура, но есть один момент:

в форме существует процедура "ПриОткрытии"
в классе существует функция "ПриОткрытии", в которой вызывается процедура формы:

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

Так вот - форма не открывается, если процедура "ПриОткрытии" в форме пустая, но срабатывает при таком коде:

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: СтатусВозврата в классе "Перехватчик"
Ответ #18 - 22. Марта 2007 :: 11:44
Печать  
Не верю Печаль
Тест давай.
Мои тесты как раз работают с событием "ПриОткрытии"
  

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: СтатусВозврата в классе "Перехватчик"
Ответ #19 - 22. Марта 2007 :: 11:46
Печать  
Chieftain писал(а) 22. Марта 2007 :: 10:11:
 СписПарам.ДобавитьЗначение(УровеньДоступа);

Это зачем?
Событие "ПриОткрытии" может принимать всего 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: СтатусВозврата в классе "Перехватчик"
Ответ #20 - 22. Марта 2007 :: 12:13
Печать  
В классе производится контроль доступа к объектам.
Если доступ полностью не закрыт в процедуру "ПриОткрытии" передается "Предопределенный" параметр - уровень доступа к объекту.
А там уже анализируется для запрета к реквизитам окна
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: СтатусВозврата в классе "Перехватчик"
Ответ #21 - 22. Марта 2007 :: 12:15
Печать  
1) Различные параметры в форму передаются через Конт.Форма.Параметр и никак иначе !

2) Тест давай !
Иначе никак не помогу Печаль
  

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: СтатусВозврата в классе "Перехватчик"
Ответ #22 - 22. Марта 2007 :: 12:41
Печать  
В форме элемента или списка справочника:

// При открытии формы
Процедура ПриОткрытии(УровеньДоступа)
КонецПроцедуры      // ПриОткрытии

В модуле реализации класса

Функция ПриОткрытии() Экспорт
   //УровеньДоступа      = "Запрещено";
   УровеньДоступа      = "Разрешено";
   Если Врег(УровеньДоступа)="ЗАПРЕЩЕНО" Тогда
     Возврат 0;
   КонецЕсли;
   // Вызовем оригинальную процедуру
   СписПарам                  = СоздатьОбъект("СписокЗначений");
   СписПарам.ДобавитьЗначение(УровеньДоступа);
   Сам(Контекст).ВызватьОригинальноеСобытиеГК(КонтФормы,"ПриОткрытии",СписПарам);
   Возврат 1;
КонецФункции
  
Наверх
ICQ  
IP записан
 
Chieftain
Senior Member
****
Отсутствует


___

Сообщений: 498
Местоположение: Тула
Зарегистрирован: 15. Февраля 2007
Пол: Мужской
Re: СтатусВозврата в классе "Перехватчик"
Ответ #23 - 22. Марта 2007 :: 12:43
Печать  
То есть если в форму уже передается параметр, то туда уже ничего не засунешь.
Причем если делать через "ВыполняемыйМодуль.ВыполнитьПроцедуруКонтекста" то ни разу не вылетало, а при "ВызватьОригинальноеСобытиеГК" вылетает через раз
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: СтатусВозврата в классе "Перехватчик"
Ответ #24 - 22. Марта 2007 :: 12:47
Печать  
artbear писал(а) 22. Марта 2007 :: 12:15:
1) Различные параметры в форму передаются через Конт.Форма.Параметр и никак иначе !

Еще раз изучи - это стандартное поведение 1С и его никто не менял !!
  

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: СтатусВозврата в классе "Перехватчик"
Ответ #25 - 22. Марта 2007 :: 12:49
Печать  
А разница между вызовами "ВызватьОригинальноеСобытиеГК" и "ВыполнитьПроцедуруКонтекста" существенная?

Вернее - при вызове "ВызватьОригинальноеСобытиеГК" 1С считает, что это предопределенная процедура?
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: СтатусВозврата в классе "Перехватчик"
Ответ #26 - 22. Марта 2007 :: 12:50
Печать  
И еще - как ты устанавливаешь перехват на конкретную форму?
В каком месте?
  

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: СтатусВозврата в классе "Перехватчик"
Ответ #27 - 22. Марта 2007 :: 12:53
Печать  
Chieftain писал(а) 22. Марта 2007 :: 12:49:
А разница между вызовами "ВызватьОригинальноеСобытиеГК" и "ВыполнитьПроцедуруКонтекста" существенная?

Вернее - при вызове "ВызватьОригинальноеСобытиеГК" 1С считает, что это предопределенная процедура?

1) "ВыполнитьПроцедуруКонтекста" вызовет исключение, если на форме нет обработчика ПриОткрытии, а "ВызватьОригинальноеСобытиеГК" нет.
Т.е для универсальности нужно ставить "ВыполнитьПроцедуруКонтекста" в Попытку-КонецПопытки

2) "ВызватьОригинальноеСобытиеГК" работает только для перехваченных контекстов.
  

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: СтатусВозврата в классе "Перехватчик"
Ответ #28 - 22. Марта 2007 :: 12:53
Печать  
Система простая:
В каждом модуле определяется переменная "СервисФормы" и создается объект в теле модуля: "СервисФормы"=СоздатьОбъект("СервисФормы")

Идет полная замена строки действия формы, т.е. на кнопках формулы типа СервисФормы.ВыполнитьСтрокуДействияФормы("Записать Закрыть")
Также производится контроль прав пользователей и записывается лог изменений в объектах
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: СтатусВозврата в классе "Перехватчик"
Ответ #29 - 22. Марта 2007 :: 13:15
Печать  
Еще раз Печаль
artbear писал(а) 22. Марта 2007 :: 12:50:
И еще - как ты устанавливаешь перехват на конкретную форму?
В каком месте?

Жду ответ.
  

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 ... 9
ОтправитьПечать