Иллюстрированный самоучитель по языку системы 1С:Предприятие

Методы запросов

Группировка

Получить следующее значение выборки запроса на заданном уровне группировки.

Синтаксис:

Группировка(<Группировка>, <Направление>)

Англоязычный синоним:

Group

Параметры:

<Группировка> Выражение, содержащее порядковый номер или имя группировки.
<Направление> Необязательный параметр. Числовое выражение:
  • 1 – выборка значений группировки по возрастанию;
  • -1 (минус единица) – выборка значений группировки по убыванию.
Значение по умолчанию: 1.

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

Число: 1 – если получено следующее значение выборки запроса, 0 – если нет.

Описание:

Метод Группировка служит для организации цикла получения данных из выборки, сформированной в результате работы метода Выполнить. Метод Группировка позиционирует в выборке очередную строку в порядке, определенном параметром <Группировка>. Нельзя использовать метод Группировка, задавая в качестве параметра младшие группировки, не использовав предварительно этот метод для позиционирования по старшим группировкам. Старшинство группировок определяется порядком их следования в тексте запроса.

Замечание
Обход группировок по многоуровневым справочникам в порядке убывания не выполняется
.

Пример:

Процедура Сформировать()

Перем Запрос, ТекстЗапроса;

Если (Число(ДатаНач) = 0) ИЛИ (Число(ДатаКон) = 0) Тогда

Предупреждение("Не задан период!");

Возврат;

КонецЕсли;

//Создание объекта типа "Запрос" Запрос = СоздатьОбъект("Запрос");

ТекстЗапроса =

"//{{ЗАПРОС(Сформировать)

|с ДатаНач по ДатаКон;

|Рез = ЖурналРасчетов.Зарплата.Результат;

|Сотр = ЖурналРасчетов.Зарплата.Объект;

|Группировка Сотр без групп;

|Группировка ПериодЖурнала;

|Функция Сум = Сумма(Рез);

|"//}}ЗАПРОС

;

Если Сотрудник.Выбран() = 1 Тогда

ТекстЗапроса = ТекстЗапроса + "Условие(Сотр = Сотрудник);";

КонецЕсли;

// Если ошибка в запросе, то выход из процедуры

Если Запрос.Выполнить(ТекстЗапр) = 0 Тогда

Возврат;

КонецЕсли;

// Подготовка к заполнению выходных форм данными запроса

Таб = СоздатьОбъект("Таблица");

// сначала используем группировку по сотрудникам

// а потом группировку по периоду журнала!!!

Пока Запрос.Группировка("Сотр") = 1 Цикл

// Заполнение полей Сотр

Таб.ВывестиСекцию("Сотр<");

Пока Запрос.Группировка("ПериодЖурнала") = 1 Цикл

// Заполнение полей ПериодЖурнала

Таб.ВывестиСекцию("Мес");

КонецЦикла;

Таб.ВывестиСекцию("Сотр>");

КонецЦикла;

// Вывод заполненной формы

// Заполнение полей "Итого"

Таб.Опции(0, 0, 0, 0);

Таб.ТолькоПросмотр(1);

Таб.Показать("Результат", );

КонецПроцедуры
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.