Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема ОбработкаОжидания в модальной форме документа - не работает как надо (число прочтений - 4323 )
yur4egg
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 16
Зарегистрирован: 22. Ноября 2011
ОбработкаОжидания в модальной форме документа - не работает как надо
24. Июля 2014 :: 04:12
Печать  
Есть необходимость автоматически закрывать открытый документ по таймеру. В немодальной форме проблем нет: Форма.ОбработкаОжидания() решает задачу. В модальной форме, как выяснилось, сия фича не действует. Если использовать FormEx, то поведение следующее:

Процедура Автозакрытие()
    Сообщить("Автозакрытие");
    Форма.Закрыть(0);
КонецПроцедуры

Процедура ПриОткрытии()
     рф=СоздатьОбъект("РасширениеФормы");  
     рф.УстановитьФорму(Форма);
     рф.ОбработкаОжидания("Автозакрытие",20);
КонецПроцедуры

При значениях таймера до 20 автозакрытие срабатывает практически мгновенно, ведь это же миллисекунды. А при значениях от 20 и больше не срабатывает вообще... Во всяком случае, я не дождался. Выставить таймер для 5-ти минут не удается.

Перенос вызова автозакрытия из ПриОткрытии() в ПослеОткрытия() ничего не поменяло, при том, что ПослеОткрытия() в модальном режиме не сработало.
  
Наверх
 
IP записан
 
leov-001
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 150
Зарегистрирован: 05. Марта 2009
Re: ОбработкаОжидания в модальной форме документа - не работает как надо
Ответ #1 - 24. Июля 2014 :: 04:35
Печать  
Цитата:
ОбработкаОжидания(<?>,)
Синтаксис:
ОбработкаОжидания(Имя, Интервал)
Назначение:
Вызывает процедуру модуля формы с заданным интервалом в милисекундах. В отличии от штатной обработки ожидания, вызывается при открытых модальных формах. Для одной формы может быть установлено сколько угодно обработок ожидания путем создания нужного количества объектов РасширениеФормы. При уничтожении объекта, для которого вызывался данный метод, соответствующая процедура обработки ожидания останавливается. Метод работает только после физического открытия окна формы.
Параметры:
<Имя> - (Строка Имя процедуры модуля текущей формы для периодического вызова (если в качестве параметра передается пустая строка, то ранее запущенный процесс прекращается))
<Интервал> - (Число Интервал вызова процедуры в миллисекундах (если в качестве параметра передается 0 (ноль)) , то ранее запущенный процесс прекращается)
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ:
(Строка) Имя процедуры, которая была установлена ранее в качестве процедуры обработки ожидания.



Цитата:
Процедура ПослеСозданияФормы(<?>)КонецПроцедуры
Синтаксис:
Процедура ПослеСозданияФормы(<Контекст>)КонецПроцедуры
Назначение:
Предопределенная процедура вызывается после физического создания окна формы в системе, когда окно формы создано, но еще не полностью проинициализоровано и не отображено на экране.
Параметры:
<Контекст> - контекст открытой формы
ЗАМЕЧАНИЕ:
В этой процедуре (и во всех процедурах, вызываемых после нее) можно вызывать методы, которые помечены как "работает только после физического открытия окна формы".


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



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: ОбработкаОжидания в модальной форме документа - не работает как надо
Ответ #2 - 24. Июля 2014 :: 05:03
Печать  
РФ сделай локальной переменной модуля:

Код
Выбрать все
Перем РФ;
Процедура ...бла-бла-бла 



На счет ПослеОткрытия - не обязательно, в ПриОткрытии тоже будет работать.
  
Наверх
 
IP записан
 
yur4egg
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 16
Зарегистрирован: 22. Ноября 2011
Re: ОбработкаОжидания в модальной форме документа - не работает как надо
Ответ #3 - 24. Июля 2014 :: 07:13
Печать  
Точно, именно РФ как переменной модуля и не хватало. Теперь стало понятно, почему при значениях таймера меньше 20 процедура все-таки срабатывала: форма открывалась не более 20 мс, и в течение это времени переменная РФ была активна как переменная процедуры ПриОткрытии().
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: ОбработкаОжидания в модальной форме документа - не работает как надо
Ответ #4 - 24. Июля 2014 :: 07:20
Печать  
На счет модальности и ПослеОткрытия - эта беда только в последних версиях формекса и АЛьф так и не поправил её, либо пользуй ПослеСозданияФормы, либо более ранними версиями формекса.

А так, модальность зло и лучше её не использовать
Улыбка
  
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ОбработкаОжидания в модальной форме документа - не работает как надо
Ответ #5 - 10. Мая 2017 :: 12:58
Печать  
Мерси, помогло...
  
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать