Группировка в запросах в языке 1С 8.3, 8.2 (в примерах)

Вступайте в мою группу помощник программиста.
В ней мы обсуждаем программирование в 1С.

<<< Основы Группировка Условия Упорядочивание Функции
<<< Итоги Соединение Объединение Параметры

См. урок для начинающих по группировкам в языке запросов 1С
Скачать эти примеры в виде тестовой базы (как загрузить, как исследовать)

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

Скачать эти примеры в виде тестовой базы (как загрузить, как исследовать)

Группировка в запросах в языке 1С 8.3, 8.2 (в примерах)

<<< Основы Группировка Условия Упорядочивание Функции
<<< Итоги Соединение Объединение Параметры

С уважением, (преподаватель школы 1С программистов и разработчик обновлятора).



Владимир Милькин
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.

Нажмите одну из кнопок, чтобы поделиться: