[Alimir_BootModal_Login]

Язык запросов 1С 8.3 для начинающих программистов: итоги

Автор уроков и преподаватель школы: Владимир Милькин

Итоги в запросах

Давайте рассмотрим запрос, выбирающий из таблицы Документ.ПрибытиеГостей номер документа, город и количество прибывших:

ВЫБРАТЬ
    Номер,
    Город,
    Количество
ИЗ
    Документ.ПрибытиеГостей

02

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

Как вы помните, эту задачу можно решить при помощи группировки:

ВЫБРАТЬ
    Город,
    СУММА(Количество)
ИЗ
    Документ.ПрибытиеГостей
СГРУППИРОВАТЬ ПО
    Город

03

Обратите внимание на то, что количество записей после группировки сократилось, а информация о номере документа пропала. Так действует группировка. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь.

Сегодня мы рассмотрим механизм формирования итогов, который решает эту задачу по-другому:

ВЫБРАТЬ
    Город,
    Номер,
    Количество
ИЗ
    Документ.ПрибытиеГостей
ИТОГИ
    СУММА(Количество)
ПО
    Город

05

Обратите внимание, что после подведения итогов:

  • Количество записей наоборот увеличилось. Остались все записи, которые были до подведения итогов + к ним добавились записи самих итогов.
  • У нас есть возможность просматривать дополнительные поля (Номер), которые пропадали при группировке.

Таким образом, после группировки остаются только обобщённые записи (группы), а после подведения итогов остаются все записи что были до этого (детальные записи) + к ним  добавляются обобщённые записи (итоги, выделены жёлтым цветом на рисунке).

Общий синтаксис секции итогов такой:

06

Подведение итогов в целом по таблице

Если необходимо подвести итоги целиком по всей таблице необходимо использовать ключевое слово ОБЩИЕ в секции ПО:

ВЫБРАТЬ
    Город,
    Номер,
    Количество
ИЗ
    Документ.ПрибытиеГостей
ИТОГИ
    СУММА(Количество)
ПО
    ОБЩИЕ

07

Подведение итого по нескольким полям

Достаточно просто перечислить эти поля через запятую в секции ПО. В качестве примера подведем итоги в целом по таблице (поле ОБЩИЕ), а затем по полю Город:

ВЫБРАТЬ
    Город,
    Номер,
    Количество
ИЗ
    Документ.ПрибытиеГостей
ИТОГИ
    СУММА(Количество)
ПО
    ОБЩИЕ,
    Город

08

Подведение итогов по иерархии

В том случае, если мы подводим итоги по полю (в данном случае Город) тип которого имеет иерархическую структуру (папки + обычные элементы) можно использовать ключевое слово ИЕРАРХИЯ, чтобы подвести итоги по всем уровням вложенности:

ВЫБРАТЬ
    Город,
    Номер,
    Количество
ИЗ
    Документ.ПрибытиеГостей
ИТОГИ
    СУММА(Количество)
ПО
    Город ИЕРАРХИЯ

09

Если же необходимо вывести итоги только для групп (в данном случае папки в справочнике Города) необходимо использовать ключевое слово ТОЛЬКО ИЕРАРХИЯ:

ВЫБРАТЬ
    Город,
    Номер,
    Количество
ИЗ
    Документ.ПрибытиеГостей
ИТОГИ
    СУММА(Количество)
ПО
    Город ТОЛЬКО ИЕРАРХИЯ

10

Сравните этот и предыдущий результаты запросов.

Подведение итогов без агрегатных функций

Использование агрегатных функций при подведении итогов не является обязательным. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь.

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

ВЫБРАТЬ
    Город,
    Номер,
    Количество
ИЗ
    Документ.ПрибытиеГостей
ИТОГИ
ПО
    Город ИЕРАРХИЯ

11

Пройдите тест

Начать тест

Домашнее задание

а) Напишите запрос, который получает Цвет, Вкус, Наименование и Калорийность элементов справочника Еда, а затем подводит итоги (минимальное значение) Калорийности по полям Цвет и Вкус:

12

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

б) Напишите запрос, который получает Наименование и Калорийность элементов справочника Еда, а затем подводит итоги калорийности (минимальное, максимальное и среднее значения, количество) в целом по таблице:

13

Подсказка: для того, чтобы можно было вывести колонку Количество четыре раза, а затем обратиться к ней в секции ИТОГИ используйте псевдонимы полей, которые мы рассматривали на одном из прошлых занятий.

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