Логика переходов, также известная как ветвление или условная логика, позволяет создавать динамические опросы, адаптирующиеся к ответам респондентов. В rtSurvey логика переходов реализуется с помощью столбца relevant в XLSForm.

Базовая логика переходов

Для реализации базовой логики переходов используйте столбец relevant для указания условия:

  | type           | name          | label                       | relevant            |
|----------------|---------------|-----------------------------|--------------------|
| select_one y_n | likes_pizza   | Вы любите пиццу?          |                    |
| select_multiple pizza_toppings | favorite_topping | Любимые начинки | ${likes_pizza} = 'yes' |
  

В этом примере вопрос «Любимые начинки» отображается только если респондент ответил «Да» на вопрос о любви к пицце.

Синтаксис выражений relevant

  • Используйте ${ } для ссылки на переменные других вопросов.
  • Для вопросов select_one сравнивайте напрямую: ${question_name} = 'answer'
  • Для вопросов select_multiple используйте функцию selected().

Расширенная логика переходов

Несколько условий

Объединяйте несколько условий с помощью and, or и скобок:

  | type    | name  | label                   | relevant                                  |
|---------|-------|-------------------------|-------------------------------------------|
| integer | age   | Сколько вам лет?       |                                           |
| text    | school| В какой школе вы учитесь? | ${age} < 18 and (${location} = 'urban' or ${location} = 'suburban') |
  

Использование вопросов select_multiple

Для вопросов select_multiple используйте функцию selected():

  | type           | name          | label                       | relevant                               |
|----------------|---------------|-----------------------------|-----------------------------------------|
| select_multiple pizza_toppings | favorite_topping | Любимые начинки |                                         |
| text           | cheese_type   | Любимый вид сыра     | selected(${favorite_topping}, 'cheese') |
  

Опция «Другое» в вопросах с выбором

Реализуйте свободный ввод для варианта «Другое» с помощью relevant:

  | type           | name                  | label                               | relevant                               |
|----------------|----------------------|-------------------------------------|---------------------------------------|
| select_multiple pizza_toppings | favorite_toppings | Какие у вас любимые начинки пиццы? |                                       |
| text           | favorite_toppings_other | Какие другие начинки вам нравятся?   | selected(${favorite_toppings}, 'other') |
  

Не забудьте включить ‘other’ как вариант в лист choices.

Функции rtSurvey

Динамические условия

rtSurvey позволяет использовать динамические условия на основе вычисляемых полей:

  | type      | name       | label              | calculation                   |
|-----------|------------|--------------------|-----------------------------|
| calculate | total_score| Общий балл        | ${score1} + ${score2} + ${score3} |
| text      | feedback   | Обратная связь    | ${total_score} > 75             |
  

Условия в группах повторений

rtSurvey поддерживает условия внутри групп повторений:

  | type         | name         | label            | relevant               |
|--------------|--------------|------------------|------------------------|
| begin repeat | child_info   | Информация о ребёнке|                        |
| integer      | child_age    | Возраст ребёнка  |                        |
| text         | school_name  | Название школы   | ${child_age} >= 5      |
| end repeat   |              |                  |                        |
  

Каскадные условия

rtSurvey эффективно обрабатывает каскадные условия, когда условие одного вопроса зависит от другого:

  | type           | name        | label                  | relevant               |
|----------------|-------------|------------------------|------------------------|
| select_one y_n | has_car     | У вас есть автомобиль? |                        |
| select_one car_type | car_type | Какой тип автомобиля?    | ${has_car} = 'yes'     |
| text           | model       | Конкретная модель       | ${car_type} = 'sedan'  |
  

Лучшие практики логики переходов в rtSurvey

  1. Простота: По возможности избегайте слишком сложных условий.
  2. Тщательное тестирование: Используйте функцию предпросмотра rtSurvey для тестирования всех возможных путей.
  3. Учитывайте производительность: Сложная логика переходов может влиять на производительность опроса, особенно на мобильных устройствах.
  4. Понятные имена переменных: Это делает выражения условий более читаемыми.
  5. Документируйте логику: Добавляйте примечания для объяснения сложных схем переходов.
  6. Учитывайте анализ данных: Пропущенные вопросы приводят к пропущенным данным. Планируйте анализ соответственно.

Устранение проблем с логикой переходов

  • Синтаксические ошибки: Убедитесь, что все ${ } правильно закрыты и написаны без ошибок.
  • Циклические ссылки: Избегайте создания петель, где вопросы зависят друг от друга.
  • Чувствительность к регистру: Варианты ответов чувствительны к регистру в выражениях условий.
  • Числовые сравнения: Используйте соответствующие операторы (<, >, =) для числовых сравнений.

Заключение

Эффективное использование логики переходов может значительно улучшить опыт респондентов и качество данных в ваших проектах rtSurvey. Используя расширенные функции rtSurvey и следуя лучшим практикам, вы можете создавать динамичные, эффективные опросы.

Была ли эта страница полезной?