Если срок задачи составляет пять рабочих дней, система должна учитывать выходные и праздники, а не просто прибавлять пять дней к дате создания. Для этого производственный календарь можно хранить непосредственно в информационной системе и использовать при расчете дедлайнов.
В демонстрации на Бипиуме производственный календарь представлен отдельным каталогом. Его можно заполнить через внешний сервис, скорректировать с учетом региональных праздников и подключить к сценарию автоматического расчета сроков задач.
Создайте каталог производственного календаря
В каталоге хранится запись для каждой учитываемой даты. В демонстрации используются поля «Дата», «Тип дня» и «Примечание». Тип дня определяет, считается ли дата рабочей или выходной, а примечание позволяет указать причину нестандартного режима.
Такой каталог становится единым источником данных для автоматизаций, которым необходимо учитывать рабочие дни. Например, при создании задачи система сможет обратиться к нему и определить, следует ли включать конкретную дату в расчет срока.
Настройте автоматическое заполнение календаря
В показанном сценарии для получения данных используется внешний сервис dayoff.ru, который возвращает тип дня для производственного календаря Российской Федерации.

Сценарий получает текущий год и идентификатор каталога, после чего последовательно обрабатывает даты и создает записи. В зависимости от ответа сервиса день отмечается как рабочий или выходной.
При необходимости сценарий можно настроить на заполнение только выходных дней. Тогда для рабочих дат записи не создаются, а обработка переходит к следующей дате. Выбор зависит от того, как календарь будет использоваться в дальнейших процессах.
Предусмотрите повторные попытки и продолжение заполнения
При обращении к внешнему сервису возможны ситуации, когда ответ не поступает сразу. В демонстрации предусмотрены повторные попытки с паузами в одну секунду.
Для продолжения после прерывания сценарий ищет последнюю заполненную выходную дату и использует ее как ориентир. Это помогает не начинать заполнение с самого начала, если предыдущий запуск остановился на середине календаря.
Во время вебинара показан случай, когда сервис временно не отвечает, однако заполнение постепенно продолжается. Перед использованием сценария необходимо проверить, как именно определяется последняя обработанная дата и как обрабатываются повторные запуски.
Добавьте региональные праздники
Общероссийский производственный календарь не учитывает все региональные праздники. В демонстрации в качестве примера используется День Конституции Республики Татарстан.
После автоматического заполнения пользователь вручную меняет тип нужной даты на выходной и добавляет пояснение в поле примечания. После этого календарь отображает региональный праздник как нерабочий день.
Если компания работает в нескольких регионах, заранее определите, нужен ли один общий календарь или отдельные календари для разных подразделений. В показанном сценарии региональная корректировка выполняется вручную.
Определите правила расчета сроков
Для автоматического расчета дедлайна используется каталог типов задач. В нем задается название типа и продолжительность выполнения. Например, в демонстрации согласование договора занимает три рабочих дня, подготовка договора — пять рабочих дней, а подписание — десять календарных дней.
При создании задачи система получает ее тип и определяет единицу измерения срока. Это принципиальный момент: число дней без указания их типа не определяет, как именно должен рассчитываться дедлайн.
Рассчитывайте дедлайн в рабочих днях
Если срок задан в рабочих днях, сценарий получает записи производственного календаря и использует их для определения даты завершения.
В демонстрации календарные записи преобразуются во внутренний объект, где дата используется как ключ, а тип дня — как значение. Затем сценарий начинает отсчет от даты создания задачи и последовательно проверяет следующие даты.
Если день рабочий, количество оставшихся рабочих дней уменьшается на единицу. Если выходной — отсчет продолжается. Когда нужное количество рабочих дней исчерпано, полученная дата записывается в задачу.
В показанной реализации для получения записей календаря используется ограничение в 100 дат. Для задач с более длительными сроками это значение необходимо увеличить.
Отделите календарные дни от рабочих
Для календарных дней применяется другой принцип: к дате создания задачи просто прибавляется заданное количество дней. Производственный календарь при этом не используется.
В демонстрации на примере задач показывается разница между двумя вариантами расчета. При одинаковом числовом значении рабочие дни пропускают выходные, а календарные включают их в срок.
Поэтому при настройке типов задач необходимо явно указывать, в каких днях измеряется продолжительность. Это избавляет сотрудников от неоднозначности и помогает применять единые правила расчета.
Настройте резервное правило для отсутствующих дат
В демонстрации предусмотрена обработка ситуации, когда нужной даты нет в каталоге. В таком случае суббота и воскресенье по умолчанию считаются выходными, а остальные дни — рабочими.

Это правило следует оценивать с учетом конкретного процесса. Для обычных внутренних задач оно может быть приемлемым, но если точность календаря критична, лучше заранее определить, что делать при отсутствии записи: использовать резервную логику или останавливать расчет для проверки данных.
Проверьте работу на тестовых задачах
После настройки создайте несколько задач с разными типами сроков. Проверьте, как рассчитывается дедлайн при наличии выходных между датой создания и датой завершения. Отдельно проверьте задачу с календарным сроком, для которой производственный календарь не должен влиять на результат.
Также стоит проверить региональную корректировку, повторный запуск заполнения после прерывания и ситуацию, когда нужная дата отсутствует в каталоге.
Исходную демонстрацию настройки можно посмотреть здесь:
Производственный календарь в Бипиуме можно использовать как общий источник правил для автоматизированных процессов. После настройки каталога и расчета дедлайнов следующий шаг — определить, какие еще процессы организации должны учитывать рабочие и нерабочие дни.
