# Просрочка задач по дедлайну

## 1. Введение

Вам нужно отслеживать дедлайны задач и автоматически выявлять какие из задач просрочены. Для этого используется механизм «Просрочки задач по дедлайну», который каждый день в установленное время проверяет все задачи на срыв дедлайна. Если дата дедлайна уже прошла, то задаче назначается статус просрочки и ответственному за задачу отправляется уведомление на его адрес электронной почты.

## 2. **Принцип работы**

![](https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LACZmmM2xUWbZxyRr4s%2Fuploads%2Fjai9N5B8HxSlK7hapxUr%2F%D0%9F%D1%80%D0%B8%D0%BD%D1%86%D0%B8%D0%BF%20%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B.png?alt=media\&token=3970bc8c-98cf-40f4-bf38-582940f56836)

Принцип работы механизма опирается на каталог «[Планировщик задач](https://docs.bpium.ru/cases/automations/planirovshik-zadach)». В указанные в планировщике дату и время, запускается сценарий, который проверяет дедлайн всех задач из каталога «Задачи». Если задача просрочена (дедлайн задачи уже прошел), то в ней проставляется статус просрочки. По каждой просроченной задаче отправляется уведомление ответственному лицу.

## 3. Реализация

### 3.1. Настройка каталога «Задачи»

Создайте каталог «Задачи». В этом каталоге будут фиксироваться все задачи, назначаемые сотрудникам. Заполните каталог полями, согласно скриншоту ниже. Рекомендуется создавать поля в том же порядке, чтобы не нужно было переназначать id полей в сценарии.

![](https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LACZmmM2xUWbZxyRr4s%2Fuploads%2FT03RCcAsxqHpLwA9PHE6%2F%D0%A1%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D0%B0%20%D0%BA%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3%D0%B0.png?alt=media\&token=e568cd28-3d17-4f47-a8a7-a41fd087fabf)

* **Статус** (Статус)\
  \&#xNAN;*Описание*: Этап выполнения задачи ответственным лицом.\
  \&#xNAN;*Настройки*: Значения: «Новая», «В работе», «Готово». \
  По умолчанию: первый элемент. Обязательное поле.
* **Описание** (Многострочный текст)\
  \&#xNAN;*Описание*: Описание сути задачи, работ, которые необходимо выполнить.\
  \&#xNAN;*Настройки*: Обязательное поле.
* **Ответственный** (Сотрудник)\
  \&#xNAN;*Описание*: Ответственный за выполнение задачи сотрудник.\
  \&#xNAN;*Настройки*: Укажите «по умолчанию: текущий сотрудник». Обязательное поле.
* **Дедлайн** (Дата)\
  \&#xNAN;*Описание*: Дата и время дедлайна задачи.\
  \&#xNAN;*Настройки*:  Укажите дату «с временем».
* **Просрочено?** (статус)\
  \&#xNAN;*Описание*: Просроченность задачи.\
  \&#xNAN;*Настройки*: Значения: «нет», «да». Укажите «по умолчанию: первый элемент». Сделайте поле редактируемым только через API.

### 3.2. Создание и настройка планировщика задач

Создайте и настройте каталог «Планировщик задач». Процесс создания каталога описан в статье [«Планировщик задач](https://docs.bpium.ru/cases/automations/planirovshik-zadach)».

#### **Настройка даты и времени запуска сценария**

Укажите дни и время, в которые должны проверяться дедлайны задач. Например, для проверки дедлайна по будням в 10:00, настройте планировщик следующим образом:

![](https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LACZmmM2xUWbZxyRr4s%2Fuploads%2FGqofyVufY3rXhhLSHs1b%2F%D0%9F%D0%BB%D0%B0%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D1%89%D0%B8%D0%BA.png?alt=media\&token=d77c91cf-107a-4f45-9b03-4f2fa16867f0)

В качестве сценария для планировщика загрузите следующий [файл сценария](https://drive.google.com/file/d/1f7YxUePBhhOXLl25VtKzFGb7HQ6yWc8S/view?usp=sharing).

#### Настройка сценария планировщика

Сценарий для проверки дедлайна задач выглядит следующим образом:

![](https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LACZmmM2xUWbZxyRr4s%2Fuploads%2Fi3zHBzSpfdMDzEZv8yjO%2F%D0%A1%D1%86%D0%B5%D0%BD%D0%B0%D1%80%D0%B8%D0%B9.png?alt=media\&token=17a38957-61f1-4618-aed2-361517b26713)

Сценарий запускается во время, указанное в планировщике задач. Он собирает все просроченные задачи со статусами «новый» и «в работе» компонентом «Задачи». Далее в цикле по этим задачам происходит:

* Получение почты ответственного сотрудника (Компонент «Почта сотрудника»).
* Изменение статуса задачи на просрочено (компонент «Изменение статуса задачи»).
* Отправка на почту ответственного сотрудника уведомления о просрочки задачи (компонент «Отправка почты»).

Компоненты «i++» и «PT0.1S» нужны для увеличения значения итератора и временной задержки.

В сценарии необходимо изменить выделенные компоненты в соответствии с описанием ниже. Список компонентов к изменению:

* **Задачи**
* **Почта сотрудника**
* **Изменение статуса задачи**
* **Отправка почты**

В каждом из этих компонентов необходимо указать каталог «Задачи» и id созданных в нем полей. Если поля в каталоге «Задачи» и значения всех статусов создавались в том же порядке, что и на скриншоте выше (структура каталога «Задачи»), то изменять id полей не нужно. Если порядок полей отличается, то нужно сопоставить id полей и значений вашего каталога с соответствующими полями и значениями на скриншоте. Подробная настройка всех изменяемых компонентов представлена ниже.

**Компонент «Задачи»**

![](https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LACZmmM2xUWbZxyRr4s%2Fuploads%2F55dQYzTAo6I1xjYtHN1q%2F%D0%A1%D1%86%D0%B5%D0%BD%D0%B0%D1%80%D0%B8%D0%B9%20\(%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B8\).png?alt=media\&token=b927f653-b004-4017-9672-27f468a405a5)

Компонент собирает все просроченные задачи со статусами «новая» и «в работе».

В поле «Каталог» укажите созданный вами каталог «Задачи». Выделенные значения нужно сопоставить с соответствующими id полей в каталоге «Задачи». Если все поля и значения в каталоге создавались в порядке скриншота структуры каталога «Задачи», то изменять значения полей не нужно.

**Компонент «Почта сотрудника»**

![](https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LACZmmM2xUWbZxyRr4s%2Fuploads%2F0GIpv2IWmTvlw7ZhF5in%2F%D0%A1%D1%86%D0%B5%D0%BD%D0%B0%D1%80%D0%B8%D0%B9%20\(%D0%9F%D0%BE%D1%87%D1%82%D0%B0%20%D1%81%D0%BE%D1%82%D1%80%D1%83%D0%B4%D0%BD%D0%B8%D0%BA%D0%B0\).png?alt=media\&token=2310c989-517f-4349-a190-f2598186cf67)

Компонент получает почту ответственного за просроченную задачу сотрудника.

В поле «Каталог» выберите катлаог «Сотрудники». В поле «ID записи» вместо значения «4» впишите id поля «Ответственный» из вашего каталога «Задачи» (если по скриншоту, то менять не нужно).

В секции «Получить» в поле «ID полей» укажите id поля с электронной почтой в каталоге «Сотрудники». Если вы не редактировали структуру каталога «Сотрудники», то менять значение не нужно.

**Компонент «Изменение статуса задачи»**

![](https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LACZmmM2xUWbZxyRr4s%2Fuploads%2FXNvyePNzrYXYm1lJyNwk%2F%D0%A1%D1%86%D0%B5%D0%BD%D0%B0%D1%80%D0%B8%D0%B9%20\(%D0%98%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5%20%D1%81%D1%82%D0%B0%D1%82%D1%83%D1%81%D0%B0%20%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8\).png?alt=media\&token=37af59a1-4cc2-4767-87b8-b6e34ba4ba0d)

Компонент проставляет статус просроченности в запись задачи.

В поле «Каталог» выберите каталог «Задачи». В поле «Значения полей» укажите id вашего статуса «Просрочен», а в его значении укажите значение статуса «да» (если по скриншоту, то менять не нужно).

**Компонент «Отправка почты»**

![](https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LACZmmM2xUWbZxyRr4s%2Fuploads%2FL3C06Iz7TffhEiP3wreb%2F%D0%A1%D1%86%D0%B5%D0%BD%D0%B0%D1%80%D0%B8%D0%B9%20\(%D0%9E%D1%82%D0%BF%D1%80%D0%B0%D0%B2%D0%BA%D0%B0%20%D0%BF%D0%BE%D1%87%D1%82%D1%8B\).png?alt=media\&token=a31c42fb-65f9-493e-b955-6279083a4473)

Подробное описание компонента в [следующей статье](https://docs.bpium.ru/manual/processes/scripts/components/email).

Компонент отправляет сообщение о просрочке на почту ответственного сотрудника. В данном примере предполагается отправка сообщения на почту Яндекса, если же в вашем случае используется другой почтовый сервис (например Gmail), то ознакомьтесь со [статьей по компоненту](https://docs.bpium.ru/manual/processes/scripts/components/email#gmail).

Укажите адрес сервера, порт (если у сотрудника почта Яндекса, то оставьте поля без изменений). Введите логин и пароль почты, с которой будут отправляться уведомления и заполните остальные поля согласно скриншоту. В поле «Текст» сформируйте произвольное сообщение (как простой текст или HTML) и вставьте ссылку на задачу.

При необходимости вместо (или совместно) с отправкой сообщения на почту можно реализовать рассылку в Telegram. Механизм реализации рассылки в Telegram из Бипиум описан в статье [Интеграция с Telegram-ботом](https://docs.bpium.ru/cases/automations/integraciya-s-telegram-botom).

## **4. Тестирование**

Создайте несколько записей в каталоге «Задачи» с наступившими и еще не наступившими датами дедлайнов. Пример заполнения записи ниже. Статус «Просрочен?» заполнять не нужно, он проставится автоматически в дальнейшем:

![](https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LACZmmM2xUWbZxyRr4s%2Fuploads%2FZc8GZfkpmQHri94MeAGb%2F%D0%A2%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%201.png?alt=media\&token=165ca845-aefb-43f2-b178-fa32feec7ea7)

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

![](https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LACZmmM2xUWbZxyRr4s%2Fuploads%2FLgnh3CCAfNfvVt4NfggH%2F%D0%A2%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%202.png?alt=media\&token=56664058-e0c7-4d27-833a-06152cc0257f)

По всем просроченным задачам на почту ответственных сотрудников должно прийти уведомление о просроченных задачах с ссылкой на них. При переходе по ссылке из сообщения открывается задача с просроченным дедлайном:

![](https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LACZmmM2xUWbZxyRr4s%2Fuploads%2FhXwcJCZLsZCicHpJ5Rka%2F%D0%A2%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%203.png?alt=media\&token=b6acd430-5f16-47f6-a9e7-f4efb4c13071)
