В некоторых действиях бизнес-процессов (активити) Битрикс24, таких как:
- Утверждение документа
- Ознакомление с документом
- Запрос дополнительной информации,
есть свойство Период утверждения (ознакомления):
Особенностью этого свойства является то, что в нём указываются значения не в формате Дата/время а в единицах измерения (секунды, минуты, часы, дни)
Когда у нас по логике бизнес-процесса есть фиксированное значение или же какая-то числовая переменная - то проблем не возникает.
Однако если у нас эти данные динамические, то так просто их в это свойство не внести!
Например у нас есть бизнес-процесс по согласованию документа.
Запуская бизнес-процесс, пользователь указывает срок согласования, причем фиксирует его в поле с типом Дата/время:
Т.е к примеру получаем значение в формате: 20.11.2024 11:20
Соответственно нам для подстановки в свойство Период утверждения (ознакомления) необходимо высчитать это значение в какой-то единице измерения времени, так как данные с типом Дата/время на данный момент. подставить нельзя, только числовое значение.
Итак, приступим!
1) Для начала определим, что срок согласования у нас может быть любой, 20 минут, или 20 часов, дней или месяцев. В секундах точно не будет.
Значит нам надо перевести наш срок согласования в минуты.
2) Создадим 3 переменные в бизнес-процессе и запишем в каждую из них отдельно Минуты, Часы и Дни - разницы между нашей Датой согласования и текущего значения Даты/времени. с помощью формулы datediff:
Минуты: {{=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) После этого, преобразуем часы и дни в минуты и сложим все вместе:
Формула: ={=Variable:Minutes}+({=Variable:Hours}*60)+({=Variable:Days}*24*60)
В итоге у нас в бизнес-процессе получается вот такой подготовительный блок:
4) Запись в отчет - тоже не забываем, чтобы потом по логам можно было посмотреть какие значения были отработаны.
5) Далее полученное значение вставляем в свойство нашего действия бизнес-процесса:
Также этот метод преобразования даты в количество единиц времени можно использовать и в других случаях, например для расчета почасовой (поминутной) оплаты или расчета стоимости услуг и пр.