Капитально об программе 1С 8.0-8.3-8.4, 7.7

Итоги и иерархия выборки

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

Обычный же результат выгружается как таблица значений (помимо линейной выборки).

Синтаксис блока ИТОГИ

ИТОГИ
  <Агрегатные функции>

ПО
  ОБЩИЕ,
  <ПолеГруппировки> <ТипИтогов>

Пример:

ИТОГИ
    МАКСИМУМ(СуммаОборот)
ПО
    ОБЩИЕ,
    Ссылка ИЕРАРХИЯ

Конструктор запроса

Управление итогами производится на одноименной вкладке «Итоги»

Иерархия выборки

Выборка запроса по группировкам была рассмотрена в этой статье.

Приведем фрагмент кода:

Запрос = Новый  Запрос;
Запрос.Текст = ТекстЗапроса();
	
Выборка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Пока Выборка.Следующий() Цикл
КонецЦикла;

Тонкости итогов

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

Дерево = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);

Есть интересный механизм получения аккуратного и компактного дерева через использования ВЫБОР в разделе ИТОГИ

Имя поля в итоге должно совпадать с одним из полей выборки иначе будет ошибка «Невозможно определить поле для записи результата»

Поля в итогах также должны быть в выборке, в противном случае выйдет ошибка: «Поле, по которому рассчитываются итоги, должно присутствовать в списке выборки»

ВЫБРАТЬ
   4 КАК Четыре,
   3 КАК Три,
   2 КАК Два,
   1 КАК Один
ИТОГИ
   ВЫБОР
       КОГДА Два ЕСТЬ NULL
            ТОГДА Один
      КОГДА Три ЕСТЬ NULL
            ТОГДА Два
      ИНАЧЕ Три
КОНЕЦ КАК Четыре
ПО
    Один,
    Два,
    Три

На Выходе будет вот такая дерево: