Каскадные выборки используются для ограничения списка доступных ответов на основании ответов, полученных на предыдущий вопрос, и их содержание можно сохранять в самой форме XLSForm либо во внешнем файле.
Каскадные выборки
Каскадные выборки используются для ограничения списка доступных ответов на основании ответов, полученных на предыдущий вопрос. Они облегчают выполнение опросов, поскольку списки вариантов для выбора остаются небольшими, предоставляя пользователю только актуальные опции.
Для каждого списка вариантов в иерархии выполните следующие действия:
- Введите значения для списков вариантов на вкладке choices.
- Добавьте один или несколько столбцов к критерию каскадной выборки (например, страна, область, город, район).
- Введите подходящие значения для каждого варианта в этих дополнительных столбцах.
Не рекомендуется включать дубликаты имен в списке выбора. Подробнее см. раздел Вопросы с несколькими вариантами ответов.
После того, как списки вариантов заполнены, необходимо создать столбец choice_filter на вкладке survey. Этот столбец содержит выражение, используемое для ограничения ваших списков вариантов. В столбце choice_filter поддерживается содержимое другого поля, например, state=${state_1}, или выражение, к примеру, selected(${states_visited},state_code).
Чтобы увидеть в действии каскадные выборки, изучите пример Фильтры выборов и Каскадные выборки в Survey123 Connect.
Каскадные выборки можно использовать в вопросах select_one, select_multiple и rank. Каскадные выборки не поддерживаются вопросами rank в веб-приложении Survey123.
Подсказка:
При просмотре результатов опроса с вопросами, использующий каскадные выборки, отображается только имя отправленного варианта. Это отличается от поведения вопросов select_one или select_multiple без фильтра вариантов, когда вместо него отображается подпись варианта.
Используйте функцию jr:choice-name() в другом вопросе, чтобы вернуть и сохранить надпись, ассоциированную с вариантом ответа на вопрос. Концептуально это может быть представлено при помощи jr:choice-name(string value, 'question name').
В jr:choice-name(${city_choice}, '${city_choice}'), первый параметр представляет выбранное значение, а второй – имя вопроса. Имя вашего вопроса надо задавать внутри кавычек.
Для вопросов select_multiple вам нужно воспользоваться selected-at() для извлечения подписи для отдельных ответов. Например:
jr:choice-name(selected-at(${city_choice}, 1), '${city_choice}')
Функцию jr:choice-name() можно использовать для всех строковых вопросов. При использовании скрытого вопроса также определите bind::esri:fieldType и bind::esri:fieldAlias.
Внимание:
Начиная с версии Survey123 3.12, списки выбора управляются через внутреннюю базу данных. Это означает, что вы не можете использовать зарезервированные ключевые слова SQLite для имен столбцов при каскадной и внешней выборке.
Внешние выборки
Списки вариантов, связанные с каскадными выборками, могут стать очень большими и повлиять на производительность ваших форм. Survey123 содержит опцию для сохранения этих списков во внешний файл и загрузки их в опрос по требованию.
Для внедрения этой опции создайте вкладку в рабочей книге опроса, под названием external_choices. Эта новая вкладка должна содержать те же заголовки столбцов, что и вкладка choices. После публикации опроса значения со вкладки external_choices будут сохранены в файл itemsets.csv в папке media вашего проекта опроса, а не в элементе формы. Чтобы ссылаться на списки вариантов, находящиеся на вкладке external_choices, используйте select_one_external в качестве префикса для имени списка.
Внешняя выборка отличается от внешнего списка выбора, для которого не требуется рабочий лист external_choices.
Примечание:
Внешняя выборка доступна только для вопросов select_one. Она не поддерживается для вопросов select_multiple.
Внешние выборки разработаны для работы со списками вариантов, связанных с каскадной выборкой. Только варианты с примененным фильтром выбора будут добавлены в файл itemsets.csv.