1С 8.3 Группировка в запросе - Программист 1С Минск. Автоматизация бизнеса.

Перейти к контенту

1С 8.3 Группировка в запросе

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

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

   
РезультатЗапроса = Запрос.Выполнить(); Записи = РезультатЗапроса.Выбрать();
    Пока
Записи.Следующий() Цикл
       
// Обход результата запроса по каждой записи в полученной выборке
   
КонецЦикла;

КонецПроцедуры
Группировка исходных данных в запросе без группируемых полей в 1С 8.3:
&НаСервере
Процедура ГруппировкаИсходныхДанныхВЗапросеБезГруппируемыхПолей()

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

   
РезультатЗапроса = Запрос.Выполнить(); Записи = РезультатЗапроса.Выбрать();
    Пока
Записи.Следующий() Цикл
       
// Обход результата запроса по каждой записи в полученной выборке
   
КонецЦикла;

КонецПроцедуры
Группировка исходных данных в запросе без группировочных полей по всей таблице в 1С 8.3:
&НаСервере
Процедура ГруппировкаВЗапросеБезГруппировочныхПолейПоВсейТаблице()

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

   
РезультатЗапроса = Запрос.Выполнить(); Записи = РезультатЗапроса.Выбрать();
    Пока
Записи.Следующий() Цикл
       
// Обход результата запроса по каждой записи в полученной выборке
   
КонецЦикла;

КонецПроцедуры
0
комментарии
____________________
Copyright©, «Программист 1С в г.Минске», 14.06.2020
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
Яндекс.Метрика
Защищенное соединение ssl
visa
mastercard
Maestro
Яндекс деньги
Назад к содержимому