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