Получает имя группировки текущей записи выборки.
Синтаксис
Группировка()Примеры платформы
ТекГруппировка = Выборка.Группировка();Полное описание, параметры и ограничения
ВыборкаИзРезультатаЗапроса.Группировка (QueryResultSelection.Group)
ВыборкаИзРезультатаЗапроса (QueryResultSelection)
Группировка (Group)
Доступен, начиная с версии 8.0.
Синтаксис:
Группировка()
Возвращаемое значение:
Тип: Строка.
Имя группировки текущей записи. Если группировки нет, возвращается пустая строка.
Описание:
Получает имя группировки текущей записи выборки.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
Пример:
ТекГруппировка = Выборка.Группировка();
Использование в версии:
Доступен, начиная с версии 8.0.
Методическая информация
Практические примеры
Обойти групповые итоги и детальные записи без двойного подсчёта
Итог Книга=5 и строка Книга=3 — разные уровни результата. Складывать одновременно все уровни нельзя.
Где и как запускать
В учебной базе создайте серверный общий модуль УчебныеЗадачи. Вставьте приведённые функции и процедуру целиком в модуль, не внутрь другой процедуры. Вызовите УчебныеЗадачи.ВыполнитьПример() из серверного обработчика команды учебной обработки. Каждый урок запускайте отдельно, без дублирования одноимённых процедур.
Подготовка
Разместите полную процедуру на уровне серверного общего модуля; не вставляйте её в другую процедуру.
Три записи заданы в тексте. Справочники, иерархия товаров и база продаж не требуются.
Процедура ВыполнитьПример() Экспорт
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ""Книга"" КАК Название, 3 КАК Количество
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ ""Книга"", 2
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ ""Ручка"", 1
|ИТОГИ СУММА(Количество) ПО Название";
Результат = Запрос.Выполнить();
Группы = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Название");
СуммаГрупп = 0;
КоличествоДетальныхСтрок = 0;
Пока Группы.Следующий() Цикл
Если Группы.ТипЗаписи() <> ТипЗаписиЗапроса.ИтогПоГруппировке Тогда
ВызватьИсключение "Ожидался итог по Название";
КонецЕсли;
Сообщить(Группы.Группировка() = "Название");
Сообщить("Уровень группировки: " + Строка(Группы.Уровень()));
СуммаГрупп = СуммаГрупп + Группы.Количество;
Детали = Группы.Выбрать(ОбходРезультатаЗапроса.Прямой);
СуммаДеталейГруппы = 0;
Пока Детали.Следующий() Цикл
Сообщить(Детали.ТипЗаписи() = ТипЗаписиЗапроса.ДетальнаяЗапись);
СуммаДеталейГруппы = СуммаДеталейГруппы + Детали.Количество;
КоличествоДетальныхСтрок = КоличествоДетальныхСтрок + 1;
КонецЦикла;
Сообщить(СуммаДеталейГруппы = Группы.Количество);
Сообщить(СтрШаблон("%1: итог %2", Группы.Название, Группы.Количество));
КонецЦикла;
Сообщить(СуммаГрупп = 6);
Сообщить(КоличествоДетальныхСтрок = 3);
Дерево = Результат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);
Сообщить(ТипЗнч(Дерево) = Тип("ДеревоЗначений"));
КонецПроцедурыРазбор по шагам
ИТОГИ не сворачивает исходные строки как СГРУППИРОВАТЬ ПО: результат содержит уровни итогов и детали.
Выборка ПоГруппировкам получает две группы Название. ТипЗаписи, Группировка и Уровень объясняют вид текущей записи.
Из каждой группы создаём вложенную Прямую выборку только её деталей и сверяем сумму с итогом.
В общей сумме учитываем только групповые итоги: 5+1=6. Детали отдельно считаем как три строки.
Выгрузить с обходом ПоГруппировкам возвращает ДеревоЗначений, а Прямой обход возвращает ТаблицаЗначений.
Как проверить результат
Итоги по названиям: Книга=5 и Ручка=1; общий контроль 6 и три детальные строки.
Для каждой группы сумма её деталей совпадает с групповой Количество.
Выгрузка групп имеет тип ДеревоЗначений; сообщения о уровне используются для наблюдения, не как жёстко заданный номер.
Ожидаемый результат
Получен и проверен двухуровневый результат с группировками и детальными строками.
На что обратить внимание
Нельзя суммировать в один показатель детали и их итоги — это двойной учёт.
Это группировка по значению, не обход иерархического справочника.
Порядок групп не обещан: для отображения задавайте сортировку отдельно.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.