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