Методы запросов
Пример:
Процедура Сформировать() // сформируем данные на начало месяца ЖР = СоздатьОбъект("ЖурналРасчетов.Зарплата"); _Дата = ЖР.НачалоТекущегоПериода(); // Создание объектов типа "Запрос" Запрос = СоздатьОбъект("Запрос"); ЗапросКат = СоздатьОбъект("Запрос"); флаг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); Таб.Показать("Результат", ); КонецПроцедуры