УС
Участник сообщества #91
19 февр. 2026 г., 16:49(изменён)
Решено
0
0

Получение ответов по опросам в настраиваемых отчетах

Из чата сообщества

Добрый день! Подскажите, как можно (если можно) стандартными методами в настраиваемых отчетах получить ответы по опросам из определенной процедуры опросов? Из объекта "Результаты опросов" в поле "Значение" корректно выводятся только значения из текстовых полей, но если в опросе есть вопросы с вариантами ответов, то вопросы и ответы на них не получается вывести

С
Система19 февр. 2026 г., 17:01(изменён)
Решение
var jsonRequest = tools.read_object(Request.Body, 'json');
var query;
var request;
query = "sql:select id from poll_results pr where pr.poll_id = 7222814830845055839 and pr.person_id = " + jsonRequest.coll_id;
request = ArrayDirect(XQuery(query));
docPollResult = tools.open_doc(request[0].id).TopElem;

for (qst in docPollResult.questions) {

    // Найти исходный вопрос
    _pq = ArrayOptFind(
        tePoll.questions,
        "This.id==" + CodeLiteral(qst.id)
    );
    if (_pq == undefined)
        continue;
    // Числовой вопрос
    if (_pq.type == "number" && OptReal(qst.value) != undefined) {
        noSort_arrayRes.push({ 'value': OptInt(_ent.weight), 'id': OptInt(String(_pq.title).split('.')[0]), 'title': String(_pq.title) });
    }

    // Choice / Combo
    else if (_pq.type == "choice" || _pq.type == "combo") {

        // Приводим qst.value к числу для корректного поиска
        _ent = ArrayOptFind(
            _pq.entries.entry,
            "This.id==" + OptInt(qst.value)
        );
        if (_ent != undefined) {
            noSort_arrayRes.push({ 'value': OptInt(_ent.weight), 'id': OptInt(String(_pq.title).split('.')[0]), 'title': String(_pq.title) });
        }
    }
}

try {
    _arrayRes = ArraySort(noSort_arrayRes, 'id', '+');
} catch (e) {
    _arrayRes = noSort_arrayRes;
}
С
Система19 февр. 2026 г., 16:51(изменён)

Добрый день, тут надо уже изголяться, сейчас пришлю

С
Система19 февр. 2026 г., 16:54(изменён)
query = "sql:WITH Answers AS
(
    SELECT
        PRNode.value('(person_fullname)[1]', 'nvarchar(255)') AS person_fullname,
        QRes.value('(id)[1]', 'bigint') AS question_id,
        EntryNode.value('(value)[1]', 'nvarchar(255)') AS answer_text
    FROM poll_results prs
    INNER JOIN poll_result pres ON pres.id = prs.id
    INNER JOIN poll p ON p.id = prs.poll_id
    INNER JOIN group_collaborators gp ON prs.person_id = gp.collaborator_id

    CROSS APPLY pres.data.nodes('/poll_result') AS PR(PRNode)
    CROSS APPLY PRNode.nodes('questions/question') AS QR(QRes)

    CROSS APPLY p.data.nodes('/poll/questions/question') AS PQ(PQNode)
    CROSS APPLY PQNode.nodes('entries/entry') AS PE(EntryNode)

    WHERE prs.poll_id = 7222811912398437669
      AND gp.group_id = " + {PARAM1} + " 
      AND PQNode.value('(id)[1]', 'bigint') = QRes.value('(id)[1]', 'bigint')
      AND EntryNode.value('(id)[1]', 'bigint') = QRes.value('(value)[1]', 'bigint')
)

SELECT
    person_fullname,

    [54616104] AS question_1,
    [90756214] AS question_2,
    [61293030] AS question_3,
    [84652119] AS question_4,
    [51084526] AS question_5,
    [97592120] AS question_6,
    [66635888] AS question_7,
    [35920512] AS question_8,
    [52162925] AS question_9,
    [16905411] AS question_10,
    [56703052] AS question_11,
    [66327138] AS question_12

FROM Answers
PIVOT
(
    MAX(answer_text)
    FOR question_id IN
    (
        [54616104],
        [90756214],
        [61293030],
        [84652119],
        [51084526],
        [97592120],
        [66635888],
        [35920512],
        [52162925],
        [16905411],
        [56703052],
        [66327138]
    )
) AS P
ORDER BY person_fullname;"
finishArr=XQuery(query);

return finishArr;
С
Система19 февр. 2026 г., 16:56(изменён)
Чтобы ответить, необходимо войти в систему