СГРУППИРОВАТЬ ПО в запросе 1С 8.3

Агрегатные функции

Агрегатная функция в запросе 1С — это такая функция, которая применяется к нескольким записям, но возвращает одно значение. Агрегатные функции можно использовать в списке полей выборки.

В запросах 1С поддерживаются следующие агрегатные функции:

  • Сумма
  • Среднее
  • Минимум
  • Максимум
  • Количество

Функции Сумма и Среднее можно использовать только для типа данных Число, функции Минимум, Максимум и Количество можно использовать с любыми типами данных.

Например, есть справочник Камеры хранения с числовым реквизитом Площадь со следующим содержимым:

Агрегатные функции

Применим к нему все агрегатные функции:

Агрегатные функции

Количество = количество всех записей = 4.

Сумма = 100 + 200 + 300 + 200 = 800.

Минимум = минимальное значение = 100.

Среднее = (100 + 200 + 300 + 200) / 4 = 200.

Максимум = максимальное значение = 300.

Чтобы подсчитать количество всех записей в таблице можно воспользоваться другим способом:

Количество

Чтобы подсчитать количество различных записей таблицы нужно добавить ключевое слово РАЗЛИЧНЫЕ внутри агрегатной функции Количество:

Количество различных

Если применить агрегатную функцию к реквизиту пустой таблицы, то результат будет равен NULL:

Количество

Так как в справочнике Товары не было ни одной записи, то в поле Наименование будет NULL. Это нужно учитывать при последующей обработке результата запроса.

СГРУППИРОВАТЬ ПО

Как правило вместе с агрегатными функциями используется группировка записей. Для группировки используется предложение СГРУППИРОВАТЬ ПО. Например, у камер хранения есть реквизит Цвет, содержимое таблицы следующее:

СГРУППИРОВАТЬ ПО

Для получения общей площади камер в разрезе цветов можно использовать следующий запрос:

СГРУППИРОВАТЬ ПО

В результате таблица была свернута по полю Цвет (нет повторяющихся значений), а к полю Площадь была применена агрегатная функция Сумма (для белого цвета = 100 + 200).

После предложения СГРУППИРОВАТЬ ПО указывается список полей, по которым нужно сгруппировать (свернуть) записи. При этом указываются имена полей, а не псевдонимы. Можно указать несколько полей:

СГРУППИРОВАТЬ ПО

Если используется предложение СГРУППИРОВАТЬ ПО, то все поля должны быть или в списке группирующих полей или к полю должна быть применена агрегатная функция. Следующий запрос не выполнится с ошибкой «Поле не входит в группу «КамерыХранения.Наименование»»:

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

Несмотря на то, что поле КамерыХранения.Поставщик.Наименование не указано в списке группирующих полей запрос выполнится. Так как есть группировка по основному полю КамерыХранения.Поставщик.

В списке группирующих полей можно указывать поля, которые не входят в список полей выборки:

СГРУППИРОВАТЬ ПО

Подписывайтесь на группу ВКонтакте , где я публикую ссылки на новые статьи с данного сайта, а также интересные материалы с других ресурсов по программированию в 1С
Понравилась статья? Поделиться с друзьями:
Используя этот сайт, Вы даете согласие на использование cookies. На данном этапе Вы можете отказаться от использования cookies, настроив необходимые параметры в своем браузере.
ok