Имя: Пароль:
1C
 
1с группировка по двум параметрам
0 illiona
 
naïve
17.09.20
13:47
Запрос.Текст = "ВЫБРАТЬ
                   |    ТЗ.Склад КАК Склад,
                   |    ТЗ.СкидкаНаценка КАК СкидкаНаценка,
                   |    ТЗ.Номенклатура КАК Номенклатура,
                   |    ТЗ.КоличествоПрименений КАК КоличествоПрименений,
                   |    ТЗ.Сумма КАК Сумма
                   |ПОМЕСТИТЬ Оплаты
                   |ИЗ
                   |    &ТЗ КАК ТЗ
                   |;
                   |
                   |////////////////////////////////////////////////////////////////////////////////
                   |ВЫБРАТЬ
                   |    Оплаты.Склад КАК Склад,
                   |    Оплаты.СкидкаНаценка КАК СкидкаНаценка,
                   |    Оплаты.Номенклатура КАК Номенклатура,
                   |    СУММА(Оплаты.КоличествоПрименений) КАК КоличествоПрименений,
                   |    СУММА(Оплаты.Сумма) КАК Сумма
                   |ИЗ
                   |    Оплаты КАК Оплаты
                   |
                   |СГРУППИРОВАТЬ ПО
                   |    Оплаты.Склад,
                   |    Оплаты.Номенклатура,
                   |    Оплаты.СкидкаНаценка
                   |ИТОГИ
                   |    СУММА(КоличествоПрименений),
                   |    СУММА(Сумма)
                   |ПО
                   |    Склад,
                   |    СкидкаНаценка";
              
      ТабДок.НачатьАвтогруппировкуСтрок();
      Выборка1  = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
      Пока Выборка1.Следующий() Цикл
          ОбластьСтрочка1.Параметры.Склад=Выборка1.Склад;
          ТабДок.Вывести(ОбластьСтрочка1,Выборка1.Уровень());
        
            Выборка2 = Выборка1.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
            Пока Выборка2.Следующий() Цикл
                ОбластьСтрочка2.Параметры.Заполнить(Выборка2);
                ОбластьСтрочка2.Параметры.СкидкаНаценка=Выборка2.СкидкаНаценка;
                ТабДок.Вывести(ОбластьСтрочка2,Выборка2.Уровень());
                
                Выборка3 = Выборка2.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
                Пока Выборка3.Следующий() Цикл
                        ОбластьСтрочка.Параметры.Заполнить(Выборка3);
                        ОбластьСтрочка.Параметры.Номенклатура=Выборка3.Номенклатура;
                        ОбластьСтрочка.Параметры.КоличествоПрименений=Выборка3.КоличествоПрименений;
                        ОбластьСтрочка.Параметры.Сумма=Выборка3.Сумма;

                        ТабДок.Вывести(ОбластьСтрочка);
                    КонецЦикла;

                
            КонецЦикла;
        КонецЦикла;
ТабДок.ЗакончитьАвтогруппировкуСтрок();

Не могу понять, по складу плюсиком сворачивается, а по СкидкаНаценка нет(. Подскажите пожалуйста
1 ДенисЧ
 
17.09.20
13:49
Никогда не доверял автоматам от 1с.
Всегда группирую руками. И никогда ещё не подводило.

И тебе советую
2 illiona
 
naïve
17.09.20
13:50
подскажите как, я с группировками вообще тяжеловато
3 ДенисЧ
 
17.09.20
13:56
Выборка1  = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
ТабДок.НачатьГруппуСтрок("Склад");
      Пока Выборка1.Следующий() Цикл
....
                Выборка3 = Выборка2.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
ТабДок.НачатьГруппуСтрок("СкидкаНаценка");
                Пока Выборка3.Следующий() Цикл
...   КонецЦикла;
табДок.ЗакончитьГруппуСтрок();
КонецЦикла;

табДок.ЗакончитьГруппуСтрок();

Где-то так
4 illiona
 
naïve
17.09.20
14:06
Выборка1  = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
      ТабДок.НачатьГруппуСтрок("Склад");
      Пока Выборка1.Следующий() Цикл
          ОбластьСтрочка1.Параметры.Склад=Выборка1.Склад;
          ТабДок.Вывести(ОбластьСтрочка1,Выборка1.Уровень());
        
            Выборка2 = Выборка1.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
            Пока Выборка2.Следующий() Цикл
                ОбластьСтрочка2.Параметры.Заполнить(Выборка2);
                ОбластьСтрочка2.Параметры.СкидкаНаценка=Выборка2.СкидкаНаценка;
                ТабДок.Вывести(ОбластьСтрочка2,Выборка2.Уровень());
                
                Выборка3 = Выборка2.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
                ТабДок.НачатьГруппуСтрок("СкидкаНаценка");
                Пока Выборка3.Следующий() Цикл
                        ОбластьСтрочка.Параметры.Заполнить(Выборка3);
                        ОбластьСтрочка.Параметры.Номенклатура=Выборка3.Номенклатура;
                        ОбластьСтрочка.Параметры.КоличествоПрименений=Выборка3.КоличествоПрименений;
                        ОбластьСтрочка.Параметры.Сумма=Выборка3.Сумма;

                        ТабДок.Вывести(ОбластьСтрочка);
                    КонецЦикла;
            табДок.ЗакончитьГруппуСтрок();
                
            КонецЦикла;
        КонецЦикла;
        табДок.ЗакончитьГруппуСтрок();


Сделала вот так, теперь сумму по складу не дает, только по СкидкаНаценка
5 illiona
 
naïve
17.09.20
14:08
наверное в запросе, что-то раз сумму по складам не дает
6 ДенисЧ
 
17.09.20
14:09
Ммм... А кто в секции склада будет сумму запускать? Алексей Анатольевич пока занят, Александр Сергеевич... Ну тоже...
7 illiona
 
naïve
17.09.20
14:10
подскажите плиз
8 illiona
 
naïve
17.09.20
14:18
вроде Склад как СкидкаНаценка сделан
9 illiona
 
naïve
17.09.20
16:41
Группировки получились. Теперь в другом вопрос
"ВЫБРАТЬ
                   |    ТЗ.Склад КАК Склад,
                   |    ТЗ.СкидкаНаценка КАК СкидкаНаценка,
                   |    ТЗ.Номенклатура КАК Номенклатура,
                   |    ТЗ.КоличествоПрименений КАК КоличествоПрименений,
                   |    ТЗ.Сумма КАК Сумма
                   |ПОМЕСТИТЬ Оплаты
                   |ИЗ
                   |    &ТЗ КАК ТЗ
                   |;
                   |
                   |////////////////////////////////////////////////////////////////////////////////
                   |ВЫБРАТЬ различные
                   |    Оплаты.Склад КАК Склад,
                   |    Оплаты.СкидкаНаценка КАК СкидкаНаценка,
                   |    Оплаты.Номенклатура КАК Номенклатура,
                |    Оплаты.КоличествоПрименений КАК КоличествоПрименений,
                |    Оплаты.Сумма КАК Сумма
                   |ИЗ
                   |    Оплаты КАК Оплаты
                   |ИТОГИ
                   |    СУММА(КоличествоПрименений),
                   |    СУММА(Сумма)
                   |ПО
                   |    Склад,
                   |    СкидкаНаценка";


в запросе одинаковые позиции дублирует
10 illiona
 
naïve
17.09.20
16:45
не группирует их