Перейти к основному содержимому

Подстановка в текст вопроса ответов из предыдущих вопросов

· 5 мин. чтения

Часто возникает необходимость подставить в текст вопроса, в комментарий оператору или в текст ответа выбранный в предыдущем вопросе текст варианта ответа. Сделать это можно аж тремя способами.

примечание

Если вам нужно задавать вопросы для каждого ответа другого вопроса, читайте эту статью.

Пример анкеты

Предположим, в анкете есть такие вопросы:

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['Магазин'] = '!ОШИБКА!';
}