Выполнить
Выполнить запрос.
Синтаксис:
Выполнить(<ТекстЗапроса>)
Англоязычный синоним:
Execute
Параметры:
<ТекстЗапроса> |
Строковое выражение, содержащее текст запроса на языке запросов (см. Главу «Язык запросов»). |
Возвращаемое значение:
Число: 1 — если запрос выполнен успешно, 0 — если зафиксирована ошибка при выполнении запроса (синтаксическая или времени выполнения).
Описание:
Метод Выполнить анализирует описание запроса, содержащееся в тексте запроса <ТекстЗапроса>, выполняет выборку данных, формирует временный выходной набор данных (выборку), вычисляет значения функций запроса (см. главу «Язык запросов»).
Язык запросов предназначен для описания запросов к базе данных. Написанный на языке запросов текст описания передается методу Выполнить в качестве параметра. Метод Выполнить непосредственно выполняет запрос, о результате его выполнения формируется временный выходной набор данных, который в дальнейшем используется для заполнения формы отчета.
Пример:
Процедура Сформировать()
// сформируем данные на начало месяца
ЖР = СоздатьОбъект("ЖурналРасчетов.Зарплата");
_Дата = ЖР.НачалоТекущегоПериода();
// Создание объектов типа "Запрос"
Запрос = СоздатьОбъект("Запрос");
ЗапросКат = СоздатьОбъект("Запрос");
флаг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);
Таб.Показать("Результат", );
КонецПроцедуры