Часто возникает необходимость подставить в текст вопроса, в комментарий оператору или в текст ответа выбранный в предыдущем вопросе текст варианта ответа. Сделать это можно аж тремя способами.
Если вам нужно задавать вопросы для каждого ответа другого вопроса, читайте эту статью.
Пример анкеты
Предположим, в анкете есть такие вопросы:
Q1. Какой продуктовый магазин Вы посещаете чаще всего?
1. Магазин А
2. Магазин Б
3. Магазин В
98. Другое (запишите) ___Q2. Почему Вы так любите магазин ___ ?
И на место прочерка в Q2 должно подставляться название магазина из Q1.
Подстановки
В системе предусмотрены специальные подстановки, и сделать это очень просто. В тексте вопроса Q2 вместо прочерков указываем номер вопроса, откуда нужен ответ, в фигурных скобках:
Q2. Почему Вы так любите магазин {Q1}?
Если в Q1 можно выбрать только один ответ, то подстановка {Q1}
будет заменена на текст этого ответа. Если несколько — будут указаны все выбранные ответы через запятую. Причём, если выбран ответ 98, то подставится значение из текстового поля, а не текст самого́ ответа.
Эта подстановка работает, если Q1 — текстовый или числовой вопрос, единственный или множественный выбор (включая выпадающий список), рейтинг и клик-тест: текстовый.
Как подставить значение из конкретного поля ответа или строки таблицы, смотрите здесь.
Для обращения к числовому полю используется буква N
, к текстовому — T
, после кода ответа или строки.
Примеры:
- {Q5.1N} — число из числового поля ответа 1, если вопрос с выбором ответа, или из числового поля строки 1, если вопрос любой табличный.
- {Q5.98T} — текст из текстового поля ответа 98, если вопрос с выбором ответа, или из текстового поля строки 98, если вопрос любой табличный.
- {Q5.1} — текст или число ответа в строке 1 табличных текстового, числового и рейтингового вопросов.
- {Q5.1.2N} — число из числового поля ответа 2 в строке 1 табличного вопроса с выбором ответа.
- {Q5.2.98T} — текст из текстового поля ответа 98 в строке 2 табличного вопроса с выбором ответа.
Под строкой таблицы подразумевается то, что находится в списке строк.
Обычно стандартных подстановок достаточно в большинстве случаев, но если нет — можно воспользоваться действиями или скриптами. Например, вы хотите использовать собственные подстановки (переменные) или текст ответа должен быть в другом падеже. Об этом речь пойдёт в следующих разделах.
При форматировании текста с подстановкой (жирным, курсивом или как-либо ещё) выделяйте подстановку вместе со скобками, чтобы внутрь них не попали HTML-теги.
Если подстановка не заменяется текстом ответа, проверьте исходный код. Для этого переключите редактор в режим исходного кода кнопкой </>
. Например, верное выделение жирным выглядит так: <b>{Q1}</b>
. Неверно: <b>{Q1</b>}
, {<b>Q1</b>}
и любые другие комбинации.
Действия
Допустим, клиент хочет, чтобы в тексте вопроса Q2 подстановка называлась Магазин, которая заменяется названием в предложном (местном) падеже.
Q2. Почему Вы часто бываете в [Магазин в предложном падеже]?
Для присваивания значения переменной используются действия с необходимыми условиями:
- Установить значение переменной,
- Установить значение переменной из открытого ответа указанного вопроса.
В первом действии нужно указать имя переменной в первом длинном поле, а значение — во втором.
Во втором действии — имя переменной — в первом длинном поле, номер вопроса, откуда брать ответ, во втором коротком, а код ответа — во втором длинном.
В нашей анкете действия можно добавить либо после ответа в Q1, либо перед показом Q2. Например, форма добавления одного из действий перед показом Q2 выглядит так:
После добавления действий для каждого ответа, в тексте Q2 пишем {Магазин}
, и всё работает, как надо.
- Если Q1 = 1, то установить значение переменной "Магазин" в "Магазине А"
- Если Q1 = 2, то установить значение переменной "Магазин" в "Магазине Б"
- Если Q1 = 3, то установить значение переменной "Магазин" в "Магазине В"
- Если Q1 = 98, то установить значение переменной "Магазин" из открытого ответа вопроса Q1, код 98
Здесь, действительно, текст ответа 98 подставляется как есть, без склонения. :) Мы не можем знать, что захочет написать респондент.
Если очень хочется склонять фразы автоматически, мы можем добавить в SURVEYSTUDIO интеграцию с таким сервисом.
Скрипты
Примеры из разделов выше можно реализовать и с помощью скриптов.
Просто подставить текст ответа в переменную Название
из вопроса с единственным или множественным выбором ответа можно таким скриптом перед показом Q2:
if (Q1.isAnswered) {
let s = '';
for (let A of Q1.getChecked()) {
s += s.length > 0 ? ', ' : '';
s += A.flags & AnswerFlags.OpenValueTxt ? A.openValueTxt : A.text;
}
V['Название'] = s;
} else {
V['Название'] = '!ОШИБКА!';
}
Здесь мы сначала проверяем, на всякий случай, что вопрос Q1 отвечен, и если это так — проходим в цикле по всем выбранным в Q1 ответам, добавляя через запятую их тексты в переменную s
, а затем помещаем результат в переменную Название
.
Условие A.flags & AnswerFlags.OpenValueTxt ? A.openValueTxt : A.text
на русский можно перевести так: если у ответа есть текстовое поле, то берём значение из него; иначе берём текст самого́ ответа.
Для примера с падежами скрипт можно написать так:
if (Q1.isAnswered) {
let names = {
1: 'Магазине А',
2: 'Магазине Б',
3: 'Магазине В',
98: Q1.answers[98].openValueTxt,
}
let s = '';
for (let code of Q1.getCheckedCodes()) {
s += s.length > 0 ? ', ' : '';
s += code in names ? names[code] : 'В объекте names отсутствует название магазина для кода ' + code;
}
V['Магазин'] = s;
} else {
V['Магазин'] = '!ОШИБКА!';
}