Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЦОО_ИСБУ_Лек3.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
683.52 Кб
Скачать

Обход по группировкам

Третий, и последний способ обхода результата - по группиров­кам. Он сходен с иерархическим обходом, но с одним различием: записи с иерархическими итогами при обходе в нем рассматрива­ются как детальные записи, а не как узловые. Для получения вы­борки по группировкам из результата запроса необходимо вы­звать метод Выбрать объекта РезультатЗапроса с параметром ОбходРезультатаЗапроса.ПоГруппировкам:

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

Выборка = РезультатЗапроса.Выбрать(СпособВыборки);

Перебрав такую выборку для нашего примера, мы получим записи с номерами 1, 2, 7, 11, 12, 16, например:

Запрос - Новый Запрос("

ВЫБРАТЬ Товар, Количество

ИЗ Документ.РасходнаяНакладная.Состав

УПОРЯДОЧИТЬ ПО Товар

ИТОГИ СУММА(Количество) ПО Товар, Товар ИЕРАРХИЯ");

РезультатЗапроса = Запрос.Выполнить();

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

Выборка = РезультатЗапроса.Выбрать(СпособВыборки);

Пока Выборка.Следующий() Цикл

//выведем в окно сообщений поля из результата

Сообщить("Группа товаров: " + СокрЛП(Выборка.Наименование) + "Количество: " + СокрЛП(Выборка.Количество));

//выберем дочерние записи линейным способом

ВыборкаДочерних = Выборка.Выбрать();

Пока ВыборкаДочерних.Следующий() Цикл

Сообщить(" Товар: " + СокрЛП(Выборка.Наименование) + " Количество: " + СокрЛП(Выборка.Количество));

КонецЦикла;

КонецЦикла;

Другие полезные методы

При работе с выборкой из результата запроса будут полезны сле­дующие методы:

Группировка

Возвращает в виде строки имя группировки текущей запи­си. Если группировки нет, возвращается пустая строка.

Количество

Возвращает количество записей в выборке.

Сбросить

Отменяет позиционирование. После вызова метода Следующий выборка позиционируется на первую запись.

Уровень

Возвращает уровень текущей записи в иерархии и группи­ровках. Уровень считается от начальной выборки из ре­зультата запроса.

ТипЗаписи

Этот метод возвращает тип текущей записи запроса, кото­рый является одним из значений системного перечисления ТипЗаписиЗапроса: ДетальнаяЗапись, ИтогПоГруппировке, ИтогПоИерархии, ОбщийИтог.

8.6. Выгрузка результата запроса

Результат запроса может быть выгружен в таблицу значений или дерево значений с помощью метода Выгрузить. Затем над ними могут быть произведены другие операции: сортировка, свертка, перебор строк и другие действия (см. главу «Коллекции значе­ний»).

Следующий пример выгружает результат запроса в таблицу зна­чений с прямым порядком обхода строк:

Результат = Запрос.Выполнить();

СпособОбхода = ОбходРезультатаЗапроса.Прямой;

ТабЗнач = Результат.Выгрузить(СпособОбхода);

Если используется иерархический обход результата запроса или обход по группировкам, тогда удобнее выгрузить не в таблицу значений, а в дерево значений, как делается в следующем приме­ре:

Результат = Запрос.Выполнить();

СпособОбхода = ОбходРезультатаЗапроса.ПоГруппировкамСИерархией;

Дерево = Результат.Выгрузить(СпособОбхода);

Результат запроса может быть представлен в виде сводной табли­цы, для чего необходимо установить свойство ИсточникДанных объекта СводнаяТаблица. Подробнее про сводные таблицы рас­сказывается в главе «Отчеты».

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]