Вход | Регистрация



Как обойти запрос по 2 группировкам?

Как обойти запрос по 2 группировкам?
Я
   Мисти
 
03.12.18 - 18:19
"ВЫБРАТЬ
    |    ХозрасчетныйОборотыДтКт.СубконтоКт1 КАК Номенклатура,
    |    ХозрасчетныйОборотыДтКт.Регистратор КАК Документ,
    |    ХозрасчетныйОборотыДтКт.СуммаОборот КАК СуммаСписания,
    |    ХозрасчетныйОборотыДтКт.КоличествоОборотКт КАК Количество
    |ИЗ
    |    РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(
    |            &ВыбНач,
    |            &ВыбКон,
    |            Регистратор,
    |            СчетДт = &ВыбСчет,
    |            ,
    |            ,
    |            ,
    |            Организация = &ВыбОрганизация
    |                И СубконтоДт1 = &ВЫбКолеровка) КАК ХозрасчетныйОборотыДтКт
    |ИТОГИ
    |    СУММА(СуммаСписания),
    |    СУММА(Количество)
    |ПО
    |    Номенклатура,
    |    Документ";
 
 
   Fragster
 
1 - 03.12.18 - 18:20
также как по одной, только вторую выборку не из результата а из первой
   Мисти
 
2 - 03.12.18 - 18:20
Нашла уже свой вопрос - "по пяти", но там нет ответа.
Как-то же решила тогда, но как?
И вот опять то же самое, запишу в тетрадку, честно!!!
Просто нужно обойти по номенклатуре, а потом по документу.
Вот с текущим запросом у меня по документу 2 строки почему-то получаются.
   Мисти
 
3 - 03.12.18 - 18:21
(1) Я пробовала так, но тогда не работает второй цикл!
   Мисти
 
4 - 03.12.18 - 18:23
Вот такой обход - 
    ПоНомен = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    
    ном = 1;
    ТабДок.НачатьАвтогруппировкуСтрок();
    Пока ПоНомен.Следующий() цикл
        ОбластьДетальныхЗаписей.Параметры.ном = Ном;                                  
        ЗаполнитьЗначенияСвойств(ОбластьДетальныхЗаписей.Параметры,ПоНомен);    
        
        ТабДок.Вывести(ОбластьДетальныхЗаписей); 
        Ном = Ном+1;
        ВыборкаДействий            = ПоНомен.Выбрать();
        
        Пока ВыборкаДействий.Следующий() Цикл
            ЗаполнитьЗначенияСвойств(ОбластьДетальныхЗаписей1.Параметры,ВыборкаДействий);
   Василий Алибабаевич
 
5 - 03.12.18 - 18:26
(4) Все здесь : "ВыборкаДействий = ПоНомен.Выбрать();"
Посмотрите в СП параметры метода Выбрать. А сособо параметр №3.
   МимохожийОднако
 
6 - 03.12.18 - 18:27
Попробуй это запрос запихнуть в мастер по созданию запроса для вывода в табличный документ и увидишь на примере
как используется уровень группировки.
   Мисти
 
7 - 03.12.18 - 18:28
Если просто выгрузить результаты таблицы, то и там 2 строки по одному документу.
   Мисти
 
8 - 03.12.18 - 18:29
У меня нет мастера и никогда таким не пользовалась.
   Мисти
 
9 - 03.12.18 - 18:29
По-моему, там одна простая ошибка, ткните меня уже в нее и всё!!!1
   Eiffil123
 
10 - 03.12.18 - 18:29
(4) не будет это работать. Обход всегда только по 1й группировке
 
 Рекламное место пустует
   МимохожийОднако
 
11 - 03.12.18 - 18:30
По правой клавише мышки создать запрос с обработкой и выбрать второй способ обхода для табличного документа. Этот мастер встроен в платформу
   Василий Алибабаевич
 
12 - 03.12.18 - 18:31
(9) За параметры метода Выбрать() уже прочитала?
   Eiffil123
 
13 - 03.12.18 - 18:32
(0) У вас 2 группировки. Соответственно, 3 уровня выборки:

ВыборкаНом = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаНом.Следующий() Цикл

    ВыборкаДок = ВыборкаНом.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Пока ВыбркаДок.Следующий() Цикл

        ВыборкаДетали = ВыборкаДок.Выбрать();
        Пока ВыборкаДетали.Следующий() Цикл

            // Тут код по детальным записям


        КонецЦикла;

    КонецЦикла;

КонецЦикла;
   Eiffil123
 
14 - 03.12.18 - 18:34
Можно документ убрать из итогов, тогда будет 2 уровня выборки (для вашего запроса это как раз подходит).
   Мисти
 
15 - 03.12.18 - 18:34
Верхняя - правильная, по номенклатуре, а потом 2 строки совершенно одинаковые идут.
Как я этого добилась?
   Вафель
 
16 - 03.12.18 - 18:35
ВыборкаДействий            = ПоНомен.Выбрать();
не указан способ обхода
   Eiffil123
 
17 - 03.12.18 - 18:35
(15) из итогов убрать документ. Должно помочь
   Мисти
 
18 - 03.12.18 - 18:36
(14) Точно! Получилось.
Теперь еще с автогруппировкой.
Почему она у меня не работает?
   Мисти
 
19 - 03.12.18 - 18:44
ТабДок.НачатьАвтогруппировкуСтрок();
    Пока ПоНомен.Следующий() цикл
        ОбластьДетальныхЗаписей.Параметры.ном = Ном;                                  
        ЗаполнитьЗначенияСвойств(ОбластьДетальныхЗаписей.Параметры,ПоНомен);    
        
        ТабДок.Вывести(ОбластьДетальныхЗаписей); 
        Ном = Ном+1;
        ВыборкаДействий            = ПоНомен.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
        
        Пока ВыборкаДействий.Следующий() Цикл
            ЗаполнитьЗначенияСвойств(ОбластьДетальныхЗаписей1.Параметры,ВыборкаДействий);    
            ОбластьДетальныхЗаписей1.Параметры.Документ = ВыборкаДействий.Документ;
            ТабДок.Вывести(ОбластьДетальныхЗаписей1);  
        КонецЦикла;
    КонецЦикла;     
    ТабДок.ЗакончитьАвтогруппировкуСтрок();
   Мисти
 
20 - 03.12.18 - 18:44
Что опять не так?
   Eiffil123
 
21 - 03.12.18 - 18:54
(18) не использовал ни разу. А зачем автогруппировка, можно же ручную группировку делать, иерархии справочников же нет.
   Мисти
 
22 - 03.12.18 - 19:29
Ручную я тем более не умею.
   МимохожийОднако
 
23 - 03.12.18 - 19:32
(22) У тебя всё впереди. Я в это твёрдо верю.
   Мисти
 
24 - 03.12.18 - 21:32
Ага, пенсию на 3 года отодвинули.
   Мисти
 
25 - 03.12.18 - 21:43
(23) А ведь получилось! Поскольку там 2 цикла, то нужно при выводе ставить уровень группировки вторым параметром.
   МимохожийОднако
 
26 - 03.12.18 - 22:00
(25) я тебе об этом еще в (6) намекал )) Молодца


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует