Язык запросов 1С 8.3 для начинающих программистов: итоги
Автор уроков и преподаватель школы: Владимир Милькин
Итоги в запросах
Давайте рассмотрим запрос, выбирающий из таблицы Документ.ПрибытиеГостей номер документа, город и количество прибывших:
ВЫБРАТЬ Номер, Город, Количество ИЗ Документ.ПрибытиеГостей |
Наша задача состоит в том, чтобы подвести итоги (просуммировать) количества прибывших гостей для каждого города.
Как вы помните, эту задачу можно решить при помощи группировки:
ВЫБРАТЬ Город, СУММА(Количество) ИЗ Документ.ПрибытиеГостей СГРУППИРОВАТЬ ПО Город |
Обратите внимание на то, что количество записей после группировки сократилось, а информация о номере документа пропала. Так действует группировка. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь.
Сегодня мы рассмотрим механизм формирования итогов, который решает эту задачу по-другому:
ВЫБРАТЬ Город, Номер, Количество ИЗ Документ.ПрибытиеГостей ИТОГИ СУММА(Количество) ПО Город |
Обратите внимание, что после подведения итогов:
- Количество записей наоборот увеличилось. Остались все записи, которые были до подведения итогов + к ним добавились записи самих итогов.
- У нас есть возможность просматривать дополнительные поля (Номер), которые пропадали при группировке.
Таким образом, после группировки остаются только обобщённые записи (группы), а после подведения итогов остаются все записи что были до этого (детальные записи) + к ним добавляются обобщённые записи (итоги, выделены жёлтым цветом на рисунке).
Общий синтаксис секции итогов такой:
Подведение итогов в целом по таблице
Если необходимо подвести итоги целиком по всей таблице необходимо использовать ключевое слово ОБЩИЕ в секции ПО:
ВЫБРАТЬ Город, Номер, Количество ИЗ Документ.ПрибытиеГостей ИТОГИ СУММА(Количество) ПО ОБЩИЕ |
Подведение итогов по нескольким полям
Достаточно просто перечислить эти поля через запятую в секции ПО. В качестве примера подведем итоги в целом по таблице (поле ОБЩИЕ), а затем по полю Город:
ВЫБРАТЬ Город, Номер, Количество ИЗ Документ.ПрибытиеГостей ИТОГИ СУММА(Количество) ПО ОБЩИЕ, Город |
Подведение итогов по иерархии
В том случае, если мы подводим итоги по полю (в данном случае Город) тип которого имеет иерархическую структуру (папки + обычные элементы) можно использовать ключевое слово ИЕРАРХИЯ, чтобы подвести итоги по всем уровням вложенности:
ВЫБРАТЬ Город, Номер, Количество ИЗ Документ.ПрибытиеГостей ИТОГИ СУММА(Количество) ПО Город ИЕРАРХИЯ |
Если же необходимо вывести итоги только для групп (в данном случае папки в справочнике Города) необходимо использовать ключевое слово ТОЛЬКО ИЕРАРХИЯ:
ВЫБРАТЬ Город, Номер, Количество ИЗ Документ.ПрибытиеГостей ИТОГИ СУММА(Количество) ПО Город ТОЛЬКО ИЕРАРХИЯ |
Сравните этот и предыдущий результаты запросов.
Подведение итогов без агрегатных функций
Использование агрегатных функций при подведении итогов не является обязательным. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь.
К примеру, если бы мы захотели расположить все документы прибытия гостей по иерархии городов, то запрос был бы таким:
ВЫБРАТЬ Город, Номер, Количество ИЗ Документ.ПрибытиеГостей ИТОГИ ПО Город ИЕРАРХИЯ |