Описание встроенного языка системы 1С Предприятие

       

Выполнить


Выполнить запрос.

Синтаксис:

Выполнить(<ТекстЗапроса>)

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

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);

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

КонецПроцедуры


Содержание раздела