При расчете срока выполнения задач, срока обработки подписи и других аналогичных задач используются функции добавления рабочих дней/часов/минут. Такие функции доступны при редактировании смарт-выражений (ДобавитьРабочихДней, ДобавитьРабочихЧасов, ДобавитьРабочихМинут) и при разработке хранимых процедур (tc_AddWorkingDays, tc_AddWorkingHours, tc_AddWorkingMinutes).
При расчете сроков используются точка отсчета (например, момент запроса подписи) и интервал времени (например, время, выделенное на обработку подписи), а также учитываются системные параметры из Общих настроек приложения: Рабочее время (с... по...) и Рабочих часов в дне, и системный Производственный календарь (для определения рабочих и выходных/праздничных дней).
Алгоритм расчета срока основан на следующих правилах:
№ |
Правило |
Пример |
Пояснения |
1 |
Если точка отсчета приходится на нерабочее время (до начала рабочего дня, после окончания рабочего дня или на выходной день), то она сдвигается на начало ближайшего рабочего дня. |
Подпись запрошена в 08:00, Подпись запрошена в 20:00, Подпись запрошена в 15:00 в субботу, |
|
2 |
Обычно время от начала до конца рабочего дня больше чем продолжительность рабочего дня, т.е. в середине дня предусмотрен перерыв (например, рабочий день с 10:00 до 19:00, а продолжительность рабочего дня 8 часов – в середине дня есть 1 час перерыва). Но поскольку конкретные часы перерыва неизвестны, считается, что сотрудник может взять перерыв в любое время, даже в самом начале дня. Поэтому если срок переходит на другой рабочий день, время начала рабочего дня сдвигается на время перерыва (например, вместо 10:00 отсчитывается от 11:00). |
||
2.1 |
Если точка отсчета и срок приходятся на один и тот же день и интервал времени меньше продолжительности рабочего дня, время на перерыв не учитывается. |
Точка отсчета – 12:00, |
|
2.2 |
Если точка отсчета и срок приходятся на разные дни, то при переходе на следующий день к началу рабочего дня прибавляется время перерыва. |
Точка отсчета – 16:00, |
С 16:00 до 19:00 – 3 часа, |
3 |
Если интервал времени больше продолжительности рабочего дня, то есть содержит один или несколько рабочих дней, то вместо продолжительности каждого рабочего дня при расчете откладываются сутки. |
||
3.1 |
Интервал времени равен продолжительности рабочего дня. |
Точка отсчета – 14:00 1 октября 2018, |
|
3.2 |
Интервал времени больше одного рабочего дня, но остаток не переходит на следующий рабочий день. |
Точка отсчета – 14:00 1 октября 2018, |
12 часов = 8 часов (продолжительность рабочего дня) + 4 часа. К 14:00 прибавляются сутки – 14:00 следующего рабочего дня, |
3.3 |
Интервал времени больше нескольких рабочих дней, но остаток не переходит на следующий рабочий день. |
Точка отсчета – 14:00 1 октября 2018, |
18 часов = 16 часов (продолжительность двух рабочих дней) + 2 часа. К 14:00 1 октября прибавляются двое суток – 14:00 3 октября, |
3.4 |
Интервал времени больше рабочего дня, и остаток переходит на следующий день. |
Точка отсчета – 18:00 1 октября 2018, |
12 часов = 8 часов (продолжительность рабочего дня) + 4 часа. К 18:00 1 октября прибавляются сутки – 18:00 2 октября, |