Арифметические операторы
+ сложение
- вычитание
* умножение
/ деление
% деление по модулю
** возведение в степень
~ конкатенация строк
order.totalSumm * 0.01 # 1% от суммы заказа
order.summ + order.deliveryCost # сумма товаров + стоимость доставки
order.id~'API' # 12345API
Операторы сравнения
== (==) равно
=== (===) идентично (равно по значению и по типу)
!= (!=) не равно
!== (!==) не идентично
< меньше
> больше
<= (<=) меньше либо равно
>= (>=) больше либо равно
matches удовлетворяет регулярному выражению
not matches не удовлетворяет регулярному выражению
Примечание
Обратите внимание, что в регулярных выражениях
\является спецсимволом, и его необходимо всегда экранировать. Например,\dнеобходимо записывать как\\d
order.status.groupCode == "approval" # статус заказа в группе Согласование
order.deliveryCost <= 500 # стоимость доставки заказа меньше либо равно 500
order.source.sourceName matches "/yandex/" # заказ, у которого в источнике фигурирует "yandex"
order.customerComment not matches "/test/" # комментарий оператора не содержит слова "test"
Логические операторы
not отрицание
and логическое и
or логическое или
order.quantity < 2 and not changeSet.hasChangedField("status") # общее количество товаров в заказе менее 2 и не изменился статус заказа
changeSet.hasChangedField("delivery_cost") or changeSet.hasChangedField("delivery_net_cost") # изменилась стоимость или себестоимость доставки
Операторы работы с массивами
in входит в массив
not in не входит в массив
changeSet.hasChangedField("status") and changeSet.newValue("status").groupCode in ["complete", "cancel"]
# статус заказа изменился на статус из групп Выполнен либо Отменен
changeSet.hasChangedField("delivery_type") and changeSet.newValue("delivery_type").code not in ["russian-post", "sdek"] # тип доставки изменился на любой, кроме почты России или СДЭК