Обход запроса по группировкам

Сегодня сделаем небольшую заметку в рубрике ‘Джуниор1с’ о том как обойти результат запрос по группировкам, если запрос содержит итоги. Данная конструкция мне редко встречается на практике, но бывает очень полезна, когда необходимо:

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

Для того что бы была возможность использовать обход результата запроса по группировкам необходимо использовать конструкцию ‘ИТОГИ ПО’ (закладка конструктора запроса ‘Итоги’):

Конструктор запросов ‘Итоги’.

Давайте для примера получим остатки товаров на складах с итогами по организации и месту хранения:

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

Таблица запроса с итогами.
Таблица запроса с итогами.

Теперь для того что бы работать с этими данными в выборке, нам необходимо в качестве 1-ого параметра метода ‘Выбрать’ указать тип обхода ‘ОбходРезультатаЗапроса.ПоГруппировкам’. И так необходимо делать для каждой вложенной выборки:

Так же стоить обратить внимание на признак в конструкторе запроса ‘Общие итоги’:

Общие итоги.
Общие итоги.

Благодаря этому флажку мы можем получить общие итоги по ресурсам:

Давайте еще рассмотрим пример из задачи по экзамену 1с: Специалист, где в задачах оперативного учета необходимо сделать партионное списания товара:

Здесь используются итоги по товару, в разрезе уже которого осуществляется списание количество по партиям.

Как видим, работать с итогами запроса и обходить его по группировкам довольно просто. Всем удачи! Пока!

6+

1 комментарий

  1. Dots

    Круто!

    2+

Оставить комментарий

Ваш адрес email не будет опубликован.