Имя: Пароль:
1C
 
Как реализовать обход по группировкам запроса если кол. группировок меняется
Ø
0 МЮЛЛЕР
 
04.08.05
12:17
Как реализовать обход по группировкам запроса если известно количество группировок, но это количество устанавливается пользователем. Т.е. пользователь устанавливает какие группировки ему должен сделать запрос и какие группировки будут в запросе.
Пока Запрос.Группировка(1) = 1 Цикл
    Уровень = 1;
    // Заполнение полей Разделитель
    //Таб.ВывестиСекцию("Разделитель");
    Пока Запрос.Группировка(2) = 1 Цикл
      Уровень = 2;
      // Заполнение полей Номенклатура
      //Таб.ВывестиСекцию("Номенклатура");
      Пока Запрос.Группировка(3) = 1 Цикл
        Уровень = 3;
        // Заполнение полей УровеньПлана
        //Таб.ВывестиСекцию("УровеньПлана");
        Пока Запрос.Группировка(4) = 1 Цикл
          Уровень = 4;
          // Заполнение полей УровеньГеографии1
          //Таб.ВывестиСекцию("УровеньГеографии1");
          Пока Запрос.Группировка(5) = 1 Цикл
            Уровень = 5;
            // Заполнение полей УровеньГеографии2
            //Таб.ВывестиСекцию("УровеньГеографии2");
            Пока Запрос.Группировка(6) = 1 Цикл
              Уровень = 6;
              // Заполнение полей УровеньГеографии3
              //Таб.ВывестиСекцию("УровеньГеографии3");
              Пока Запрос.Группировка(7) = 1 Цикл
                Уровень = 7;
                // Заполнение полей УровеньГеографии4
                //Таб.ВывестиСекцию("УровеньГеографии4");
                Пока Запрос.Группировка(8) = 1 Цикл
                  Уровень = 8;
                  
                КонецЦикла;//8
              КонецЦикла; //7
            КонецЦикла; //6
          КонецЦикла; //5
        КонецЦикла;//4
      КонецЦикла;//3
    КонецЦикла;//2
  КонецЦикла; //1
1 Swinger
 
04.08.05
12:19
Дык.. в типовой глянь, там процентов 30 отчетов так сделано
2 Zerg
 
04.08.05
12:21
Ну ты даешь! Посмотри какой-нибудь отчет из ТиС, там количество группировок задает пользователь...
3 Денис2
 
04.08.05
12:21
Дык это... Рекурсия :-)
У меня через неё сделано.
4 Salex
 
04.08.05
12:28
Рекурсия. Одназначна.
5 МЮЛЛЕР
 
04.08.05
12:39
(4), что такое рекурсия?
6 Денис2
 
04.08.05
12:40
(5) о!
Чтобы понять, что такое рекурсия, сначала надо понять, что такое рекурсия! (с) кто-то из компютерных гурей.
7 Salex
 
04.08.05
12:47
Типа того, в двух словах на примере:
Процедура ОбходГруппировок(Запрос,ТекГруппировка,ВсегоГруппировок)
 Пока Запрос.Группировка(ТекГруппировка)=1 Цикл
  Если ТекГруппировка<ВсегоГруппировок Тогда
      ОбходГруппировок(Запрос,ТекГруппировка+1,ВсегоГруппировок)
  КонецЕсли;
 КонецЦикла;
КонецПроцедуры
Запрос.Выполнить();
ОбходГруппировок(Запрос,1,5);
8 Salex
 
04.08.05
12:50
А вообще учиться в институте надо было... Или хотя бы книжки читать...
9 Swinger
 
04.08.05
12:53
(8) согласен, но в другом порядке: хотя бы книжки читать, или в институте учиться.
10 МЮЛЛЕР
 
04.08.05
13:17
(7) - спасибо за подсказку, а еще я рад за тебю, что ты умен чужим умом.
P.S. Слава богу не своим.
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.