Страницы: 1
RSS
v7: Формекс, ОбработкаОжидания - в чем задается интервал?
 

Добрый день. Нужно задать интервал вызова процедуры ОбработкаОжидания в FormEx – как это проще всего сделать? Смотрите – в описание назначение значится как: вызывает процедуру модуля формы с заданным интервалом в миллисекундах. Но я думаю, что все-таки в секундах: Форма.ОбработкаОжидания ("НужнаяПроцедура", 1);

Сейчас значится, что интервал 1 секунда, а как сделать раз 0,5 секунды? Заранее спасибо.

 

: <Интервал> - (Число Интервал вызова процедуры в миллисекундах (если в качестве параметра передается 0 (ноль)), то ранее запущенный процесс прекращается). Это я из СП взяла.

Форма.ОбработкаОжидания("НужнаяПроцедура", 1); // ФОРМА

РасширениеФормы - в миллисекундах.

ОО для Форма - к формекс отношения не имеет. Имейте это в виду.

Я вообще считаю, что 5 миллисекунды ничего увидеть невозможно, надо ставить в районе 100.

 
Цитата
Karina написал:
: <Интервал> - (Число Интервал вызова процедуры в миллисекундах (если в качестве параметра передается 0 (ноль)), то ранее запущенный процесс прекращается). Это я из СП взяла.   Форма.ОбработкаОжидания("НужнаяПроцедура", 1); // ФОРМА  РасширениеФормы - в миллисекундах.  ОО для Форма - к формекс отношения не имеет. Имейте это в виду.  Я вообще считаю, что 5 миллисекунды ничего увидеть невозможно, надо ставить в районе 100.

Лучше использовать объект Таймер того же FormEx.

Форма.ОбработкаОжидания("НужнаяПроцедура", 1); это недокументированная функция 1С, если что. Помню, что какая-то из ОО не работает в модальном режиме. ОО расширение формы – работает. Так то таймеров можно сделать несколько, с несколькими таймаутами, и не только в форме, но и в гм и объекте 1с++. Если одного таймера хватает то РФ.ОбработкаОжидания вполне достаточно.

Там еще бывает фишка такая, то если при оплате картой запустить ОбработкуОжидания(), в глобальном модуле вызвать ЗапуститьПриложения (…, Параметр), то иногда ничего не возвращается, а создается в указанном месте файл с ответом из банка. Вот для того, чтобы прервать обработку ожидания и подхватить файл, нужно после обработки файла удалить его и пусть обработка ожидания дальше крутится.

 

Я бы еще тогда посоветовала создать спец пользователя, под которым будет запускаться и крутиться обработка ожидания. В процедуре, которая вызывается в обработке ожидания, можно установить значение какой-нибудь константы в значение = 1, если файл найден, а в конце процедуры, которая вызывается из обработки ожидания, сбросить значение этой константы. В нужном документе проверять значение этой спец константы и при необходимости форма.толькопросмотр(1),

И если у вас много пользователей, порядка 20 и даже больше, желательно разделить эти файлы по разным каталогам, по маске имени и прочее, иначе конфликт захвата файла неизбежен.

Если в качестве параметра передается 0 (ноль), то ранее запущенный процесс прекращается – это на случай, когда нужно прервать обработку ожидания.

 

Вообще обработка ожидания в 1С предназначена для периодического выполнения процедуры глобального модуля с заданным интервалом времени. Код для запуска будет выглядеть следующим образом:

ОбработкаОжидания("ВыполнитьПроцедуру",N); , где "ВыполнитьПроцедуру" - имя процедуры глобального (!!) модуля, которая будет запускаться с периодичностью в N сек. (второй параметр, кратный 1 сек).

Но, повторный запуск, обязательно отменит предыдущий. Поэтому лучше сделать в контексте формы, чтобы отделить этот поток от глобального контекста.

И да – в чистом виде у формы нет метода ОбработкаОжидания(). Этот метод появляется как раз таки при использовании FormEx.

 

В FormEx лучше воспользоваться вот такой штукой:

ОбработкаОжидания(<?>,)

Синтаксис:

ОбработкаОжидания(Имя, Интервал)

Назначение:

Вызывает процедуру модуля формы с заданным интервалом в милисекундах. В отличии от штатной обработки ожидания, вызывается при открытых модальных формах. Для одной формы может быть установлено сколько угодно обработок ожидания путем создания нужного количества объектов РасширениеФормы. При уничтожении объекта, для которого вызывался данный метод, соответствующая процедура обработки ожидания останавливается. Метод работает только после физического открытия окна формы.

Параметры:

<Имя> - (Строка Имя процедуры модуля текущей формы для периодического вызова (если в качестве параметра передается пустая строка, то ранее запущенный процесс прекращается))

<Интервал> - (Число Интервал вызова процедуры в миллисекундах (если в качестве параметра передается 0 (ноль)) , то ранее запущенный процесс прекращается)

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ:

(Строка) Имя процедуры, которая была установлена ранее в качестве процедуры обработки ожидания.

Думаю, вам стоит попробовать разные варианты, описанные выше в том числе, и понять, что подойдет лучше всего.

Страницы: 1