|
РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам) — как правильно? | ☑ | ||
---|---|---|---|---|
0
mistеr
15.02.16
✎
20:38
|
Делаю сложный отчет без СКД. Впервые в жизни понадобился нестандартный обход выборки, и не могу с ним разрбраться. В запросе у меня указано
ИТОГИ СУММА(Дней), СУММА(Часов) ПО Должность, Сотрудник, Период, ВидВремени В отчете мне нужны следующие уровни: 1) Должность, Сотрудник 2) Период 3) ВидВремени Как правильно вызывать Выбрать()? К примеру, вызываю ВыборкаСотрудник = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Должность,Сотрудник"); Затем в цикле ВыборкаПериод = ВыборкаСотрудник.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Период"); В этой выборке заполнено только поле Должность, а вложенные выборки вообще пустые. |
|||
1
Defender aka LINN
15.02.16
✎
21:44
|
Потому что 2 цикла надо просто в верхнем только выборка
|
|||
2
EvgeniuXP
15.02.16
✎
21:56
|
Если Выборка.Уровень(1) Тогда
выводи Должность, Сотрудник ИначеЕсли Выборка.Уровень(2) Тогда выводи Период ИначеЕсли Выборка.Уровень(3) Тогда выводи ВидВремени |
|||
3
EvgeniuXP
15.02.16
✎
21:56
|
можно одним циклом :)
|
|||
4
EvgeniuXP
15.02.16
✎
21:58
|
Перед Если напиши просто
Выборка = РезультатЗапроса.Выбрать(); Пока Выборка.Следующий Цикл ... см. выше КонецЦикла; |
|||
5
EvgeniuXP
15.02.16
✎
21:59
|
(2) вместо Выборка.Уровень(1) - пиши Выборка.Уровень() = 1
|
|||
6
mistеr
15.02.16
✎
22:12
|
(2) (4) Не понял. Мне не нужна простая выборка, мне нужны именно вложенные выборки по группировкам. И они отлично работают, если на каждом уровне указывать по одному полю группировки. Но в моей ситуации нужна группировка по нескольким полям.
Как ее получить? |
|||
7
EvgeniuXP
15.02.16
✎
22:37
|
так в запросе и так группирует - или ошибаюсь? при обычной выборке получишь итоги на соответствующих уровнях
|
|||
8
EvgeniuXP
15.02.16
✎
22:38
|
а выборку проводит последовательно как и при группировках
|
|||
9
mistеr
15.02.16
✎
23:04
|
(7) Как при обычной выборке мен получить итоги по (Должность, Сотрудник)?
|
|||
10
patria0muerte
16.02.16
✎
04:04
|
В общем случае так:
ВыборкаДолжность = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаДолжность.Следующий() Цикл ВыборкаСотрудник = ВыборкаДолжность.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаСотрудник.Следующий() Цикл //Здесь у тебя в ВыборкаСотрудник есть должности и сотрудники ВыборкаПериод = ВыборкаСотрудник.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаПериод.Следующий() Цикл //Тут в ВыборкаПериод у тебя появляются еще и периоды ВЫборкаВидВремени = ВыборкаПериод.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаВидВремени.Следующий() Цикл //Тут у тебя в ВыборкаВидВремени появляются виды времени ВЫборкаДетальныеЗаписи = ВыборкаВидВремени.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл //Тут у тебя в ВыборкаДетальныеЗаписи вся ветка дерева КонецЦикла; КонецЦикла; КонецЦикла; КонецЦикла; КонецЦикла; |
|||
11
mistеr
16.02.16
✎
10:08
|
(10) Так я умею, как писал в (6) (хотя не точно сформулировал). Но вопрос в другом: как получить итоги по (Должность, Сотрудник)? Только не говори "самому посчитать".
Кто-нибудь вообще знает, как использовать второй и третий параметры в Выбрать()? Их описание в СП обманчиво, как оказалось. |
|||
12
rozer76
16.02.16
✎
11:16
|
(11) или в одном цикле с уровнями или как в (10)
|
|||
13
mistеr
16.02.16
✎
11:41
|
(12) А как "в одном цикле с уровнями"?
|
|||
14
mistеr
16.02.16
✎
18:46
|
Апну пожалуй.
|
|||
15
patria0muerte
17.02.16
✎
10:03
|
(11) Отлично, что умеешь.
Как раз таки в (10) в ВыборкаСотрудник у тебя и будут итоги по (Должность, Сотрудник). Чего не устраивает то? |
|||
16
patria0muerte
17.02.16
✎
10:05
|
(11)Можешь вот тут глянуть, может подойдет тебе такой пример:
Структура организации с должностями и физлицами в виде дерева. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |