Календарь праздников. Настройка и использование
Для контроля сроков исполнения задач, назначаемых на пользователей, в Comindware Platform существует встроенный функционал, который позволяет в настройках задачи указать количество времени, вплоть до секунд, за которое пользователь должен её выполнить. Но бывают случаи, когда сроки, в которые должна быть выполнена задача, необходимо установить с учётом рабочих дней.
Для этого существуют функции WORKDAYS() и WORKHOURS(), которые возвращают дату на основании количества рабочих дней или часов с определённой даты. Однако у этих функций есть ограничение: они учитывают только выходные и не учитывают праздничные дни. Поэтому в данных функциях есть возможность прописать список дат, которые являются нерабочими. Чтобы не прописывать все праздничные даты внутри функции, рекомендуем создать отдельный справочник с календарём выходных и праздничных дней и при написании выражения с WORKDAYS() и WORKHOURS() ссылаться на него.
Порядок настройки
-
Создайте шаблон записи «Календарь выходных и праздничных дней».
-
Создайте атрибут типа «Дата и время» и назовите его «Дата».
-
Настройте форму и таблицу, вынеся на них созданный атрибут.
-
Заполните шаблон записи. Перейдите на таблицу, нажмите кнопку «Создать» и в поле «Дата» выберите один из праздничных дней, например, 1 января текущего года.
-
Аналогично создайте записи под все праздничные дни, которые есть в текущем году (для последующих лет также нужно будет создать отдельные записи в справочнике).
-
Перейдите в настройки задачи, на которой необходимо установить срок выполнения с учётом рабочих дней. Перейдите на вкладку «Дополнительные», затем выберите в поле «Продолжительность выполнения» вариант «Формула» и вставьте следующее:
WORKHOURS(NOW(),18,DURATION("PT9H"),DURATION("PT9H"),LIST((from a in db->holliday_calendar select a->Data)))
Синтаксис
Здесь:
| Значение | Описание |
|---|---|
holliday_calendar |
Системное имя шаблона записи, созданного в п. 1. |
Data |
Системное имя атрибута, созданного в п. 2. |
Данная формула расшифровывается следующим образом: начиная с текущего момента (когда процесс создал задачу), отсчитай 18 рабочих часов (продолжительность выполнения задачи), учитывая, что рабочий день стартует в 9 часов утра и длится 9 часов, и учитывая все исключения, указанные в календаре праздников.
То есть если задача будет создана 22 февраля 2023 года в 09:00, то с учётом календаря праздников и выражения, указанного в настройках задачи, крайний срок выполнения задачи будет указан 27 февраля 2023 года в 18:00.
Примечание
- Продолжительность рабочего дня, то есть сумма третьего и четвёртого аргументов функции
WORKHOURS(), не может превышать 24 часа. - Если в календарь праздников добавить выходной день (субботу или воскресенье), то при вычислении выражения он будет рассматриваться как рабочий.