Помогите с условием для показа вопроса

More
2 years 6 months ago - 2 years 6 months ago #118793 by pavelb
pavelb created the topic: Помогите с условием для показа вопроса
Добрый день.

Есть 3 вопроса (q1,q2,q3).

q1:
сам вопрос: Выберите несколько ответов из списка
тип вопроса: Multiple choice ( множественный выбор ответов )
ответы (код - значение):
SQ001 - ответ 1
SQ002 - ответ 2
SQ003 - ответ 3
SQ004 - ответ 4
SQ005 - ответ 5
SQ006 - ответ 6

Никаких других значимых условий для этого вопроса нет
Вопрос работает нормально.

q2:
сам вопрос: укажите соотношение ответов в процентах
тип вопроса: Multiple numerical input ( множественный ввод суб-ответов, ограничен вводом чисел )
ответы (код - значение):
SQ001 - ответ 1
SQ002 - ответ 2
SQ003 - ответ 3
SQ004 - ответ 4
SQ005 - ответ 5
SQ006 - ответ 6
ответы совпадают с ответами предыдущего вопроса, только в первом я мог просто натыкать нужные, а тут необходимо указать числовые значения

ДОП УСЛОВИЕ: Array filter : q1 ( это значит, что в впросе q2 мне покажутся только те коды ответов, которые я выбрал в вопросе q1 )
Вопрос работает нормально.

И наконец вопрос q3:
текст вопроса: сумма ваших ответов меньше 100. Расскажите почему.
тип вопроса: Long free text ( длинный текст в свободной форме )

И наконец то сабж:
Вопрос q3 должен показаться пользователю только в том случае, если в вопросе q2 сумма ответов меньше 100

В conditions designer-е естественно условия на сумму значений нет. Написать сам не смог.
Вот мои примеры условий (Relevance equation):

Relevance equation:
sum(
if( intval(q2_SQ001), q2_SQ001, 0),
if( intval(q2_SQ002), q2_SQ002, 0),
if( intval(q2_SQ003), q2_SQ003, 0),
if( intval(q2_SQ004), q2_SQ004, 0),
if( intval(q2_SQ005), q2_SQ005, 0),
if( intval(q2_SQ006), q2_SQ006, 0)
) < 100

Он работает только в случае, если в q1 я выберу все овтеты, следовательно мне покажутся все ответы в q2

Уже пробовал is_empty, is_numeric, is_null и т.д. Вмето "sum()" пробовал просто суммировать через "+". Убирал IF и т.д.

Ничего не получилось.

Такое ощущение, что если в q2 не выводится один из ответов то все условие в q3 игнорируется.

Спасибо за помощь.
Версия LimeSurvey 2.05+ Build 150310
Last Edit: 2 years 6 months ago by pavelb.

Please Log in to join the conversation.

More
2 years 6 months ago #118795 by pavelb
pavelb replied the topic: Помогите с условием для показа вопроса
В общем решение найдено :)

manual.limesurvey.org/Expression_Manager параграф "Overriding Cascading conditions"

Курить надо мануалы качественнее))

В кратце:
sum() не работает если хотя бы один аргумент ложный. Будет возвращать всегда ложный результат.
В моем случае ложные элементы те ответы q2, которые были отфильтрованы на основе ответов в q1.
Решается просто припиской ".NAOK" к каждому элементу ( suffix (meaning that Not Applicable is OK) )

Итого условие в Relevance equation q3 должно быть таким:
sum(
q2_SQ001.NAOK,
q2_SQ002.NAOK,
q2_SQ003.NAOK,
q2_SQ004.NAOK,
q2_SQ005.NAOK,
q2_SQ006.NAOK
) < 100

Please Log in to join the conversation.

Moderators: vipgroup

Start now!

Just create your account and start using Limesurvey today.

Register now