Ссылки на значения
Синтаксис ${fieldname} используется для обращения к текущему значению другого поля в форме. Он может представлять введённое, выбранное или вычисленное значение — и будет отображаться именно так, как оно появляется в отправленных данных.
Пример:
Если у вас есть поле с именем “age” и вы хотите получить точное значение, введённое в это поле, используйте ${age}.
В ограничениях символ “.” используется для обращения к предложенному пользователем вводу или выбору для текущего поля. Он позволяет применять условия или ограничения на основе значения, которое пользователь вводит или выбирает в данный момент.
Пример:
Если вы хотите проверить, что предложенное значение для текущего поля меньше 3, используйте ограничение . < 3.
.. — Ссылка на родительскую группу
Внутри группы или группы повторений .. ссылается на родительский контекст. На практике это редко нужно, но используется в продвинутых выражениях XPath для навигации по иерархии формы.
Где используются ссылки
| Столбец | Тип ссылки | Пример |
|---|---|---|
relevant | ${fieldname} | ${consent} = 'yes' |
constraint | . для текущего поля, ${fieldname} для других | . > 0 and . <= ${max_value} |
calculation | ${fieldname} | ${adults} + ${children} |
required | ${fieldname} | ${has_income} = 'yes' |
default | ${fieldname} | ${previous_answer} |
label | ${fieldname} в тексте | "Ваш возраст: ${age} лет" |
choice_filter | Имя столбца (без ${}) | district = ${district} |
В столбце choice_filter ссылайтесь на имена столбцов вариантов напрямую (без ${}), а на поля формы — через ${}. Смешение этих подходов является распространённым источником ошибок.
Ссылки на значения внутри групп повторений
Внутри повторения ${fieldname} ссылается на поле в том же экземпляре повторения:
relevant: ${member_age} < 18
Здесь используется значение member_age для текущего экземпляра повторения, а не для всех экземпляров.
Для обращения к полю в конкретном экземпляре повторения извне повторения используйте indexed-repeat():
indexed-repeat(${member_name}, ${household_members}, 1)
Подробности см. в Функции — Функции для повторяющихся полей.
Проверка пустых значений
Проверьте, был ли дан ответ на поле:
${fieldname} != '' (поле не пустое)
${fieldname} = '' (поле пустое)
Для чисел также проверяйте:
${age} > 0 (возраст имеет положительное значение — неявно не пустое в числовом контексте)
Приведение типов в ссылках
Когда ${fieldname} используется в числовом контексте (например, ${age} + 1), rtSurvey автоматически преобразует строковое значение в число. Пустое поле преобразуется в 0 или NaN в зависимости от операции — используйте coalesce(${field}, 0) для безопасной установки значения по умолчанию 0 для пустого числового поля.