Часто при анализе данных необходимо получать суммирующую информацию для нескольких полей и всего отчета в целом или просто объединять записи в группы по какому-то признаку. Для этого используется механизм группировки и применяется оператор
СГРУППИРОВАТЬ ПО СписокПолей
Порядок следования полей в списке определяет и порядок вложенности (иерархию) групп. Для получения обобщенных данных по группам применяются агрегатные функции СУММА, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, КОЛИЧЕСТВО. Эти функции можно использовать и в операторе ВЫБРАТЬ, но при этом в список полей группировки нужно добавлять все поля из ВЫБРАТЬ, не охваченные агрегатными функциями. Ключевое слово АВТОУПОРЯДОЧИВАНИЕ позволяет включить режим автоматического формирования полей для упорядочивания результата запроса.
В группировке можно указывать дополнительные условия отбора по полям группировки и агрегатным функциям. Для этого используется оператор ИМЕЮЩИЕ. Он применяется только с группировками. Он существенно замедляет работу сервера по выполнению запроса.
// Выбрать товары, которых продали не менее 100 штук
| ВЫБРАТЬ Номенклатура,
| СУММА(Количество) КАК Продано
| ИЗ Документ.ПродажаТоваров.Товары
| СГРУППИРОВАТЬ ПО Номенклатура
| ИМЕЮЩИЕ Сумма(Количество) >= 100
Логическим завершением группировки является получение общих итогов по полям запроса. Для этого применяется оператор
ИТОГИ СписокПолейСАгрегатнымиФункциями ПО СписокПолей
В списке полей можно использовать оператор ОБЩИЕ.
// Итоги по группировкам
// Объем продаж по каждой комбинации контрагента и номенклатуры
| ВЫБРАТЬ Контрагент, Номенклатура, Сумма
| ИЗ РегистрНакопления.Продажи
| ИТОГИ СУММА(Сумма)
| ПО Контрагент, Номенклатура
| АВТОУПОРЯДОЧИВАНИЕ
Для включения в текст запроса переменных значений непосредственно перед выполнением используется механизм параметров. Параметр – это аналог переменной любого языка программирования в языке запроса. Каждый параметр в тексте запроса обозначается знаком &, например &Параметр1. Параметры могут использоваться в операторе ГДЕ для сравнения с полями запроса. Заполнение значений параметров выполняется средствами встроенного языка перед выполнением запроса.
// Использование параметров и ключевого слова МЕЖДУ