Найти в Дзене
OPTIMA-CRM

Как подставлять правильно значение в свойство Период утверждения в активити (действия) бизнес-процессов Битрикс24

В некоторых действиях бизнес-процессов (активити) Битрикс24, таких как:
- Утверждение документа
- Ознакомление с документом
- Запрос дополнительной информации,

есть свойство Период утверждения (ознакомления):

Особенностью этого свойства является то, что в нём указываются значения не в формате Дата/время а в единицах измерения (секунды, минуты, часы, дни)

Когда у нас по логике бизнес-процесса есть фиксированное значение или же какая-то числовая переменная - то проблем не возникает.

Однако если у нас эти данные динамические, то так просто их в это свойство не внести!

Например у нас есть бизнес-процесс по согласованию документа.
Запуская бизнес-процесс, пользователь указывает срок согласования, причем фиксирует его в поле с типом Дата/время:

-2

Т.е к примеру получаем значение в формате: 20.11.2024 11:20
Соответственно нам для подстановки в свойство Период утверждения (ознакомления) необходимо высчитать это значение в какой-то единице измерения времени, так как данные с типом Дата/время на данный момент. подставить нельзя, только числовое значение.

Итак, приступим!

1) Для начала определим, что срок согласования у нас может быть любой, 20 минут, или 20 часов, дней или месяцев. В секундах точно не будет.
Значит нам надо перевести наш срок согласования в минуты.

2) Создадим 3 переменные в бизнес-процессе и запишем в каждую из них отдельно Минуты, Часы и Дни - разницы между нашей Датой согласования и текущего значения Даты/времени. с помощью формулы datediff:

-3

Минуты: {{=datediff({=Template:Terminate}, {=System:Now},'%i')}}
Часы: {{=datediff({=Template:Terminate}, {=System:Now},'%h')}}
Дни: {{=datediff({=Template:Terminate}, {=System:Now},'%a')}}

Месяцы не выделяем, так как параметр в функции
%a умеет преобразовывать месяцы в количество дней, а вот параметры для минут и часов - выводят только то, что из полученной разницы нужно отобразить , т.е. если разница 1 день 2 часа - параметр %h выведет только 2 часа, а 24 часа потеряются, и будет неверное значение!

3) После этого, преобразуем часы и дни в минуты и сложим все вместе:

-4

Формула: ={=Variable:Minutes}+({=Variable:Hours}*60)+({=Variable:Days}*24*60)

В итоге у нас в бизнес-процессе получается вот такой подготовительный блок:

-5

4) Запись в отчет - тоже не забываем, чтобы потом по логам можно было посмотреть какие значения были отработаны.

5) Далее полученное значение вставляем в свойство нашего действия бизнес-процесса:

-6

Также этот метод преобразования даты в количество единиц времени можно использовать и в других случаях, например для расчета почасовой (поминутной) оплаты или расчета стоимости услуг и пр.