Перейти к содержанию

Настройка и использование календаря праздников

Для контроля сроков исполнения задач, назначаемых на пользователей, в 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 февраля.

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

Исследования осуществляются <br>ООО «Колловэар» при грантовой <br>поддержке Фонда «Сколково»
Comindware