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

Часто возникает необходимость в текст вопроса (или в комментарий оператору) подставить выбранный вариант ответа из предыдущего вопроса. Например ситуация:

    Q1: Какой продуктовый магазин Вы посещаете чаще всего?
        1 - Магазин А
        2 - Магазин Б
        3 - Магазин В
    Q2: Почему Вы так любите магазин _________ ?

Допустим вопрос Q1 - единственный выбор, и мы хотим в Q2 подставить название выбранного магазина. Делается это просто. В вопросе Q2 в тексте указываем вместо прочерков - имя переменной, в которую запишем выбранный магазин:

    Q2: Почему Вы так любите магазин {magaz}?

Теперь пишем в скрипт перед показом для вопроса Q2 следующее:

if (Q1.isAnswered) {
    V['magaz'] = Q1.getChecked()[0].text;
} else {
    V['magaz'] = '!ОШИБКА!';
}

т.е. мы сначала проверяем, на всякий случай, что вопрос Q1 отвечен, и если это так - в глобальную переменную magaz записываем текст выбранного варианта ответа из Q1.

Единожды присвоенное значение глобальной переменной можно использовать и дальше, в следующих вопросах. Т.е. и в каком-нибудь Q3 можно спросить что-то про тот же {magaz}, не прописывая в него скриптов.

Думаю у многих возникнет закономерный вопрос - а что делать, если в списке вариантов ответа есть открытое значение, и далее нам надо спросить именно про то, что написал оператор в этом поле? Усложняем наши вопросы:

    Q1: Какой продуктовый магазин Вы посещаете чаще всего?
        1 - Магазин А
        2 - Магазин Б
        3 - Магазин Ц
        98 - Другое (ЗАПИШИТЕ)
    Q2: Почему Вы так любите магазин {magaz}?

Т.е. получается, что если выбраны коды 1,2,3 - то всё по прежнему, а если 98 - тут надо взять не текст варианта ответа, а введенное открытое значение. Меняем скрипт перед показом для Q2 следующим образом:

if (Q1.isAnswered) {
    var A = Q1.getChecked()[0];
    V['magaz'] = (A.code == 98) ? A.openValueTxt : A.text;
} else {
    V['magaz'] = '!ОШИБКА!';
}

Т.е. для удобства, сначала в переменную A мы получаем выбранный вариант ответа из Q1, а далее, если код этого варианта ответа 98 - берем его открытое значение из свойства openValueTxt, а если любой другой код - то просто text.