Арифметические операторы
+
сложение
-
вычитание
*
умножение
/
деление
%
деление по модулю
**
возведение в степень
~
конкатенация строк
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"] # тип доставки изменился на любой, кроме почты России или СДЭК