Для контроля сроков исполнения задач, назначаемых на пользователей, в Comindware Business Application Platform существует встроенный функционал, который позволяет в настройках задачи указать количество времени, вплоть до секунд, за которое пользователь должен её выполнить. Но бывают случаи, когда сроки, в которые должна быть выполнена задача необходимо установить с учётом рабочих дней.
Для этого существуют функции WORKDAYS() и WORKHOURS(), которые возвращают дату на основании количества рабочих дней или часов с определенной даты. Однако, у этих функций есть ограничение: они учитывают только выходные и не учитывают праздничные дни. Поэтому в данных функциях есть возможность прописать список дат, которые являются нерабочими. Чтобы не прописывать все праздничные даты внутри функции, рекомендуем создать отдельный справочник с календарем выходных и праздничных дней, и при написании выражения с WORKDAYS() и WORKHOURS() ссылаться на него.
1. Создайте шаблон записи «Календарь выходных и праздничных дней».
2. Создайте атрибут с типом данных «Дата и время» и назовите его «Дата».
3. Настройте форму и таблицу, вынеся на них созданный атрибут.
4. Заполните шаблон записи. Перейдите на таблицу, нажмите кнопку «Создать» и в поле «Дата» выберите один из праздничных дней, например, 1 января текущего года.
5. Далее аналогично создайте записи под все праздничные дни, которые есть в текущем году (для последующих лет также нужно будет создать отдельные записи в справочнике).
6. Перейдите в настройки задачи, на которой необходимо установить срок выполнения с учетом рабочих дней. Перейдите на вкладку «Дополнительные», затем выберите в поле «Продолжительность выполнения» вариант «Формула», затем вставьте следующее:
WORKHOURS(NOW(),18,DURATION("PT9H"),DURATION("PT9H"),LIST((from a in db->holliday_calendar select a->Data))) |
где:
holiday_calendar — системное имя шаблона записи, созданного в п.1;
Data — системное имя атрибута, созданного в п.2.
Данная формула расшифровывается следующим образом: начиная с текущего момента (когда процесс создал задачу), отсчитай 18 рабочих часов (продолжительность выполнения задачи), учитывая, что рабочий день стартует в 9 часов утра и длится 9 часов, и учитывая все исключения, указанные в календаре праздников.
Т.е. если задача будет создана 22 февраля 2023 года в 09:00, то с учетом календаря праздников и выражения, которое указано в настройках задачи, крайний срок выполнения задачи будет указан 27 февраля 2023 года в 18:00.
Примечание
WORKHOURS()
, не может превышать 24 часа
Номер Статьи: 2146
Размещено: Thu, Nov 10, 2022
Последнее обновление: Thu, Aug 1, 2024
Online URL: https://kb.comindware.ru/article/kalendar-prazdnikov-nastrojka-i-ispolzovanie-2146.html