Группировка
Получить следующее значение выборки запроса на заданном уровне группировки.
Синтаксис:
Группировка(<Группировка>, <Направление>)
Англоязычный синоним:
Group
Параметры:
<Группировка> |
Выражение, содержащее порядковый номер или имя группировки. |
<Направление> |
Необязательный параметр. Числовое выражение: 1 — выборка значений группировки по возрастанию; -1 (минус единица) — выборка значений группировки по убыванию. Значение по умолчанию: 1. |
Возвращаемое значение:
Число: 1 — если получено следующее значение выборки запроса, 0 — если нет.
Описание:
Метод Группировка служит для организации цикла получения данных из выборки, сформированной в результате работы метода Выполнить. Метод Группировка позиционирует в выборке очередную строку в порядке, определенном параметром <Группировка>. Нельзя использовать метод Группировка, задавая в качестве параметра младшие группировки, не использовав предварительно этот метод для позиционирования по старшим группировкам. Старшинство группировок определяется порядком их следования в тексте запроса.
Замечание: Обход группировок по многоуровневым справочникам в порядке убывания не выполняется.
Пример:
Процедура Сформировать()
Перем Запрос, ТекстЗапроса;
Если (Число(ДатаНач) = 0) ИЛИ (Число(ДатаКон) = 0) Тогда
Предупреждение("Не задан период!");
Возврат;
КонецЕсли;
//Создание объекта типа "Запрос" Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|с ДатаНач по ДатаКон;
|Рез = ЖурналРасчетов.Зарплата.Результат;
|Сотр = ЖурналРасчетов.Зарплата.Объект;
|Группировка Сотр без групп;
|Группировка ПериодЖурнала;
|Функция Сум = Сумма(Рез);
|"//}}ЗАПРОС
;
Если Сотрудник.Выбран() = 1 Тогда
ТекстЗапроса = ТекстЗапроса + "Условие(Сотр = Сотрудник);";
КонецЕсли;
// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапр) = 0 Тогда
Возврат;
КонецЕсли;
// Подготовка к заполнению выходных форм данными запроса
Таб = СоздатьОбъект("Таблица");
// сначала используем группировку по сотрудникам
// а потом группировку по периоду журнала!!!
Пока Запрос.Группировка("Сотр") = 1 Цикл
// Заполнение полей Сотр
Таб.ВывестиСекцию("Сотр<");
Пока Запрос.Группировка("ПериодЖурнала") = 1 Цикл
// Заполнение полей ПериодЖурнала
Таб.ВывестиСекцию("Мес");
КонецЦикла;
Таб.ВывестиСекцию("Сотр>");
КонецЦикла;
// Вывод заполненной формы
// Заполнение полей "Итого"
Таб.Опции(0, 0, 0, 0);
Таб.ТолькоПросмотр(1);
Таб.Показать("Результат", );
КонецПроцедуры