Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Очень популярная тема (более 25 ответов) Работа процедуры ПриЗагрузкеФормы (число прочтений - 8084 )
Kran
Junior Member
**
Отсутствует



Сообщений: 51
Местоположение: Волжский Волгоградской обл.
Зарегистрирован: 27. Августа 2007
Пол: Мужской
Работа процедуры ПриЗагрузкеФормы
01. Октября 2007 :: 08:19
Печать  
Версия 1C++ 2.0.3.3 - последняя объединенная с FormEx
Добавил в глобальник:
Процедура ПриЗагрузкеФормы(ИмяОбъекта)
     Если (глПравоДоступа("Чтение", Блабла) = 0) Тогда
           ИмяОбъекта = "Обработка.НетПраваДоступа.Форма";
     КонецЕсли;
КонецПроцедуры

Смотрю в отладчике. В процедуру заходит, Имя объекта переопределяет. Но вот начальная форма открывается, а новая нет. Хотя ждал обратного.
Что не так делаю?
  
Наверх
wwwICQ  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Работа процедуры ПриЗагрузкеФормы
Ответ #1 - 01. Октября 2007 :: 08:48
Печать  
А сама по себе обработка "НетПраваДоступа" открывается?
  

FormEx developer
Наверх
www  
IP записан
 
Kran
Junior Member
**
Отсутствует



Сообщений: 51
Местоположение: Волжский Волгоградской обл.
Зарегистрирован: 27. Августа 2007
Пол: Мужской
Re: Работа процедуры ПриЗагрузкеФормы
Ответ #2 - 01. Октября 2007 :: 08:52
Печать  
Цитата:
А сама по себе обработка "НетПраваДоступа" открывается?

да
  
Наверх
wwwICQ  
IP записан
 
Kran
Junior Member
**
Отсутствует



Сообщений: 51
Местоположение: Волжский Волгоградской обл.
Зарегистрирован: 27. Августа 2007
Пол: Мужской
Re: Работа процедуры ПриЗагрузкеФормы
Ответ #3 - 01. Октября 2007 :: 08:56
Печать  
Цитата:
А сама по себе обработка "НетПраваДоступа" открывается?

Я еще на всякий случай вставил в процедуру:
Если ИмяОбъекта = "Обработка.НетПраваДоступа.Форма" Тогда
     Возврат;
КонецЕсли;
Отладчиком смотрю - при открытии обработки, сюда заходит
  
Наверх
wwwICQ  
IP записан
 
Kran
Junior Member
**
Отсутствует



Сообщений: 51
Местоположение: Волжский Волгоградской обл.
Зарегистрирован: 27. Августа 2007
Пол: Мужской
Re: Работа процедуры ПриЗагрузкеФормы
Ответ #4 - 01. Октября 2007 :: 09:29
Печать  
Цитата:
А сама по себе обработка "НетПраваДоступа" открывается?

А нет конфы с работающим примером с использованием процедуры? может я что не так делаю
  
Наверх
wwwICQ  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Работа процедуры ПриЗагрузкеФормы
Ответ #5 - 01. Октября 2007 :: 19:04
Печать  
Вроде все правильно делаешь... Завтречка попробую набросать тестовый пример и прогнать на последних версиях. Может чего опять всплыло нехорошее Печаль
  

FormEx developer
Наверх
www  
IP записан
 
Kran
Junior Member
**
Отсутствует



Сообщений: 51
Местоположение: Волжский Волгоградской обл.
Зарегистрирован: 27. Августа 2007
Пол: Мужской
Re: Работа процедуры ПриЗагрузкеФормы
Ответ #6 - 02. Октября 2007 :: 03:57
Печать  
Более полная информация:
Движок 1С - 7.70.027

Тест 1.
1С++ вер. 2.0.3.3 - объединенная с FormEx
Отладчиком смотрим - заходит в процедуру ПриЗагрузкеФормы. Но переопределение формы не дает результата.

Тест 2.
1С++ вер. 2.0.3.5 - объединенная с FormEx
Отладчиком смотрим - заходит в процедуру ПриЗагрузкеФормы. Но переопределение формы не дает результата.

Тест 3.
1С++ вер. 2.5.0.1 и FormEx вер. 2.0.2.0
Отладчиком смотрим - заходит в процедуру ПриЗагрузкеФормы. После КонецПроцедуры 1С валится с ошибкой.

Тест 4.
1С++ вер. 2.5.0.1 и FormEx вер. 2.0.5.71
Отладчиком смотрим - заходит в процедуру ПриЗагрузкеФормы. После КонецПроцедуры 1С валится с ошибкой.
  
Наверх
wwwICQ  
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: Работа процедуры ПриЗагрузкеФормы
Ответ #7 - 02. Октября 2007 :: 09:35
Печать  
Попробуй на #69
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Работа процедуры ПриЗагрузкеФормы
Ответ #8 - 02. Октября 2007 :: 09:42
Печать  
Не подтверждаю.

На 1С++ 2.5 и ФормЕкс 2.0.5.73/74 все нормально, тесты для этого события и события ПриЗагрузкеМодуля проходят нормально, в т.ч. и тесты замены формы и модуля формы.

ИМХО отладчиком такие процедуры отлаживать может быть чревато различными последствиями Печаль
  

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


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: Работа процедуры ПриЗагрузкеФормы
Ответ #9 - 02. Октября 2007 :: 10:23
Печать  
Попробуй на #69
  
Наверх
 
IP записан
 
Kran
Junior Member
**
Отсутствует



Сообщений: 51
Местоположение: Волжский Волгоградской обл.
Зарегистрирован: 27. Августа 2007
Пол: Мужской
Re: Работа процедуры ПриЗагрузкеФормы
Ответ #10 - 02. Октября 2007 :: 10:58
Печать  
Блин. А у вас может движок другой?
Проверил и с 74 релизом
Выпрыгивает с ошибкой:

AppName: 1cv7s.exe      
AppVer: 7.70.0.27      
ModName: br32.dll
ModVer: 7.70.0.14
Offset: 00003273

Создал пустую dbf базу. Добавил 1 справочник. Добавил обработку.
В глобальник вставил:
Процедура ПриЗагрузкеФормы(ИмяОбъекта)
     Если ИмяОбъекта = "Обработка.НетПраваДоступа.Форма" Тогда
          Возврат;
     КонецЕсли;    
     ИмяОбъекта = "Обработка.НетПраваДоступа.Форма";
КонецПроцедуры

Открываю справочник.
Ошибка вываливается и без отладчика.

P.S. А есть разница, что за чем цеплять 1С++, а потом FormEx или наоборот?
  
Наверх
wwwICQ  
IP записан
 
Kran
Junior Member
**
Отсутствует



Сообщений: 51
Местоположение: Волжский Волгоградской обл.
Зарегистрирован: 27. Августа 2007
Пол: Мужской
Re: Работа процедуры ПриЗагрузкеФормы
Ответ #11 - 02. Октября 2007 :: 11:03
Печать  
varelchik писал(а) 02. Октября 2007 :: 10:23:
Попробуй на #69

Где взять?
  
Наверх
wwwICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Работа процедуры ПриЗагрузкеФормы
Ответ #12 - 02. Октября 2007 :: 11:34
Печать  
У меня 25 релиз 1С.
Грузить нужно обязательно сначала 1С++, а уж потом ФормЕкс, иначе возможны различные глюки.
Да и вообще, как правило, 1С++ должен грузиться до остальных ВК
  

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



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Работа процедуры ПриЗагрузкеФормы
Ответ #13 - 02. Октября 2007 :: 12:35
Печать  
Тоже не подтверждаю. Все нормально.
1С++ 2.5.0.3 FormEx #74

to Kran
Ты бы маленькую тестовую конфу выложил.
  
Наверх
ICQ  
IP записан
 
Kran
Junior Member
**
Отсутствует



Сообщений: 51
Местоположение: Волжский Волгоградской обл.
Зарегистрирован: 27. Августа 2007
Пол: Мужской
Re: Работа процедуры ПриЗагрузкеФормы
Ответ #14 - 08. Октября 2007 :: 10:36
Печать  
vip писал(а) 02. Октября 2007 :: 12:35:
to Kran
Ты бы маленькую тестовую конфу выложил.


Приаттачил файл.
В нем (тупо) конфа. При попытке открытия Справочника Новый1 - падает.
dll аттачить не стал.
Я же правильно понимаю, что нужно к этой конфе только две Dll 1cpp и Formex.dll?

Посмотрите люди добрые.... что не так?
  
Наверх
wwwICQ  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Работа процедуры ПриЗагрузкеФормы
Ответ #15 - 08. Октября 2007 :: 10:41
Печать  
Не аттача. Попробуй еще раз.
  

FormEx developer
Наверх
www  
IP записан
 
Kran
Junior Member
**
Отсутствует



Сообщений: 51
Местоположение: Волжский Волгоградской обл.
Зарегистрирован: 27. Августа 2007
Пол: Мужской
Re: Работа процедуры ПриЗагрузкеФормы
Ответ #16 - 08. Октября 2007 :: 10:44
Печать  
Kran писал(а) 08. Октября 2007 :: 10:36:
Приаттачил файл.

ПОЛУЧИЛОСЬ
  

Prob.zip ( 9 KB | Загрузки )
Наверх
wwwICQ  
IP записан
 
Kran
Junior Member
**
Отсутствует



Сообщений: 51
Местоположение: Волжский Волгоградской обл.
Зарегистрирован: 27. Августа 2007
Пол: Мужской
Re: Работа процедуры ПриЗагрузкеФормы
Ответ #17 - 08. Октября 2007 :: 10:52
Печать  
Аттач получился - смотри верхний пост
  
Наверх
wwwICQ  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Работа процедуры ПриЗагрузкеФормы
Ответ #18 - 08. Октября 2007 :: 13:11
Печать  
Ага. Все правильно. Ты пытаешься вместо формы с таблицей списка подсунуть форму от обработки. Не удивительно, что 1С это не нравится.
Для форм справочника делай к тому же справочнику еще одну форму списка и подсовывай ее.
  

FormEx developer
Наверх
www  
IP записан
 
Kran
Junior Member
**
Отсутствует



Сообщений: 51
Местоположение: Волжский Волгоградской обл.
Зарегистрирован: 27. Августа 2007
Пол: Мужской
Re: Работа процедуры ПриЗагрузкеФормы
Ответ #19 - 09. Октября 2007 :: 08:56
Печать  
Цитата:
Ага. Все правильно. Ты пытаешься вместо формы с таблицей списка подсунуть форму от обработки. Не удивительно, что 1С это не нравится.
Для форм справочника делай к тому же справочнику еще одну форму списка и подсовывай ее.

А другой справочник нельзя открывать?
Или данная процедура подразумевает только переопределение форм внутри одного объекта?
  
Наверх
wwwICQ  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Работа процедуры ПриЗагрузкеФормы
Ответ #20 - 09. Октября 2007 :: 09:48
Печать  
Kran писал(а) 09. Октября 2007 :: 08:56:
Цитата:
Ага. Все правильно. Ты пытаешься вместо формы с таблицей списка подсунуть форму от обработки. Не удивительно, что 1С это не нравится.
Для форм справочника делай к тому же справочнику еще одну форму списка и подсовывай ее.

А другой справочник нельзя открывать?
Или данная процедура подразумевает только переопределение форм внутри одного объекта?

Данная процедура подразумевает полную подмену формы. Но она не производит проверку на возможность корректной загрузки указанной формы данному объекту. Другими словами, какую форму можно подсунуть, а какую нельзя - это только движку известно и выяснить можно только эмпирически.
  

FormEx developer
Наверх
www  
IP записан
 
Kran
Junior Member
**
Отсутствует



Сообщений: 51
Местоположение: Волжский Волгоградской обл.
Зарегистрирован: 27. Августа 2007
Пол: Мужской
Re: Работа процедуры ПриЗагрузкеФормы
Ответ #21 - 09. Октября 2007 :: 10:05
Печать  
Цитата:
Данная процедура подразумевает полную подмену формы. Но она не производит проверку на возможность корректной загрузки указанной формы данному объекту. Другими словами, какую форму можно подсунуть, а какую нельзя - это только движку известно и выяснить можно только эмпирически.

Хорошо, может тогда есть другой выход:
Мне нужно для всех форм отрабатывать функцию проверки на возможность открытия и если функция вернула 0, то форма не открывается а выдается сообщение, что нет прав. (это программная переделка стандартных прав).
Пробовал использовать процедуру ПослеСозданияФормы - но получается некрасиво - выдается предупреждение о недостатке прав, потом форма открывается и закрывается (Конт.Форма.Закрыть(0)).

  
Наверх
wwwICQ  
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Работа процедуры ПриЗагрузкеФормы
Ответ #22 - 09. Октября 2007 :: 10:18
Печать  
Kran писал(а) 09. Октября 2007 :: 10:05:
Цитата:
Данная процедура подразумевает полную подмену формы. Но она не производит проверку на возможность корректной загрузки указанной формы данному объекту. Другими словами, какую форму можно подсунуть, а какую нельзя - это только движку известно и выяснить можно только эмпирически.

Хорошо, может тогда есть другой выход:
Мне нужно для всех форм отрабатывать функцию проверки на возможность открытия и если функция вернула 0, то форма не открывается а выдается сообщение, что нет прав. (это программная переделка стандартных прав).
Пробовал использовать процедуру ПослеСозданияФормы - но получается некрасиво - выдается предупреждение о недостатке прав, потом форма открывается и закрывается (Конт.Форма.Закрыть(0)).


В ПриОткрытии() СтатусВозврата(0)
  
Наверх
ICQ  
IP записан
 
Kran
Junior Member
**
Отсутствует



Сообщений: 51
Местоположение: Волжский Волгоградской обл.
Зарегистрирован: 27. Августа 2007
Пол: Мужской
Re: Работа процедуры ПриЗагрузкеФормы
Ответ #23 - 09. Октября 2007 :: 10:32
Печать  
vip писал(а) 09. Октября 2007 :: 10:18:
В ПриОткрытии() СтатусВозврата(0)

Нуууу.... Это же во все формы пихать  Смущённый
А если забуду куда-нить? или собрат по оружию во время моего отсутствия подделать что-то захочет и не спросит....
Не красиво Печаль
Чем предопределенная процедура и хороша - что не надо думать - все равно сработает
  
Наверх
wwwICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Работа процедуры ПриЗагрузкеФормы
Ответ #24 - 09. Октября 2007 :: 11:43
Печать  
Kran писал(а) 09. Октября 2007 :: 10:32:
vip писал(а) 09. Октября 2007 :: 10:18:
В ПриОткрытии() СтатусВозврата(0)

Нуууу.... Это же во все формы пихать  Смущённый
А если забуду куда-нить? или собрат по оружию во время моего отсутствия подделать что-то захочет и не спросит....
Не красиво Печаль
Чем предопределенная процедура и хороша - что не надо думать - все равно сработает

Используй 1С++ и мой класс "Перехватчик", сделанный как раз для подобных универсальных механизмов, которые должны работать для любых форм без исправления модулей этих форм.
  

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



Сообщений: 51
Местоположение: Волжский Волгоградской обл.
Зарегистрирован: 27. Августа 2007
Пол: Мужской
Re: Работа процедуры ПриЗагрузкеФормы
Ответ #25 - 09. Октября 2007 :: 18:42
Печать  
artbear писал(а) 09. Октября 2007 :: 11:43:
Используй 1С++ и мой класс "Перехватчик", сделанный как раз для подобных универсальных механизмов, которые должны работать для любых форм без исправления модулей этих форм.

Круто блин. Долго разбирался - разобрался. Действительно все работает на ура.
artbear - Большой респект и свинячий восторг. Спасибо.
  
Наверх
wwwICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Работа процедуры ПриЗагрузкеФормы
Ответ #26 - 10. Октября 2007 :: 08:42
Печать  
Kran писал(а) 09. Октября 2007 :: 18:42:
Круто блин. Долго разбирался - разобрался. Действительно все работает на ура.
artbear - Большой респект и свинячий восторг. Спасибо.

Всегда пожалуйста Улыбка

Добро пожаловать в наш лагерь, лагерь тех, кому надоело Улыбка пихать универсальные механизмы в каждую форму.

ЗЫ посмотри в разделе Репозитарий прикрепленнную ветку "Репозитарий классов 1С++ в единой конфе".
Я там выложил несколько своих полезных и мощных универсальных механизмов. Почитай ветку, думаю, понравится Улыбка
  

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