Настройка и использование календаря праздников
Для контроля сроков исполнения задач, назначаемых на пользователей, в 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))) |
Данная формула расшифровывается следующим образом: начиная с текущего момента (когда процесс запустил задачу), отсчитай 18 часов (продолжительность выполнения задачи), учитывая, что рабочий день стартует в 9 часов утра и длится 9 часов, и учитывая все исключения, указанные в календаре праздников.
Т.е. если процесс запустится 22 февраля, то с учетом календаря праздников и выражения, которое указано в настройках задачи, крайний срок будет указан 25 февраля.