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

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

Пример:

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

// сформируем данные на начало месяца

ЖР = СоздатьОбъект("ЖурналРасчетов.Зарплата");

_Дата = ЖР.НачалоТекущегоПериода();

// Создание объектов типа "Запрос"

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

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

флаг1 = Запрос.Выполнить(

"//({ЗАПРОС(Двойной)

|Период с _Дата по _Дата;

|Оклад = Справочник.Сотрудники.Оклад;

|Пдр = Справочник.Сотрудники.МестоРаботы.Владелец;

|Ктг = Справочник.Сотрудники.Категория;

|Условие((Ктг.Выбран() = 1) И (Пдр.Выбран() = 1));

|Группировка Пдр без групп;

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

|Функция Всего = Сумма(Оклад);

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

);

Флаг2 = ЗапросКат.Выполнить(

"//{{ЗАПРОС(Одинарный)

|Период с _Дата по _Дата;

|Оклад = Справочник.Сотрудники.Оклад;

|Ктг = Справочник.Сотрудники.Категория;

|Условие(Ктг.Выбран() = 1);

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

|Функция Всего = Сумма(Оклад);

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

);

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

Если ((Флаг1 = 0) ИЛИ (Флаг2 = 0)) Тогда

Сообщить("Ошибка в запросе!");

Возврат;

КонецЕсли;

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

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

// Выводим заглавие таблицы

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

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

Таб.ПрисоединитьСекцию("Документ<|Осн2");

КонецЦикла;

Таб.ПрисоединитьСекцию("Документ<|ДокументВерт>");

// Выводим колонтитул таблицы

Таб.ВывестиСекцию("КолонТитул|ДокументВерт<");

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

Таб.ПрисоединитьСекцию("КолонТитул|Осн2");

КонецЦикла;

Таб.ПрисоединитьСекцию("КолонТитул|ДокументВерт>");

Продолжать = 1;

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

// Заполнение полей

Пдр Таб.ВывестиСекцию("Осн1|ДокументВерт<");

Далее = 1;

Пока Продолжать = 1 Цикл

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

СлКат = ЗапросКат.Группировка("Ктг");

Если Далее = 1 Тогда

ОК = Запрос.Группировка("Ктг");

КонецЕсли;

Если СлКат = 0 Тогда

Прервать;

КонецЕсли;

Если ЗапросКат.Ктг = Запрос.Ктг Тогда

Таб.ПрисоединитьСекцию("Осн1|Осн2");

Далее = 1;

Иначе

Таб.ПрисоединитьСекцию("Осн1|Пусто");

Далее = 0;

КонецЕсли;

КонецЦикла;

Таб.ПрисоединитьСекцию("Осн1|ДокументВерт>");

КонецЦикла;

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

Таб.ВывестиСекцию("Документ>|ДокументВерт<");

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

Таб.ПрисоединитьСекцию("Документ>|Осн2");

КонецЦикла;

Таб.ПрисоединитьСекцию("Документ>|ДокументВерт>");

// Вывод заполненной формы Таб.Опции(0, 0, 0, 0);

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

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

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