|
v7: Запрос в 77. Как позиционироваться по группировкам?
| ☑ |
0
егаис
27.04.15
✎
16:19
|
Никак не вспомню блин
Есть два запроса
Первый (на выходе измерение "Физлицо" и ресурс "сумма начисления"):
...
|Функция СуммаНачисления = Сумма(Результат) когда (Расчет.ВходитВГруппу(ГруппаРасчетов.ВсеНачисления)=1);
|Группировка ФизЛицо Без Групп;
|Условие(Результат<>0);"
...
Второй (на выходе 2 измерения "физлицо" и "объект")
Необходимо выборкой из первого запроса позиционироваться на первое измерение второго запроса и потом перебрать вторую группировку второго запроса
Пока Запрос.Группировка() = 1 Цикл
Сотрудник = Запрос.ФизЛицо;
СуммаНачисленнойЗП = Запрос.СуммаНачисления;
ЗапросДокументы.Получить(Сотрудник,);
Пока ЗапросДокументы.Группировка(2) = 1 Цикл
ТабельПоОбъектам = ЗапросДокументы.ТекущийДокумент;
КонецЦикла;
КонецЦикла;
не работает,
Пока ЗапросДокументы.Группировка(2) = 1 Цикл
{D:\1C\\ЗАРПЛАТАПООБЪЕКТАМ.ERT(148)}: Не было обращения к старшим уровням выборки.
|
|
1
mikecool
27.04.15
✎
16:29
|
Пока Запрос.Группировка(1)
или Пока Запрос.Группировка(имя)
и так столько раз вложенно, сколько группировок было
|
|
2
mikecool
27.04.15
✎
16:30
|
Запрос.Группировка() - это как выборка дет записей, если группировок не было вообще (указано без групп или как то так)
|
|
3
егаис
27.04.15
✎
16:30
|
так правильно?? быдлокод какой-то, но работает
Пока Запрос.Группировка() = 1 Цикл
Сотрудник = Запрос.ФизЛицо;
СуммаНачисленнойЗП = Запрос.СуммаНачисления;
ЗапросДокументы.ВНачалоВыборки();
Если ЗапросДокументы.Получить(Сотрудник,) = 1 Тогда
Сообщить(Сотрудник);
Пока ЗапросДокументы.Группировка(2) = 1 Цикл
ТабельПоОбъектам = ЗапросДокументы.ТекущийДокумент;
Сообщить(ТабельПоОбъектам);
КонецЦикла;
КонецЕсли;
КонецЦикла;
|
|
4
егаис
27.04.15
✎
16:33
|
(1) это слишком просто )))
перебор всего запроса и поиск по условию. А если строк 10000+?
не вариант
|
|
5
NikVars
27.04.15
✎
16:58
|
(4) Вариант. Изначально же не было ограничений.
|
|
6
Classic
27.04.15
✎
16:59
|
Получить() или что-то того.
|
|