Тип обхода по группировкам 1с

Обновлено: 08.07.2024

ВЫБРАТЬ
Продажи.Контрагент КАК Покупатель,
Продажи.Маршрут КАК Маршрут,
СУММА(Продажи.Количество * Продажи.Номенклатура.ЕдиницаХраненияОстатков.Вес) КАК Вес,
СУММА(Продажи.Стоимость) КАК Сумма
ИЗ
РегистрНакопления.Продажи.Регистратор КАК Продажи

СГРУППИРОВАТЬ ПО
Продажи.Контрагент,
Продажи.Маршрут
ИТОГИ
СУММА(Вес),
СУММА(Сумма)
ПО
ОБЩИЕ,
Маршрут

как правильно организовать обход результата данного запроса, чтобы при выводе в табличный документ вначале выводилась группировка по Маршруту с итогам, затем детальные записи (Покупатель, количество, Вес), а в конце выводится общий итог?

если я правильно понял вопрос, то второй параметр у Выбрать - имя группировки

Выбрать(<ТипОбхода>, <Группировки>, <ГруппировкиДляЗначенийГруппировок>)
Параметры:

Тип: ОбходРезультатаЗапроса.
Задает тип обхода записей в получаемой выборке.
Тип: Строка.
Список группировок по которым будет вестись обход, разделенных запятыми.
Для детальных записей указывается пустая строка. В случае, если группировки не указаны - будет использоваться следующая группировка, указанная в предложении запроса "ИТОГИ".
Тип: Строка.
Список группировок, из которых будут выбираться значения группировок для обхода, разделенных запятыми. Если указано "Все", то будут выбираться все значения группировок. Если указана пустая строка, то значения для группировок будут выбираться из предыдущей группировки.
Возвращаемое значение:

"как правильно организовать обход результата данного запроса" // Правильно будет организовать обход результата данного запроса силами СКД

(4) ТО что выбрать понятно. Сформулирую по другому. Я делаю перебор результата запроса

Я один тут не понимаю, что за таблица РегистрНакопления.Продажи.Регистратор?

> Я один тут не понимаю, что за таблица РегистрНакопления.Продажи.Регистратор?

в контексте итогов это вообще не важно и может просто для примера что-то написано.

Сразу хочу предупредить, что вопрос освещаемый в этой статье очень специальный и если вы хотите увидеть общий обзор всего, да с практической пользой и применением, то лучше вам дальше не читать.

Тем же, кого, как и меня, беспокоил не не давал спокойно спать этот мелкий и назойливый вопрос "ну почему список" - добро пожаловать. Итак, интерес исключительно академический, практическая значимость сомнительна. Поехали!

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

РезультатЗапроса (QueryResult)
Выбрать (Choose)
Синтаксис:

Выбрать(, , )

Параметры:

(необязательный)

Тип: ОбходРезультатаЗапроса.
Задает тип обхода записей в получаемой выборке.
Значение по умолчанию: Прямой
(необязательный)

(необязательный)

Тип: Строка.

Список группировок по которым будет вестись обход, разделенных запятыми.
Для детальных записей указывается пустая строка. В случае, если группировки не указаны - будет использоваться следующая группировка, указанная в предложении запроса "ИТОГИ".
(необязательный)

(необязательный)

Тип: Строка.

Список группировок, из которых будут выбираться значения группировок для обхода, разделенных запятыми. Если указано "Все", то будут выбираться все значения группировок. Если указана пустая строка, то значения для группировок будут выбираться из предыдущей группировки.

Возвращаемое значение:

Тип: ВыборкаИзРезультатаЗапроса.

Описание:

Формирует выборку записей из результата запроса.

Доступность:

Сервер, толстый клиент, внешнее соединение.
Примечание:

Получение выборок очень большого размера (более 64Mb) требует наличия достаточного количества свободного места на диске, используемом для размещения временных файлов сервера и клиента.

Пример:

Выборка = РезультатЗапроса . Выбрать ();

Казалось бы, всё понятно, все пользовались миллион раз. Но, обратите внимание, что в описании второго параметра написано:

Список группировок по которым будет вестись обход, разделенных запятыми.

Исходя из практики сразу скажу, что этот параметр используется редко даже с одной группировкой. Проще в самом запросе указать группировки в нужном порядке, чтобы потом по ним "идти", чем потом в коде пропускать какие-то группировки. Да, и вообще, как уже говорилось - СКД рулит. Но какое-то поведение все-таки закладывалось в метод, когда в параметре перечислен именно список группировок? Какое? Этот вопрос беспокоил не только меня, но интернет предательски молчал.

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

Обход результата запроса по группировкам доступен при использовании конструкции Итоги <Итоговое поле> по <Поля итогов> языка запросов.

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

Не стоит использовать итоги, если в этом нет необходимости:

Для использования механизма сводной таблицы платформы

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

В тексте запроса конструкция находится в нижней части:

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

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

Последняя группировка будет данными выборки, для которой вызов идет без параметра, либо с параметром ОбходРезультатаЗапроса.Прямой (по умолчанию).

Для примера, вывод результата произведем в табличный документ.

Чтобы вывести группировки в табличном документе, воспользуемся методом НачатьАвтогруппировкуСтрок(). После завершения вывода вызывается ЗакончитьАвтоГруппировкуСтрок() иначе группировка не сработает. Уровень группировки определяет второй параметр метода Вывести() табличного документа

Пример кода

Результат будет выглядеть вот так:

ПРимер группировки в таболичном документе

Для того, чтобы свернуть табличный документ можно вызывать метод ПоказатьУровеньГруппировокСтрок(<Уровень>)

Реклама — это техника запудривания мозгов. Старайтесь не забывать об этом: с рекламой шутки плохи.

— Фредерик Бегбедер

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

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

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

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

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

Пример:

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

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


  • Доступно выбор группировочного поля
  • Типа итогов (Элементы, Элементы и иерархия, Только иерархия)
  • Указания наличия/отсутствия общего итога по всей выборке
  • Выбор итоговых полей и выражений аналогичных по синтаксису группировке

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

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

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

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

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

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

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

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


  • Осталось удалить лишние колонки и можно сразу выводить на форму

Реклама — это когда изо всех сил колотят палкой по днищу пустой кастрюли.

— Джордж Оруэлл

Запрос, Общие Итоги, Не Понимаю Как Считаются
Добрый день! Раньше я думал что знаю, что такое итоги. Думал, что Итоги это то же самое, что.


Итоги для запроса
Как включить для определенного запроса по-умолчанию показ итогов по некоторым колонкам?


Изменение цвета столбца "Общие итоги" в сводной таблице и условное форматирование
Приветствую! Нужна помощь! Есть задача реализовать вывод статистических данных из БД, создал.

Ошибка в выборке из запроса
Добрый день! Есть запрос, который должен получать данные из другого запроса: SELECT * FROM.

Если конструктором делал, то там есть параметры. Отображать итоги, нужно убрать галочку с "Показывать в шапке". В свойствах табличного поля установить свойство "Подвал", затем в колонке с Итогами поставить свойство "Поставить итог в подвале"
Это для отображения на форме.
А если делать в макете, то нужно установить параметр для ячейки, получить область с эти параметром и установить параметру значение Итог для поля.
Если нужно конкретно, пишите, помогу. Просто я не совсем вопрос понял. Все не много не то..общие итоги я задаю в запросе, то есть при выводе данных в макет он автоматически рисует сумму..Ну уже ладно, я разобрался сам. Если кому интересно, надо было сделать так.

Dethmontt, Зачем так извращаться. Ведь есть свойство "Итог" для поля

Всё смешалось!
1. 8.2
2. Это не форма, а ТабДок.
3. Тип выборки (!) при использовании опции ИТОГИ ПО.
Итоги становятся доступны в случае выборки-дерева. В тексте "плоская" выборка.
Читайте классику:
РезультатЗапроса.Выбрать
Синтаксис:
Выбрать(<ТипОбхода>, <Группировки>, <ГруппировкиДляЗначенийГруппировок>)
<ТипОбхода> (необязательный), Тип: ОбходРезультатаЗапроса.
Задает тип обхода записей в получаемой выборке.
Значение по умолчанию: Прямой

<Группировки> (необязательный)
Тип: Строка.
Список группировок по которым будет вестись обход, разделенных запятыми.
Для детальных записей указывается пустая строка. В случае, если группировки не указаны - будет использоваться следующая группировка, указанная в предложении запроса "ИТОГИ".

<ГруппировкиДляЗначенийГруппировок> (необязательный)
Тип: Строка.
Список группировок, из которых будут выбираться значения группировок для обхода, разделенных запятыми. Если указано "Все", то будут выбираться все значения группировок. Если указана пустая строка, то значения для группировок будут выбираться из предыдущей группировки.

Возвращаемое значение:ВыборкаИзРезультатаЗапроса.

ОбходРезультатаЗапроса Значения
ПоГруппировкам
ПоГруппировкамСИерархией
Прямой

ВыборкаИзРезультатаЗапроса (QueryResultSelection)
Элементы коллекции:
Произвольный
Возможно обращение к полям выборки посредством оператора [. ]. В качестве аргумента передается индекс (нумерация с 0) или имя поля выборки.
Свойства:
<Имя поля> (<Field name>)
Методы:
Владелец (Owner)
Выбрать (Choose)
Группировка (Group)
Количество (Count)
НайтиСледующий (FindNext)
Получить (Get)
Сбросить (Reset)
Следующий (Next)
СледующийПоЗначениюПоля (NextByFieldValue)
ТипЗаписи (RecordType)
Уровень (Level)

Описание:
Объект этого типа возвращается методом Выбрать у объекта типа РезультатЗапроса и представляет собой специализированный способ перебора записей запроса.

Проблемы с работой формы и запроса по выборке
Есть форма, в которой распологаются несколько полей для ввода данных. Далее нажимая кнопку.

Порядок следования данных в выборке из запроса
Всем доброго времени суток. Задача: Есть некий документ с параметрами(штрихкоды),значения из.

Бухгалтерские итоги, валютные суммы, Получить итоги в валюте
Акт сверки. Нужно выводить данные в валюте. СписокВыбранныхСчетов = 60, 62, 66, 67, 75, 76, 79.


Как рассчитать средние общие издержки, общие издержки, доход, прибыл предприятия?
Фирма производит 10 единиц продукции. Средние постоянные издержки равны 25 у. е., средние.


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

Читайте также: