Имя: Пароль:
1C
1C 7.7
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
Получить() или что-то того.