divanus
@divanus
junior php bitrix python

Бизнес-процесс в Битрикс24. Проверка условий по переменным — где я ошибаюсь?

В бизнес-процессе подаются при его выполнении данные, которые заносятся в переменные DATE1 и DATE2
далее в конструкторе ставлю условие: если меньше 4 дней, то остановка БП с сообщением пользователю.

=if ({=Variable:TODAY{{=datediff({=Variable:DATE1}, {=System:DATE}, '%d' ) }}} <4, 'true')

Если 4 и более, то переход дальше
=if ({=Variable:TODAY{{=datediff({=Variable:DATE1}, {=System:DATE}, '%d' ) }}} >=4 , 'true')

Этот шаг проходит - как буд-то его и нет при чем по правильному условию (т.е. по "левой" ветке бизнес-процессов).

Ваши предложения?

Тип условия: значение переменной; свойство переменной TODAY (которая и вычисляется); условие: равно и далее уже варианты выбе согласно https://helpdesk.bitrix24.ru/open/5428897/

5be1b4353c69c909430817.jpeg
  • Вопрос задан
  • 9461 просмотр
Решения вопроса 1
divanus
@divanus Автор вопроса
junior php bitrix python
Решил следующим образом:
5be1f798560cb999281135.jpeg
Добавил блок действий - расчет дат.
В нем:
1. DATE1 = {=Document:PROPERTY_DATE1}
DATE2 = {=Document:PROPERTY_DATE2}

2. Урезал дату
DATE1 = {{=substr({=Variable:DATE1},0,10)}}
DATE2 = {{=substr({=Variable:DATE2},0,10)}}

3. Длина отрезка времени между двух дат
TODAY = {{=datediff({=Variable:DATE1},{=System:Date},'%a')}} переменная названа некрасиво, согласен
заодно расчитал количество дней отпуска
DAYS = {{=datediff({=Variable:DATE2},{=Variable:DATE1},'%a')}}
В качестве формата выбрал '%a'
4. Проверил вывод
5be1f8d503bd2796441424.jpeg
5. Условие
5be1f90258e0a235248417.jpeg5be1f963b4adb368367798.jpeg5be1f969868a6016931057.jpeg
6. Утверждение документа
5be1f9713350e271883941.jpeg
7. Постановка задачи отделу персонала
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
gromdron
@gromdron Куратор тега Битрикс24
Работаю с Bitrix24
Эм... а что у Вас за жесть со скобками происходит?

Это не нормально
=if ({=Variable:TODAY{{=datediff({=Variable:DATE1}, {=System:DATE}, '%d' ) }}} <4, 'true')


Для корректной работы создайте 2 переменных:

1) Количество дней (тип "Число"), которое будет хранить разницу между двумя числами
2) Условие (тип "Да/Нет"), которое будет хранить соответствие условий количества дней

Лучше разделить эти переменные, так как в случае усложнения процесса количество дней и условие может ветвится.

В блоке изменение переменных можно прописать соответствующие значения
Для получения разницы:
=datediff({=Template:DATA1}, {=System:Now}, '%d')

Для сравнения
=if({=Variable:diffDate}<4, 'Y', 'N')
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы