Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Вызвать процедуры формы (число прочтений - 4908 )
es3000
God Member
*****
Отсутствует



Сообщений: 536
Зарегистрирован: 10. Июля 2006
Вызвать процедуры формы
14. Января 2011 :: 13:28
Печать  
Можно ли с использованием 1С++ 2.5.0.7 имея контекст формы вызвать процедуру, объявленную в ее модуле, из другой формы?

Или нужно обязательно FormEx цеплять?
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вызвать процедуры формы
Ответ #1 - 14. Января 2011 :: 13:33
Печать  
Для возможности прямой работы через контекст формы используется функционал ВК ТурбоБЛ, который входит в ВК 1С++.

у ФормЕкс реализация совсем другая.
ЗЫ на всякий случай скажу - чтобы вызвать метод из модуля формы, форма все-таки должна быть открыта Улыбка
  

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



Сообщений: 536
Зарегистрирован: 10. Июля 2006
Re: Вызвать процедуры формы
Ответ #2 - 14. Января 2011 :: 13:42
Печать  
В общем есть у меня открытая форма, назовем ее родительской. Из нее вызывается подбор документов методом "ОткрытьПодбор". Я хочу при закрытии формы списка журнала документов (формы подбора) вызвать какую-нибудь процедуру родительской формы для выполнения нужных мне действий после окончания подбора.

У меня процедура родительской формы просто так в лоб не вызывается:

Код
Выбрать все
ФормаРодитель.ЗакрываетсяОбработкаПодбора()
 



Выдается ошибка: 
Код
Выбрать все
Поле агрегатного объекта не обнаружено (ЗакрываетсяОбработкаПодбора)
 



Как надо делать? Подскажите пожалуйста
  
Наверх
ICQ  
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Вызвать процедуры формы
Ответ #3 - 14. Января 2011 :: 19:01
Печать  
EnableTurboBL - включен?
  
Наверх
ICQ  
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Вызвать процедуры формы
Ответ #4 - 17. Января 2011 :: 01:51
Печать  
es3000 писал(а) 14. Января 2011 :: 13:42:
В общем есть у меня открытая форма, назовем ее родительской. Из нее вызывается подбор документов методом "ОткрытьПодбор". Я хочу при закрытии формы списка журнала документов (формы подбора) вызвать какую-нибудь процедуру родительской формы для выполнения нужных мне действий после окончания подбора.

У меня процедура родительской формы просто так в лоб не вызывается:

Код
Выбрать все
ФормаРодитель.ЗакрываетсяОбработкаПодбора()
 



Выдается ошибка:  
Код
Выбрать все
Поле агрегатного объекта не обнаружено (ЗакрываетсяОбработкаПодбора)
 



Как надо делать? Подскажите пожалуйста


1. В родительской форме функция точно экспортной описана?
2. Если хочешь сделать универсальный механизм "событий", т.е. вызывать метод "родителя", не зависимо от его типа и забывчивости программиста, то используй связку Информатор + ВыполняемыйМодуль. (первым проверяешь наличие метода, а вторым вызываешь, если найден)
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вызвать процедуры формы
Ответ #5 - 17. Января 2011 :: 05:31
Печать  
Dmitry The Wing писал(а) 17. Января 2011 :: 01:51:
1. В родительской форме функция точно экспортной описана?
2. Если хочешь сделать универсальный механизм "событий", т.е. вызывать метод "родителя", не зависимо от его типа и забывчивости программиста, то используй связку Информатор + ВыполняемыйМодуль. (первым проверяешь наличие метода, а вторым вызываешь, если найден)

1. Экспортность функции не играет роли для ТурбоБл Улыбка
2. А можно просто вызывать Перехватчик.ВыполнитьОригинальноеСобытиеГК(КонтФормы, ИмяПроцедуры, парам1, парам2, ..., парамХ)
фактически Перехватчик делает то же самое - проверка наличия обработчика (т.е. самого метода) и вызов его с нужными параметрами.
  

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


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Вызвать процедуры формы
Ответ #6 - 17. Января 2011 :: 06:16
Печать  
artbear писал(а) 17. Января 2011 :: 05:31:
2. А можно просто вызывать Перехватчик.ВыполнитьОригинальноеСобытиеГК(КонтФормы, ИмяПроцедуры, парам1, парам2, ..., парамХ)
фактически Перехватчик делает то же самое - проверка наличия обработчика (т.е. самого метода) и вызов его с нужными параметрами.

Хочешь сказать, что:
1. сам факт перехвата не важен? Т.е. перехватчиком можно эмулировать события?
2. ВыполнитьОригинальноеСобытиеГК может вызывать абсолютно любой метод? Не важно что он не является предопределенным событием?
  
Наверх
 
IP записан
 
es3000
God Member
*****
Отсутствует



Сообщений: 536
Зарегистрирован: 10. Июля 2006
Re: Вызвать процедуры формы
Ответ #7 - 17. Января 2011 :: 08:18
Печать  
Salimbek писал(а) 14. Января 2011 :: 19:01:
EnableTurboBL - включен?


Помогло. Спасибо.
А на что еще влияет эта настройка?
  
Наверх
ICQ  
IP записан
 
es3000
God Member
*****
Отсутствует



Сообщений: 536
Зарегистрирован: 10. Июля 2006
Re: Вызвать процедуры формы
Ответ #8 - 17. Января 2011 :: 08:22
Печать  
Dmitry The Wing, artbear.

Вам тоже спасибо.
Почитал описание классов про которые вы написали. На будущее пригодится.
Вариант с TurboBL для моих нужд кажется проще.
  
Наверх
ICQ  
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Вызвать процедуры формы
Ответ #9 - 17. Января 2011 :: 08:30
Печать  
es3000 писал(а) 17. Января 2011 :: 08:18:
Salimbek писал(а) 14. Января 2011 :: 19:01:
EnableTurboBL - включен?


Помогло. Спасибо.
А на что еще влияет эта настройка?


На включение возможностей TurboBL, таких как
-обращение к переменным контекста
-вызовам процедур через контекст формы, например, Конт.Печать()
и т.д.
  
Наверх
 
IP записан
 
es3000
God Member
*****
Отсутствует



Сообщений: 536
Зарегистрирован: 10. Июля 2006
Re: Вызвать процедуры формы
Ответ #10 - 17. Января 2011 :: 09:54
Печать  
А почему TurboBL по умолчанию не включен?
Ведь он как я понял ускоряет доступ к методам и свойствам. И больше ничего лишнего не делает
  
Наверх
ICQ  
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Вызвать процедуры формы
Ответ #11 - 17. Января 2011 :: 10:05
Печать  
es3000 писал(а) 17. Января 2011 :: 09:54:
А почему TurboBL по умолчанию не включен?
Ведь он как я понял ускоряет доступ к методам и свойствам. И больше ничего лишнего не делает


В последних 1cpp включен "по-умолчанию", по многочисленным просьбам трудящихся.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать