Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
01 ноя 2024, 03:13

Запрос с группировкой по итогам

Автор Кот_Леопольд, 14 мар 2019, 15:59

0 Пользователей и 1 гость просматривают эту тему.

Кот_Леопольд

Добрый день. 1с8.3 Конфигурация не типовая, обычное приложение.
Подскажите как сгруппировать данные по двум итоговым полям. Т.е. у меня есть Поле МестоОтбора и ОбъектКонтроля, нужно что бы сначала группировка шла по 1 полю, затем по 2-му. В конструкторе запроса на вкладке Итоги если указываю сразу два поля, то на печать не чего не выходит, если указываю одно то по нему и происходит группировка. Подскажите что нужно сделать?

ОбластьОтбор = Макет.ПолучитьОбласть("Отбор");
ОбластьДанные = Макет.ПолучитьОбласть("Данные");
ЗПР = Новый Запрос ("ВЫБРАТЬ
                    | КоммерческоеПредложениеТЧ.МестоОтбора КАК МестоОтбора,
                    | КоммерческоеПредложениеТЧ.ОбъектКонтроля КАК ОбъектКонтроля,
                    | КалькуляцияТЧ.Показатель КАК Показатель,
                    | КалькуляцияТЧ.Количество КАК Количество,
                    | КалькуляцияТЧ.Сумма КАК Сумма,
                    | КалькуляцияТЧ.НомерСтроки КАК НомерСтроки,
                    | КалькуляцияТЧ.Кратность КАК Кратность,
                    | КалькуляцияТЧ.Цена КАК Цена
                    |ИЗ
                    | Документ.КоммерческоеПредложение.ТЧ КАК КоммерческоеПредложениеТЧ
                    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.Калькуляция.ТЧ КАК КалькуляцияТЧ
                    | ПО КоммерческоеПредложениеТЧ.Калькуляция = КалькуляцияТЧ.Ссылка
                    |ГДЕ
                    | КоммерческоеПредложениеТЧ.Ссылка.Проведен = ИСТИНА
                    | И КалькуляцияТЧ.Ссылка.Договор = &Договор
                    |
                    |СГРУППИРОВАТЬ ПО
                    | КоммерческоеПредложениеТЧ.МестоОтбора,
                    | КоммерческоеПредложениеТЧ.ОбъектКонтроля,
                    | КалькуляцияТЧ.Показатель,
                    | КалькуляцияТЧ.Кратность,
                    | КалькуляцияТЧ.Количество,
                    | КалькуляцияТЧ.НомерСтроки,
                    | КалькуляцияТЧ.Сумма,
                    | КалькуляцияТЧ.Цена
                    |
                    |УПОРЯДОЧИТЬ ПО
                    | МестоОтбора
                    |ИТОГИ ПО
                    | ОбъектКонтроля
                            |АВТОУПОРЯДОЧИВАНИЕ");
ЗПР.УстановитьПараметр("Договор", Ссылка);
ВыборкаГруппа = ЗПР.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
ТабДок.НачатьАвтогруппировкуСтрок();
Пока ВыборкаГруппа.Следующий() Цикл
ОбластьОтбор.Параметры.Заполнить(ВыборкаГруппа);
ТабДок.Вывести(ОбластьОтбор,1);

ВыборкаДанные = ВыборкаГруппа.Выбрать();
Пока ВыборкаДанные.Следующий() Цикл
ОбластьДанные.Параметры.Заполнить(ВыборкаДанные);
ТабДок.Вывести(ОбластьДанные,2);
КонецЦикла;
КонецЦикла;
ТабДок.ЗакончитьАвтогруппировкуСтрок();


LexaK

да все нормально вроде группирует

просто по коду, если вы в итоги добавляете еще одну группировку/поле то и в выборку нужно добавить еще один обход
т.е. на каждое поле в итоге свой вложенных обход!
если помогло нажмите: Спасибо!

Кот_Леопольд

Цитата: LexaK от 14 мар 2019, 18:08
да все нормально вроде группирует

просто по коду, если вы в итоги добавляете еще одну группировку/поле то и в выборку нужно добавить еще один обход
т.е. на каждое поле в итоге свой вложенных обход!
Вы имеете в введу если я добавлю поле МестоОтбора на вкладке итоги
                  УПОРЯДОЧИТЬ ПО
                        |    МестоОтбора
                        |ИТОГИ ПО
                        |    МестоОтбора
                        |    ОбъектКонтроля

то нужно продублировать Пока ВыборкаГруппа.Следующий() Цикл
        ОбластьОтбор.Параметры.Заполнить(ВыборкаГруппа);
        ТабДок.Вывести(ОбластьОтбор,1);

Или как то по другому?
Добавлено: 15 мар 2019, 15:28


Цитата: LexaK от 14 мар 2019, 18:08
да все нормально вроде группирует

просто по коду, если вы в итоги добавляете еще одну группировку/поле то и в выборку нужно добавить еще один обход
т.е. на каждое поле в итоге свой вложенных обход!

Все получилось. Спасибо.
ВыборкаМестоОтбора = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

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

ВыборкаОбъектКонтроля = ВыборкаМестоОтбора.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Пока ВыборкаОбъектКонтроля.Следующий() Цикл
ОбластьОбъектРабот.Параметры.Заполнить(ВыборкаОбъектКонтроля);
ТабДок.Вывести(ОбластьОбъектРабот);

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск