Обработчик ожидания – выполнение кода через заданное время

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

  • ПодключитьОбработчикОжидания
  • ОтключитьОбработчикОжидания

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

 

Синтаксис

Рассмотрим синтаксис вышеуказанных функций:

ПодключитьОбработчикОжидания(<ИмяПроцедуры>, <Интервал>, <Однократно>) – Подключает вызов указанной процедуры 1С через определённый интервал времени.

  • ИмяПроцедуры — <Строка> – Путь к экспортируемой процедуре. Процедура должна располагаться на клиенте и не содержать параметров.
  • Интервал — <Число> – Интервал (точность до 0,1 секунды) в секундах через который будет осуществляться вызов процедуры.
  • Однократно — <Булево> – Однократно или многократно будет исполнен код подключаемой процедуры.

ОтключитьОбработчикОжидания(<ИмяПроцедуры>) – Отключает вызов процедуры, которая была подключена ранее с помощью ПодключитьОбработчикОжидания.

  • ИмяПроцедуры — <Строка> — Путь к процедуре, которая должна быть отключена.

Вызов обработчика ожидания продолжается до тех пор, пока пользовательская форма не будет закрыта или пока не будет вызвана процедура ОтключитьОбработчикОжидания.

Обработчик ожидания доступен только на клиенте. Чтобы вызвать серверную функцию, необходимо обратиться к ней из клиентского окружения.

 

Пример вызова обработчика ожидания

Приведём пример работы с обработчиком ожидания:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
&НаКлиенте
Процедура ПодключитьОбработчик()
 ПодключитьОбработчикОжидания("ОбработатьОжидание", 60, Ложь);
КонецПроцедуры
 
&НаКлиенте
Процедура ОбработатьОжидание()
 ОбработатьОжиданиеНаСервере();
КонецПроцедуры
 
&НаСервере
Процедура ОбработатьОжиданиеНаСервере()
 //Выполняем серверный код 1С
КонецПроцедуры;

В этом примере обработчик вызывается с клиента и выполняет клиентскую процедуру, которая, в свою очередь, передаёт управление серверной процедуре.

К примеру, вы хотите сделать с помощью данного механизма таймер. И хотите, чтобы имелась возможность вызывать несколько таймеров за раз. Вышеприведённый код не позволит вам вызывать обработчик несколько раз. Для этого можно сделать одну из следующих вещей:

  • Каждый раз создавать новую форму таймера, к которой привязана соответственно выполняющаяся процедура.
  • Каждый раз вызывать новый обработчик ожидания (с другим именем). К примеру: ОбработатьОжидание1, ОбработатьОжидание2, ОбработатьОжидание3

По ссылке ниже можно скачать пример внешней обработки ожидания.

Если у вас остались вопросы, задавайте их ниже в комментариях.

Скачать