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