Описание синтаксиса выражений
Для написания условий показа вопросов, условий выполнения действий перед показом и после ответа на вопрос, а также для условий в счетчиках и квотах - используются выражения. Синтаксис выражений прост и интуитивно понятен.
Допустимые операции
- операции сравнения
=
,!=
,>
,<
,>=
,<=
, - логические операции
and
,or
,not
, - скобки с любой степенью вложенности.
Примеры выражений
Q1 = 5
Это выражение выполняется, если в вопросе Q1 выбран код 5, причем не важно какого типа вопрос - одиночный выбор или множественный. Также такое выражение вполне можно использовать с табличными вопросами, и оно выполнится, если в любой строке табличного вопроса выбран код 5.
Q1 > 5 and Q3 != 6
Выполняется, если в Q1 выбран любой код больше 5 и, одновременно, в Q3 не выбран код 6. При этом важно понимать, как работает проверка на неравенство. Выражение Q3 != 6 дословно звучит так: в вопросе Q3 выбран любой код не равный 6. Таким образом, эта проверка будет работать как ожидается для вопроса с единственным выбором, а если вопрос с множественным выбором - могут быть неожиданные результаты, т.к. если, например, в вопросе выбраны варианты с кодами 1,3,6, то условие Q3 != 6 успешно выполнится, потому что есть ответы, не равные 6.
Q1 and not Q4
Выражение выполняется если есть любой ответ на вопрос Q1, и нет никакого ответа на Q4.
Q1(code = 4 or code = 7)
Если необходимо проверить несколько условий для одного вопроса - можно написать любое выражение в скобках. Переменная code будет содержать код ответа на вопрос с одиночным выбором или список всех отмеченных кодов для множественного выбора. Настоятельно рекомендуется использовать именно такую запись при проверке нескольких ответов в одном вопросе. Если нужно проверить, выбраны ли в вопросе ответы одновременно - условие должно быть таким: Q1 = 4 and Q1 = 7.
Q1(row = 3 and code = 2) or Q2(row >= 2 and row <= 5 and code = 4)
Если необходимо проверить ответ в строке табличного вопроса - соответствующее выражение нужно указывать в скобках. Данное выражение выполнится, если в третьей строке Q1 выбран ответ 2 или в одной из строк 2-5 Q2 выбран ответ 4. Если нужно проверить, выбран ли ответ в нескольких строках одновременно - необходимо проверять каждую строку отдельно: Q1(row = 3 and code = 2) and Q1(row = 4 and code = 2).
Q1(valueNum > 18 and valueNum < 60) and Q2(valueTxt = "Hello")
Для работы с числовыми или текстовыми значениями можно использовать переменные valueNum (целые и дробные числа), valueInt (целые числа - дробные, округлённые до целых) и valueTxt (текст). Добавив переменную code, можно проверить значение у конкретного варианта ответа в вопросе с выбором: Q1(code = 1 and valueNum < 18). Для проверки поля на пустоту используйте специальное значение null: Q1(code = 1 and valueNum = null).
Q(row = 3 and code = null and valueNum = 3)
Таким выражением можно проверить значение в числовом поле строки (не ответа).
Q(row = 98 and code = null)
А такое выражение выполняется, если в числовом или текстовом поле строки таблицы (не ответа) есть любое значение. Его можно инвертировать, добавив not в начале, и тогда оно выполнится, если в полях указанной строки ничего нет.
1 = 1
, а также any
или all
Такое выражение всегда выполняется и удобно использовать, например, в счетчиках, как условие для подсчета всех интервью в проекте.
Дополнительные возможности выражений в условиях для действий
При написании условий для действий после ответа на вопрос - можно не указывать номер вопроса, если необходимо проверить что-то именно в этом вопросе. Например, вполне можно написать такое выражение:
Q = 99 or Q1 > 1
Т.е. если в выражении указано просто Q
, то имеется ввиду сам вопрос, к которому это выражение относится. Настоятельно рекомендуется использовать такую сокращенную запись при проверке ответа на сам вопрос.