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

Jul 08, 2022 16:13


/// Как сгруппировать исходные данные в запросе в 1с 8.3, 8.2

&НаСервере
Процедура КакСгруппироватьИсходныеДанныеВЗапросеНаСервере()

// Группировка - это свёртка строчек таблицы по определенному
// признаку.

// В группировке участвуют поля двух типов: группировочные
// и группируемые.
// Группировочные - это те поля, по которым (в разрезе которых)
// идёт свёртка.
// Группируемые - это те поля, которые сворачиваются (например,
// суммируются.

// Свёртка группируемых полей проводится при помощи
// агрегатных функций:
// СУММА
// СРЕДНЕЕ
// МИНИМУМ
// МАКСИМУМ
// КОЛИЧЕСТВО [РАЗЛИЧНЫЕ]

// Обратите внимание, что при группировке (в отличие от итогов)
// происходит удаление детальных записей (строк) таблицы.
// То есть при подведении итогов - записей в результате запроса
// становится больше, а при группировке - меньше.
// Подробнее см. урок выше.

// Сгруппируем элементы справочника Номенклатура
// в разрезе цвета (группировочное поле) по
// калорийности (группируемое поле) при помощи функции СУММА.

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

ВыполнитьЗапросИВывестиНаФорму(Запрос);

КонецПроцедуры

/// Возможно ли cгруппировать без группируемых полей в запросе
/// в 1с 8.3, 8.2

&НаСервере
Процедура КакСгруппироватьБезГруппируемыхПолейНаСервере()

// Наличие группируемых полей не является обязательным в группировке.
// Рассмотрим такой пример.

Запрос = Новый Запрос(
"ВЫБРАТЬ
| Цвет
|ИЗ
| Справочник.Номенклатура
|ГДЕ
| ЭтоГруппа = ЛОЖЬ
|СГРУППИРОВАТЬ ПО
| Цвет"
);

ВыполнитьЗапросИВывестиНаФорму(Запрос);

// В данном случае результат запроса аналогичен тому,
// если бы мы запросили ВЫБРАТЬ РАРЗЛИЧНЫЕ цвета из
// элементов справочника Номенклатура.

КонецПроцедуры

/// Возможно ли сгруппировать без группировочных полей
/// в запросе (то есть в целом по таблице) в 1с 8.3, 8.2

&НаСервере
Процедура КакСгруппироватьБезГруппировочныхПолейНаСервере()

// Наличие группировочных полей также не является обязательным
// в группировке.
// Получим средние значения калорийности, жиров, белков и
// углеводов в целом по всем элементам номенклатуры.

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

ВыполнитьЗапросИВывестиНаФорму(Запрос);

КонецПроцедуры
Смотрите также:
Электронный учебник по программированию в 1С
Рекомендации по изучению программирования 1С с нуля
Игра "Кто хочет стать миллионером?" с вопросами на определенную тематику (язык программирования JavaScript, английские, немецкие, французские, испанские, португальские, ни­дер­ландские, итальянские слова, электробезопасность, промышленная безопасность, бокс и т.п.), написанная на 1С
Программирование в 1С 8.3 с нуля - краткий самоучитель
Комплексная подготовка программистов 1С:Предприятие 8.2
Сайты с уроками программирования и со справочниками
Youtube-каналы с уроками программирования
Сайты для обучения программированию
Лекции и уроки

программирование

Previous post Next post
Up