Кросс-таблица вручную #437914


#0 by Ненавижу 1С
В 1С 8 есть более эффективные способы построения кросс-таблиц (СКД). Но полезно знать и такой способ, к тому предложенный метод, возможно, пригодится и в других ситуациях. При построении кросс-таблицы «вручную» основной проблемой является подсчет пропущенных ячеек, из-за которых столбцы «плывут». Кроме того, требуется либо выполнить отдельный запрос для подсчета итогов по столбцам, либо накапливать итоги вручную. Действительно, простейший запрос ИЗ ПО пропустит значение по складам и номенклатуре, где нет остатков. Необходимо подготовить запрос таким образом, чтобы все значения были заполнены. В общем виде это выглядит так: Допустим, есть выборка T с измерениями X (по строкам), Y (по столбцам) и результатом в ячейках S. Тогда запрос выглядит так: ВЫБРАТЬ    TX.X как X,    TY.Y как Y,        T.Y как Y    ИЗ T) как TY        T.X как X И ((TX.X=T.X) ИЛИ (TX.X ЕСТЬ NULL))) ИТОГИ    СУММА(S) ПО    X,Y В результате мы получим все значения X×Y, а также итог NULL по Х для вывода шапики и итогов в столбцах по Y. Конкретный пример: ВЫБРАТЬ    ВсяНоменклатура.Номенклатура КАК Номенклатура,            ИЛИ (ВсяНоменклатура.Номенклатура ЕСТЬ NULL)) ПО Здесь, в силу особенности виртуальной таблицы, предикат РАЗЛИЧНЫЕ не обязателен.
#1 by ТелепатБот
#2 by hhhh
ты просто не дочитал до конца синтакс-помощник. Там есть параметры в выборке по результату запроса, при которых НЕ "пропустит значение по складам и номенклатуре, где нет остатков".
#3 by Ненавижу 1С
ткни
#4 by Vitello
"ВСЕ" вроде как он имел ввиду.
#5 by also
В версии 8.1 для решения такой задачи следует использовать параметр Группировки для значений группировок методов Выбрать результата запроса и выборки из результата запроса. Если в качестве этого параметра указать Все, то будут выбраны все значения этой группировки в запросе. Если же указать конкретную вышестоящую группировку, то будут выбраны все значения группировки для текущих значений указанных вышестоящих группировок.
#6 by Ненавижу 1С
но ведь всё это будет выполняться на клиенте, если запрос вызван и обрабатывается на клиенте? а так сервер готовит
#7 by Ненавижу 1С
и может у кого 8.0
#8 by Гений 1С
гыгыгы... поищи яндексом "Дерево Осипова"
#9 by Ненавижу 1С
ну не один же ты такой
#10 by КонецЕсли
OFF. Интересное наблюдение: По запросу "Дерево Осипова" найдено 70 тыс.документов По запросу "Осипов Дерево" найдено 199 тыс.документов Rambler
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С