УС
Участник сообщества #91
19 февр. 2026 г., 16:49(изменён)
Решено0
0
Получение ответов по опросам в настраиваемых отчетах
Содержание обработано автоматически и может отличаться от оригинала.
Добрый день! Подскажите, как можно (если можно) стандартными методами в настраиваемых отчетах получить ответы по опросам из определенной процедуры опросов? Из объекта "Результаты опросов" в поле "Значение" корректно выводятся только значения из текстовых полей, но если в опросе есть вопросы с вариантами ответов, то вопросы и ответы на них не получается вывести
4 ответа
С
Система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;
Чтобы ответить, необходимо войти в систему