# Производственный календарь

### Описание

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

### Сценарии использования

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

### Структура

#### Каталог обращений

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

Для реализации подобного, нам нужно создать в системе Бипиум структуру будущего каталога и сохранить ее.

Пример структуры каталога:

<figure><img src="https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LACZmmM2xUWbZxyRr4s%2Fuploads%2FOflai3AABiTNyCMX10Yy%2FUntitled.png?alt=media&#x26;token=8d63b1fc-97e6-457f-9775-2f9f87902ecf" alt=""><figcaption></figcaption></figure>

Соответственно у обращения как сущности есть приставленный к нему сотрудник, его статус рассмотрения, так же время в которое данное обращение будет рассмотрено.

#### Каталог производственного календаря

Ниже представлена структура производственного календаря.

<figure><img src="https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LACZmmM2xUWbZxyRr4s%2Fuploads%2F8EPT7bPxWO6qO1tE0zn8%2FUntitled2.png?alt=media&#x26;token=cf32a5b2-ab29-4e24-b972-88cebde8eb94" alt=""><figcaption></figcaption></figure>

Соответственно по этой структуре, какой либо день имеет: дату и тип.&#x20;

А так же, время начала рабочего дня и его окончания.

### Автоматизации

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

<figure><img src="https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LACZmmM2xUWbZxyRr4s%2Fuploads%2FmSiqgTER5dgOTd9pHY8I%2FUntitled3.png?alt=media&#x26;token=8f045b12-3308-4bc2-a530-5e4463ed1406" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LACZmmM2xUWbZxyRr4s%2Fuploads%2FdCOwQ5J7McGsVeu1nEwD%2FUntitled4.png?alt=media&#x26;token=43918107-ef06-4433-bbf2-87a97a6efece" alt=""><figcaption></figcaption></figure>

{% file src="<https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LACZmmM2xUWbZxyRr4s%2Fuploads%2FpmDOYzs57WZYsYeIMubY%2FcalendarFill.bpmn?alt=media&token=edcc563e-428e-4059-a938-6b75d7259a35>" %}
Файл сценария
{% endfile %}

После перечисленных манипуляции нужно перейти на адрес: https\://\[наименование домена].bpium.ru/api/webrequest/\[указанный идентификатор внешнего запроса ранее]

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

<figure><img src="https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LACZmmM2xUWbZxyRr4s%2Fuploads%2Fg5s0Z9Cm1mRdloE0ZjtB%2FUntitled5.png?alt=media&#x26;token=05c73684-42f1-47e5-b392-449279ab194d" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LACZmmM2xUWbZxyRr4s%2Fuploads%2Fzdf51uqVNkwt4SvR0Tg6%2FUntitled6.png?alt=media&#x26;token=05fd6b4f-d8b6-4afd-81b3-eef51a186232" alt=""><figcaption></figcaption></figure>

Далее нужно создать и приложить сценарий ниже:

{% file src="<https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LACZmmM2xUWbZxyRr4s%2Fuploads%2FbeWLMAEeZd8IJGqLupid%2FsetWorkDay.bpmn?alt=media&token=02cb1c34-ba88-4b0f-b83d-731c270cefa4>" %}

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

<figure><img src="https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LACZmmM2xUWbZxyRr4s%2Fuploads%2Fa8r0b4qI6ER1qtyQXqtm%2FUntitled8.png?alt=media&#x26;token=f2f0fae5-9d77-4748-b20a-92f0dc75d176" alt=""><figcaption></figcaption></figure>

Теперь остается только сохранить сценарий и соответсвенно при появлении записи в каталоге обращений время обработки автоматически установится в начало ближайшего рабочего дня.

<figure><img src="https://1283378397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LACZmmM2xUWbZxyRr4s%2Fuploads%2F1Sa177z52WEjHO7pA8Lf%2FUntitled9.png?alt=media&#x26;token=a8de7bb9-cd88-4d1e-a937-a9b5f98c7a30" alt=""><figcaption></figcaption></figure>
