Можно ли узнать уровень группировки в запросе?
Имеем иерархический справочник. Иерархия элементов. Как одним запросом получить таблицу, где в первой колонке будут элементы первого уровня, во второй — второго и т.д.? Может какие-то методы есть в языке запросов чтобы определить уровень группировки?
Администрация| | |
Администрация|Фин.отдел| |
Администрация|Фин.отдел|Бухгалтерия|
Выбрать
Спр.Ссылка,
СУММА(1) КАК УровеньИерархии
Из Справочник.Номенклатура КАК Спр
Где
Спр.Ссылка = &Ссылка
СГРУППИРОВАТЬ ПО
Спр.Ссылка
ИТОГИ ПО Ссылка ТОЛЬКО ИЕРАРХИЯ
не поверю, что это Вам нужно для
запросом выбирать непределенное колво колонок — мерзкая ересь
кроме * для отладки.
Как узнать уровень группировки 1с в запросе
Основные приемы работы с запросами во встроенном языке 1С:Предприятия удобнее всего рассматривать на примерах. Приведем типичный пример использования запроса:
// Выполним запрос и запишем результат в переменную РезультатЗапроса.
РезультатЗапроса = Запрос . Выполнить ( ) ;
// Получим выборку из результата запроса.
Выборка = РезультатЗапроса . Выбрать ( ) ;
Как видно из этого примера, работа с запросом ведется при помощи трех основных объектов:
- Запрос – объект, выполняющий сам запрос. Представлен в примере переменной с именем Запрос.
- РезультатЗапроса – объект, содержащий полученные при выполнении запроса данные. Представлен в примере переменной с именем РезультатЗапроса. – объект, позволяющий обходить (т.е. перебрать) записи из результата. Представлен в примере переменной с именем Выборка.
Рассмотрим подробнее объект ВыборкаИзРезультатаЗапроса. Для этого нам понадобится следующий текст запроса:
ВЫБРАТЬ
Товар, Количество
ИЗ
Документ.РасхНакл.Состав
УПОРЯДОЧИТЬ ПО Товар
ИТОГИ Сумма(Количество) ПО Товар Иерархия
Его результат представлен в таблице:
N
Товар
Количество
1
Сантехника
104
11
Мебель
134
В эту таблицу добавлена колонка «N», которой нет в результате запроса, но которая будет использоваться нами в дальнейшем для идентификации записи в результате. Итоговые записи в таблице выделены курсивом, итоговые записи для иерархических уровней справочника выделены жирным шрифтом.
Способы обхода результата запроса
Линейный обход результата
Первый, и самый простой способ обхода – линейный. При линейном обходе выборка будет выдавать записи в той последовательности, в которой они располагаются в результате запроса. В нашем примере это будут записи с номерами 1, 2, 3, 4, 5 и так далее до записи с номером 20.
Для получения линейной выборки из результата необходимо вызвать метод Выбрать объекта РезультатЗапроса без параметров, либо с параметром ОбходРезультатаЗапроса.Прямой.
Пример:
| СпособВыборки = ОбходРезультатаЗапроса . Прямой ; Выборка1 = РезультатЗапроса . Выбрать ( СпособВыборки ) ; // что равнозначно записи Выборка1 = РезультатЗапроса . Выбрать ( ) ; |
Иерархический обход результата
Следующий способ обхода результата – иерархический. При данном обходе обходятся только записи, находящиеся на одном уровне. Для получения иерархической выборки из результата необходимо вызвать метод Выбрать() объекта РезультатЗапроса с параметром ОбходРезультатаЗапроса.ПоГруппировкамСИерархией.
Пример:
| СпособВыборки = ОбходРезультатаЗапроса . ПоГруппировкамСИерархией ; Выборка2 = РезультатЗапроса . Выбрать ( СпособВыборки ) ; |
Выборка из результата с иерархическим обходом в нашем примере обойдет только записи с номерами 1 и 11, так как только эти две записи находятся на самом верхнем уровне. Проиллюстрируем это, представив наш результат в виде дерева, где узлами будут итоговые записи, а листьями дерева будут детальные записи. Вот что у нас получится:
Из этого рисунка видно, что именно записи с номерами 1 и 11, и только они находятся на первом уровне дерева, в результате чего только они и попадают в первый проход иерархической выборки.
Возникает вопрос, как получать остальные записи результата запроса. Для этого у объекта ВыборкаИзРезультатаЗапроса можно получить еще одну выборку, которая будет обходить подчиненные записи текущей записи выборки. В нашем примере в момент, когда объект Выборка2 будет позиционирован на запись с номером 1, мы запросим у него иерархическую выборку. Таким образом, мы получим выборку, которая нам вернет записи с номерами 2, 7. А когда Выборка2 будет спозиционирована на записи с номером 11, то полученная у нее иерархическая выборка вернет записи с номерами 12, 16. Так реализуется иерархический обход результатов запроса. Заметим, что у выборки можно получать вложенные выборки любого типа. Так, если бы мы запросили у Выборки2, спозиционированной на записи 1, линейную выборку, то с ее помощью мы бы получили записи с номерами записей со 2-го по 10-й. Проиллюстрируем описанную методику на примере.
Пример:
// Установим текст запроса
Запрос . Текст = «ВЫБРАТЬ
|Товар, Количество
|ИЗ
|Документ.РасхНакл.Состав
|УПОРЯДОЧИТЬ ПО Товар
|ИТОГИ Сумма(Количество) ПО Товар, Товар Иерархия» ;
// Выполним запрос и запишем результат в переменную
// РезультатЗапроса.
РезультатЗапроса = Запрос . Выполнить ( ) ;
// Получим выборку из результата запроса.
СпособВыборки = ОбходРезультатаЗапроса . ПоГруппировкамСИерархией ;
Выборка = РезультатЗапроса . Выбрать ( СпособВыборки ) ;
Процедура ВыдатьРекурсивно ( Выборка )
// Пока в выборке есть записи .
Пока Выборка . Следующий ( ) Цикл
// . выведем в окно сообщений поля из результата
Товар = Выборка . Наименование ;
Количество = Выборка . Количество ;
Сообщить ( «Товар: » + Товар + » Количество: » + Количество ) ;
Обход результата по группам
Третий, и последний способ обхода результата – по группам. Он сходен с иерархическим обходом, но с одним различием: записи с иерархическими итогами при обходе в нем рассматриваются как детальные записи, а не как узловые. Для получения выборки по группам из результата запроса необходимо вызвать метод Выбрать объекта РезультатЗапроса с параметром ОбходРезультатаЗапроса.ПоГруппировкам.
Пример:
| СпособВыборки = ОбходРезультатаЗапроса . ПоГруппировкам ; Выборка2 = РезультатЗапроса . Выбрать ( СпособВыборки ) ; |
Перебрав в ней всё, мы получим записи с номерами 1, 2, 7, 11, 12, 16.
Пример:
// Установим текст запроса
Запрос . Текст = «ВЫБРАТЬ
|Товар, Количество
|ИЗ
|Документ.РасхНакл.Состав
|УПОРЯДОЧИТЬ ПО Товар
|ИТОГИ Сумма(Количество) ПО Товар, Товар Иерархия»;
// Выполним запрос и запишем результат в переменную
// РезультатЗапроса.
РезультатЗапроса = Запрос . Выполнить ( ) ;
// Получим выборку из результата запроса
СпособВыборки = ОбходРезультатаЗапроса . ПоГруппировкам ;
Выборка = РезультатЗапроса . Выбрать ( СпособВыборки ) ;
// Пока в выборке есть записи .
Пока Выборка . Следующий ( ) Цикл
// . выведем в окно сообщений поля из результата
Товар = Выборка . Наименование ;
Количество = Выборка . Количество ;
Сообщить ( «Товар: » + Товар + » Итого по товару: » + Количество ) ;
ВыдатьДочерниеЗаписи ( Выборка . Выбрать ( ) ) ;
Работа с выборкой
Объект ВыборкаИзРезультатаЗапроса предназначен для обхода записей результата запроса. Можно представить себе выборку как некоторый объект, который содержит указатель на текущую запись в результате и предоставляет программе доступ ко всем полям текущей записи. Для навигации по записям запроса используются три метода:
-
– перейти к следующей записи результата в соответствии с порядком обхода выборки. При первом вызове позиционирует выборку на первую запись. Когда будут выбраны все записи, данный метод просигнализирует об этом, вернув значение Ложь. – получить следующую запись со значением в заданном поле, отличающимся от значения в этом поле текущей записи. – найти запись, с заданными значениями некоторых полей.
Использование метода СледующийПоЗначениюПоля
Метод позволяет сгруппировать записи результата по значениям полей.
Пример запроса:
ВЫБРАТЬ
Док.Товар, Док.Получатель, Док.Количество
ИЗ
Документ.РасхНакл.Состав Док
УПОРЯДОЧИТЬ ПО Док.Товар.Наименование, Док.Получатель.Наименование
Конструктор запросов 1С — обучение на примерах
Задача: Получить суммы поступлений за текущий год с разбивкой по месяцам. Для получения данных использовать проведенные документы Поступление товаров и услуг.
Новые вкладки: Группировка
Теоретическая часть урока №5
- Группировочные. Строки, в которых набор этих полей принимает одинаковые значения, сворачиваются одну строку;
- Группируемые. Для свернутых строк значения этих полей рассчитываются при помощи агрегатных функций:
- Сумма. Значения поля суммируется по всем сгруппированным строкам;
- Среднее. Рассчитывается среднее значение поля среди сгруппированных строк;
- Максимум. Вычисляется максимальное значение поля среди сгруппированных строк;
- Минимум. Вычисляется минимальное значение поля среди сгруппированных строк;
- Количество. Вычисляется количество сгруппированных строк, вне зависимости от того к какому полю применяется данная агрегатная функция;
- Количество различных. Вычисляется количество различных значений данного поля по всем сгруппированным строкам.
Пример 1. Пусть у нас есть таблица с двумя полями: Фрукт и Количество. Сгруппировать строки с одинаковыми фруктами и посчитать общее количество по каждому фрукту.

По условиям примера поле Фрукт — группировочное, а поле Количество — группируемое при помощи агрегатной функции Сумма.
После группировки наша таблица будет выглядеть так:

Пример 2. На складе фрукты хранятся в ящиках, коробках и т.п. Так как фрукты приходили разными партиями, цена на них может различаться. Посчитать максимальные цены фруктов для каждого вида тары.
Таким образом у нас есть таблица с тремя полями Фрукт, Тара, Цена. Необходимо сгруппировать строки по полям Фрукт и Тара, а по полю Цена посчитать Максимум.

В данном примере у нас два группировочных поля и одно группируемое. После группировки наша таблица будет выглядеть так:

Теперь посмотрим, как реализован механизм группировки в конструкторе запросов 1с. В конструкторе перейдем на вкладку Группировка, она состоит из трех разделов:

- Поля (красная рамка). В данном разделе представлены все поля доступные для группировки. Это поля таблиц выбранных на вкладке Таблицы и поля. Их необходимо распределить между следующими двумя разделами;
- Группировочные поля (зеленая рамка). В данный раздел необходимо перетащить (мышью или при помощи кнопок) поля по которым будет производиться группировка;
- Группируемые поля (синяя рамка). В данный раздел необходимо перетащить (мышью или при помощи кнопок) поля, значения которых будут рассчитываться при помощи агрегатных функций. Данный раздел представляет из себя таблицу, в первой колонке которой находится группируемое поле, а во второй выбирается из списка агрегатная функция.
Следует заметить, что если вы используете группировку в запросе, то вам необходимо распределить все выбранные в запрос поля между разделами группировочных и группируемых. Если вы этого не сделаете, то оставшиеся поля автоматически перейдут в раздел группируемых. Исключение составляют только поля созданные вручную и не содержащие полей таблиц (строковые или числовые, например). Их включать в группировку не обязательно, так как их значение одинаково для всех строк выборки.


Практическая часть урока №5
Разберем решение задачи, приведенной в начале урока. Напомню условия:
Задача: Получить суммы поступлений за текущий год с разбивкой по месяцам. Для получения данных использовать проведенные документы Поступление товаров и услуг.
- Создадим новый запрос;
- Запустим конструктор запросов;
- Выберем таблицу ПоступлениеТоваровУслуг из ветки Документы;
- Из таблицы ПоступлениеТоваровУслуг выберем поля Дата и СуммаДокумента;
- Выделим поле Дата и нажмем кнопку Изменить текущий элемент, чтобы открыть его в редакторе произвольных выражений;

- В разделе Функции языка запросов найдем ветку Функции работы с датами;
- Из данной ветки перетащим в раздел выражений функцию Месяц и заменим параметр Дата на выбранное нами поле с датой поступления;

- Нажмем кнопку ОК, в нижней части редактора произвольных выражений;
- Перейдем на вкладку Объединения / Псевдонимы и установим для поля с номером месяца псевдоним Месяц;

- Перейдем на вкладку Условия;
- В разделе Поля, раскроем ветку ПоступлениеТоваровУслуг при помощи кнопки «+»;
- Найдем реквизит Дата и перетащим его в раздел условия, выберем оператор сравнения Между и укажем параметры начала и окончания года, например НачалоГода и КонецГода;
- Из раздела Поля перетащим реквизит Проведен, поставим в строке с условием флаг Произвольное и сотрем лишнюю часть условия «= &Проведен»;
- Перейдем на вкладку Группировка;
- В раздел группировочных полей перетащим поле МЕСЯЦ(ПоступлениеТоваровУслуг.Дата), а в раздел группируемых полей — ПоступлениеТоваровУслуг.СуммаДокумента. По умолчанию установится агрегатная функция Сумма, в данном случае она нас вполне устраивает;


- Написание запроса завершено, нажмем кнопку ОК, чтобы закрыть конструктор запросов;
1С 8.3 Группировка в запросе — Программист 1С Минск. Автоматизация бизнеса.

✔ Группировка исходных данных в запросе

&НаСервере
Процедура ГруппировкаИсходныхДанныхВЗапросе ()// Группировка элементов справочника Материалы, при помощи функции СУММА,
// в разрезе срока использования (группировочное поле) по весу (группируемое поле)
Запрос = Новый Запрос ( «ВЫБРАТЬ
| СрокИспользования,
| СУММА(Вес)
|ИЗ
| Справочник.Материалы
|ГДЕ
| ЭтоГруппа = ЛОЖЬ
|СГРУППИРОВАТЬ ПО
| СрокИспользования» );РезультатЗапроса = Запрос . Выполнить (); Записи = РезультатЗапроса . Выбрать ();
Пока Записи . Следующий () Цикл
// Обход результата запроса по каждой записи в полученной выборке
КонецЦикла;&НаСервере
Процедура ГруппировкаИсходныхДанныхВЗапросеБезГруппируемыхПолей ()// Наличие группируемых полей не является обязательным в группировке элементов
// Можно также использовать ВЫБРАТЬ РАЗЛИЧНЫЕ Сроки Использования. Результат будет тот же
Запрос = Новый Запрос ( «ВЫБРАТЬ
| СрокИспользования
|ИЗ
| Справочник.Материалы
|ГДЕ
| ЭтоГруппа = ЛОЖЬ
|СГРУППИРОВАТЬ ПО
| СрокИспользования» );РезультатЗапроса = Запрос . Выполнить (); Записи = РезультатЗапроса . Выбрать ();
Пока Записи . Следующий () Цикл
// Обход результата запроса по каждой записи в полученной выборке
КонецЦикла;&НаСервере
Процедура ГруппировкаВЗапросеБезГруппировочныхПолейПоВсейТаблице ()// Наличие группируемых полей не является обязательным в группировке элементов
// Получение средних значений по всем элементам материалов
Запрос = Новый Запрос ( «ВЫБРАТЬ
| СРЕДНЕЕ(Вес),
| СРЕДНЕЕ(Плотность),
| СРЕДНЕЕ(Фасовка)
|ИЗ
| Справочник.Материалы
|ГДЕ
| ЭтоГруппа = ЛОЖЬ» );РезультатЗапроса = Запрос . Выполнить (); Записи = РезультатЗапроса . Выбрать ();
Пока Записи . Следующий () Цикл
// Обход результата запроса по каждой записи в полученной выборке
КонецЦикла;Запросы 1С:Предприятие 8. Группировка
Группировки в запросах 1С применяются, когда необходимо свернуть таблицу, получаемую из источника данных по какому-либо столбцу (группировочный столбец) а со значениями другого столбца (группируемый столбец) произвести некие математические или статистические действия, например подсчитать сумму.
Развернуть группировку после выполнения запроса и узнать, какие строки в нее вошли, после выполнения запроса невозможно (в отличие от применения Итогов).
При использовании группировок все столбцы в запросе делятся на группируемые и группировочные, не должно оставаться столбца, который не принадлежит ни к одной из категорий. Вместе с тем, группируемых столбцов может не быть, если все столбцы относятся к группировочным, и наоборот, может не быть группировочных столбцов, если все относятся к группируемым.
Группировочные столбцы обозначаются в особой секции запроса, которая начинается с фразы СГРУППИРОВАТЬ ПО. Группируемые столбцы обозначаются через агрегатные функции в секции ВЫБРАТЬ.
Существует 6 видов агрегатных функций, применяемых при группировках:
- СУММА — суммирует значения группируемого столбца, применяется только для числовых значений.
- СРЕДНЕЕ — вычисляет среднее арифметическое из значений группируемого столбца, применяется только для числовых значений.
- МАКСИМУМ — может применяться для любых типов значений группируемого столбца, при этом возвращается максимальное значение из всех группируемых. Если значения не числовые, то возвращается последнее при сортировке по возрастанию.
- МИНИМУМ — может применяться для любых типов значений группируемого столбца, при этом возвращается минимальное значение из всех группируемых. Если значения не числовые, то возвращается первое при сортировке по возрастанию.
- КОЛИЧЕСТВО — возвращает количество значений в группируемом столбце, может использоваться для любых типов значений. В расчет не берутся значения типа NULL.
- КОЛИЧЕСТВО РАЗЛИЧНЫЕ — возвращает количество различных значений в группируемом столбце, может использоваться для любых типов значений. В расчет не берутся значения типа NULL.
Полям запроса, к которым применены агрегатные функции обязательно назначаются псевдонимы.
Об особенностях применения условий отбора в запросах с группировками читайте в статье Запросы 1С:Предприятие 8. Условия отбора.
Рассмотрим применение группировок в запросах 1С на примерах.
Источником данных будет таблица покупок товаров Поставки, в которой отражены операции поставки товара (каждая поставка в отдельной строке):
Задача 1.Узнать, какие поставщики поставляли товары.
Решение: Одним из вариантов решений может быть выбор единственного стобца Поставщик и группировка по нему.

Задача 2.
Узнать общее количество поставленного товара каждого вида.
Решение: Необходимо выбрать два столбца: товар и количество, сгруппировать полученный результат по полю Товар, применив агрегатную функцию Сумма.

Задача 3.
Определить, сколько в среднем единиц товара поставляет каждый поставщик.
Решение: Необходимо выбрать два столбца: поставщик и количество, сгруппировать полученный результат по полю Поставщик, применив агрегатную функцию Среднее.

Задача 4.
Подсчитать количество операций по поставке товара.
Решение: Можно выбрать любой столбец и применить к нему агрегатную функцию Количество.
Задача 5.Подсчитать количество поставщиков нашей организации.
Решение: Выбрать столбец Поставщик и применить к нему агрегатную функцию Количество Различные.
Как узнать уровень группировки 1с в запросе
Войдите как ученик, чтобы получить доступ к материалам школы
Язык запросов 1С 8.3 для начинающих программистов: группировка
Автор уроков и преподаватель школы: Владимир Милькин
Группировка в запросах
Давайте запросим из таблицы Справочник.Еда следующие реквизиты: Наименование, Цвет и Калорийность:

Теперь предположим, что нам необходимо вычислить суммарную калорийность продуктов для каждого цвета.
Алгоритм для жёлтого цвета будет такой:
- Находим все строчки у которых в поле Цвет стоит Жёлтый.
- Это будут строчки №1, 6, 8 и 9.
- Суммируем поле Калорийность для каждой из этих строк: 89 + 31 + 340 + 536
- Получаем, что для жёлтого цвета суммарная калорийность равна 996.
И так для каждого цвета.
Описанный выше процесс называется группировкой . Таким образом, группировка — это «схлопывание» (свёртка) строчек таблицы по определенному признаку.
При группировке все поля делятся на две группы:
- Группировочные — это как раз те поля, по которым идёт свёртка. В нашем случае таким полем является Цвет.
- Группируемые — это те поля, которые сворачиваются (схлопываются, объединяются). В нашем случае таким полем является Калорийность.

Группируемые поля не могут быть сами по себе. К ним обязательно применяется одна из агрегатных функций: СУММА, СРЕДНЕЕ, МИНИМУМ, МАКСИМУМ, КОЛИЧЕСТВО, КОЛИЧЕСТВО РАЗЛИЧНЫЕ:

Агрегатная функция СУММА
Это как раз случай, который мы разбирали. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь. Все строки группируются по группировочным полям (Цвет), а группируемые поля (Калорийность) суммируются:

Агрегатная функция СРЕДНЕЕ
В этом случае все строки группируются по группировочным полям (Цвет), а среди группируемых полей (Калорийность) находится среднее значение:

Агрегатная функция МИНИМУМ
В этом случае все строки группируются по группировочным полям (Цвет), а среди группируемых полей (Калорийность) находится минимальное значение:

Агрегатная функция МАКСИМУМ
В этом случае все строки группируются по группировочным полям (Цвет), а среди группируемых полей (Калорийность) находится максимальное значение:

Агрегатная функция КОЛИЧЕСТВО
В этом случае все строки группируются по группировочным полям (Цвет), а среди группируемых полей (Калорийность) находится их количество :

Агрегатная функция КОЛИЧЕСТВО РАЗЛИЧНЫЕ
В этом случае все строки группируются по группировочным полям (Цвет), а среди группируемых полей (Калорийность) находится количество элементов с различными значениями:

Функция КОЛИЧЕСТВО РАЗЛИЧНЫЕ требует пояснения, потому что на выбранном примере её результат совпадает с функцией КОЛИЧЕСТВО. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь. Вот более показательный пример, который всё объясняет:
Группировка без группируемых полей и агрегатных функций
Использование агрегатных функций в запросе не требуется, если результатом запроса будут только группировочные поля:

К примеру, сделаем выборку всех вкусов, которые встречаются среди еды:
Как видите вкусы повторяются — давайте их сгруппируем:
Таким образом, мы сделали группировку только по группировочным полям (Вкус). Группируемые поля, а следовательно и агрегатные функции нам не понадобились.
Группировка без группировочных полей
Соответственно использование группировочных полей также не требуется, если результатом запроса будут только группируемые поля:

К примеру, получим результаты агрегатных функций применительно к полю Калорийность без группировочных полей (то есть по всей таблице):

Группировка по нескольким полям
Группировочных (как впрочем и группируемых) полей может быть сколь угодно много. В запросе они перечисляются через запятую.
1С 8.3 Группировка в запросе — Программист 1С Минск. Автоматизация бизнеса.

✔ Группировка исходных данных в запросе

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