Мы про запрос с Вами говорили в шагах "Шаг 218 - От перебора документов к запросу" и "Шаг 219 - От перебора документов к запросу дальше".
Из этих шагов понятно, что запрос хорош для получения сводных данных по суммам. Заменять перебор запросом оправдано только в редких случаях. Давайте попробуем понять как все это работает. Нам сейчас важна группировка. Итак, сгруппируем по поставщику услуг (перевозчик в данном контексте).
ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |Поставщик = Документ.ПеревозкаТоплива.Поставщик; |СуммаОбщая = Документ.ПеревозкаТоплива.СуммаОбщая; |Группировка Поставщик; |"//}}ЗАПРОС ; // Если ошибка в запросе, то выход из процедуры Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; // Подготовка к заполнению выходных форм данными запроса Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Сформировать"); // Заполнение полей "Заголовок" Пока Запрос.Группировка("Поставщик") = 1 Цикл Таб.ВывестиСекцию("Секция_1"); КонецЦикла;
В данном случае мы получим суммы по поставщику.
А вот, если сгруппировать по сумме, то мы получим более развернутый отчет. Каждый документ будет отражен суммой.
ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |Поставщик = Документ.ПеревозкаТоплива.Поставщик; |СуммаОбщая = Документ.ПеревозкаТоплива.СуммаОбщая; |Группировка СуммаОбщая; |"//}}ЗАПРОС ; ........ Пока Запрос.Группировка("СуммаОбщая") = 1 Цикл Таб.ВывестиСекцию("Секция_1"); КонецЦикла;
Смотрим.