Арифметические операторы
+ сложение
- вычитание
* умножение
/ деление
% деление по модулю
** возведение в степень
~ конкатенация строк
order.totalSumm * 0.01 # 1% от суммы заказа
order.summ + order.deliveryCost # сумма товаров + стоимость доставки
order.id~'API' # 12345API
Операторы сравнения
== (==) равно=== (===) идентично (равно по значению и по типу)!= (!=) не равно!== (!==) не идентично< меньше> больше<= (<=) меньше либо равно>= (>=) больше либо равноmatches удовлетворяет регулярному выражениюnot matches не удовлетворяет регулярному выражению
Примечание
Обратите внимание, что в регулярных выражениях
\ является спецсимволом, и его необходимо всегда экранировать. Например, \d необходимо записывать как \\dorder.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"] # тип доставки изменился на любой, кроме почты России или СДЭК