В модуле «Конструктор процессов» для 1С:УНФ реализована возможность устанавливать таймеры в маршрутах бизнес-процессов.
Установка таймеров в маршрутах бизнес-процессов позволяет приостановить бизнес-процесс на указанное время. Обратите внимание, что весь бизнес-процесс приостанавливается только если в нем есть одна ветвь и она содержит таймер.
Но если в процессе есть несколько ветвей, то приостанавливается выполнение той ветви, на которой расположен таймер. Если ветвей у процесса несколько, то остановка на таймере одной ветви, не останавливает выполнение других ветвей. Таймеров в бизнес-процессе также может быть любое количество.
Есть три варианта указания времени приостановки процесса:
- Относительное время в часах и минутах. В таком варианте вы можете указать на сколько часов и минут вы хотите приостановить выполнение ветви бизнес-процесса, в которой размещен таймер;
- Точная дата и время. В данном варианте необходимо указать точную дату и время, до которой ветвь процесса будет «висеть» на таймере. Когда таймер сработает, тогда бизнес-процесс по его ветви пойдет дальше;
- Время и дата указанные в переменной процесса. Наиболее гибкий вариант. Вы можете создать в бизнес-процессе реквизит (переменную) с типом «Дата». Таймер в этом варианте будет устанавливаться на значении, заданном в этой переменной. Значение переменной можно установить в формах задач исполнителей. Например, у сотрудника может быть поле «Установите дату», он устанавливает значение даты и процесс останавливается на точке таймера до наступления указанной сотрудником даты (и времени).
В случае перехода процесса в точку таймера (она может располагаться в любой ветви) процесс будет оставаться в этой точке до наступления времени срабатывания таймера. Точность срабатывания – одна минута.
С помощью таймеров можно реализовать интересные бизнес-процессы. Рассмотрим некоторые примеры ниже.
Пример №1. Остановка процесса на сутки для проверки результатов. Например, в процессе была выполнена задача передачи документов клиенту, и если следующей точкой маршрута поставить точку таймера с интервалом срабатывания 1 день, то процесс будет остановлен и пойдет дальше к следующей задаче (проверки получения документов) только через одни сутки.
Пример №2. С помощью таймера можно установить проверку выполнения задач. Маршрут процесса можно разделить на две ветви, в одной поставить таймер, например, на 3 часа, а в другой ветви задачу сотруднику, затем эти ветви соединить в одну. Теперь, если сотрудник за три часа (время до срабатывания таймера) не выполнил свою задачу, то таймер сработает раньше выполнения задачи сотрудником и процесс пойдет по той ветви, где расположен таймер, а в ней могут быть выданы уже другие задачи, другим сотрудникам.
Пример №3. Таймеры можно использовать не только для простой приостановки процессов, их можно использовать для создания мониторинга каких-либо событий в базе данных. Например, можно реализовать в маршруте процесса цикл, в котором будет проверяться определенное условие (например, оплата счета). Если оплата ещё не поступила, то процесс будет приостанавливаться таймером на один час (или 5 минут, или 5 часов или любое удобное время), далее будет выполняться повторная проверка в цикле. Как только счет будет оплачен и условие выполнено процесс пойдет дальше по другой ветви, в которой нет таймера приостановки.
Обратите внимание на то, что обработкой таймеров занимается регламентное задание «Процессы: Обработка таймеров», в файловой версии базы данных для работы с регламентными заданиями требуется наличие как минимум одного запущенного сеанса «1С:УНФ». В SQL-версии таких ограничений нет и выполнением регламентных заданий занимается служба сервера.
В подсистеме «Процессы» также есть периодические процессы, отличие их от таймеров в том, что таймеры приостанавливают в нужной точке определенный процесс, а механизм периодических процессов создает новые процессы по заданному расписанию.