Шаг 221 - Использование запроса для перебора

Мы про запрос с Вами говорили в шагах "Шаг 218 - От перебора документов к запросу" и "Шаг 219 - От перебора документов к запросу дальше".

Из этих шагов понятно, что запрос хорош для получения сводных данных по суммам. Заменять перебор запросом оправдано только в редких случаях. Давайте попробуем понять как все это работает. Нам сейчас важна группировка. Итак, сгруппируем по поставщику услуг (перевозчик в данном контексте).

ТекстЗапроса = 
	"//{{ЗАПРОС(Сформировать)
	|Период с ВыбНачПериода по ВыбКонПериода;
	|Поставщик = Документ.ПеревозкаТоплива.Поставщик;
	|СуммаОбщая = Документ.ПеревозкаТоплива.СуммаОбщая;
	|Группировка Поставщик;
	|"//}}ЗАПРОС
	;
	// Если ошибка в запросе, то выход из процедуры
	Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
		Возврат;
	КонецЕсли;

	// Подготовка к заполнению выходных форм данными запроса
	Таб = СоздатьОбъект("Таблица");
	Таб.ИсходнаяТаблица("Сформировать");
	// Заполнение полей "Заголовок"
       Пока Запрос.Группировка("Поставщик") = 1 Цикл
	   	 	Таб.ВывестиСекцию("Секция_1");
       КонецЦикла;

В данном случае мы получим суммы по поставщику.

221_1.gif (1810 b)

А вот, если сгруппировать по сумме, то мы получим более развернутый отчет. Каждый документ будет отражен суммой.

ТекстЗапроса = 
"//{{ЗАПРОС(Сформировать)
|Период с ВыбНачПериода по ВыбКонПериода;
|Поставщик = Документ.ПеревозкаТоплива.Поставщик;
|СуммаОбщая = Документ.ПеревозкаТоплива.СуммаОбщая;
|Группировка СуммаОбщая;
|"//}}ЗАПРОС
;
........
Пока Запрос.Группировка("СуммаОбщая") = 1 Цикл
	Таб.ВывестиСекцию("Секция_1");
КонецЦикла;

Смотрим.

221_2.gif (2348 b)


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.