Выполняет запрос, построенный для отчета.
Синтаксис
Выполнить()Примеры платформы
ПостроительОтчета = Новый ПостроительОтчета;
ПостроительОтчета.Текст = ТекстЗапроса;
ПостроительОтчета.Выполнить();Полное описание, параметры и ограничения
ПостроительОтчета.Выполнить (ReportBuilder.Execute)
ПостроительОтчета (ReportBuilder)
Выполнить (Execute)
Доступен, начиная с версии 8.0.
Синтаксис:
Выполнить()
Описание:
Выполняет запрос, построенный для отчета.
Доступность:
Сервер, толстый клиент, внешнее соединение.
Примечание:
Выставляет внутренний флаг необходимости перевыполнения запроса при выводе отчета (метод Вывести) и получении результата запроса.
Пример:
ПостроительОтчета = Новый ПостроительОтчета;
ПостроительОтчета.Текст = ТекстЗапроса;
ПостроительОтчета.Выполнить();
Использование в версии:
Доступен, начиная с версии 8.0.
Методическая информация
Практические примеры
Управлять редактированием: Отбор
В своей обычной форме получаем НастройкаОтбора из настоящего типизированного табличного поля. Меняем разрешения, не удаляя сами данные.
Где и как запускать
Полный модуль новой обычной формы учебной внешней обработки, толстый клиент 8.5.1.1343.
Подготовка
Отдельная собственная конфигурация УчебнаяКонфигурацияСинтаксиса, платформа 8.5.1.1343, толстый клиент с обычными формами. Не управляемая форма и не мобильный клиент.
Создайте отдельную учебную внешнюю обработку и её обычную основную форму. В реквизитах формы добавьте УчебныеДанные с типом Отбор; это реквизит формы, не реквизит документа.
В редакторе формы добавьте ТабличноеПоле с именем ТаблицаНастроек. Свойство Данные свяжите с УчебныеДанные. Расширение определяется типом этих данных, а не ручным созданием класса расширения.
Добавьте обычную кнопку УчебнаяКоманда, назначьте действие УчебнаяКоманда. Событие формы ПриОткрытии свяжите с процедурой ПриОткрытии. Вставьте полный модуль на уровне формы.
Откройте форму и до нажатия кнопки проверьте доступность СвойПорог и СвояКатегория. Нажатие учебной кнопки показывает операции коллекции разрешений и затем очищает только эти разрешения.
Правила доступности интерфейса не являются правами на данные, RLS или запретом программного изменения. Код не записывает базу, не читает рабочие каталоги и не меняет чужие формы.
Это поле связано с Отбор собственного построителя, не с СправочникСписок или ДокументСписок. Для настройки отбора динамического списка Добавить недоступен; данный урок туда не переносить.
Перем ИсходноеКоличество;
Перем Построитель;
Процедура ПриОткрытии()
Данные = Новый ТаблицаЗначений;
Данные.Колонки.Добавить("Категория", Новый ОписаниеТипов("Строка"));
Данные.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка"));
Данные.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число"));
Данные.Колонки.Добавить("Цена", Новый ОписаниеТипов("Число"));
Данные.Колонки.Добавить("Сумма", Новый ОписаниеТипов("Число"));
Образцы = Новый Массив;
Образцы.Добавить(Новый Структура("Категория,Наименование,Количество,Цена", "Канцелярия", "Книга", 3, 250));
Образцы.Добавить(Новый Структура("Категория,Наименование,Количество,Цена", "Канцелярия", "Ручка", 1, 50));
Образцы.Добавить(Новый Структура("Категория,Наименование,Количество,Цена", "Упаковка", "Коробка", 2, 30));
Для Каждого Образец Из Образцы Цикл
СтрокаДанных = Данные.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаДанных, Образец);
СтрокаДанных.Сумма = СтрокаДанных.Количество * СтрокаДанных.Цена;
КонецЦикла;
Описание = Новый ОписаниеИсточникаДанных(Данные);
Для Каждого Колонка Из Описание.Колонки Цикл
Колонка.Поле = Истина;
Колонка.Отбор = Истина;
Колонка.Порядок = Истина;
Колонка.Измерение = Колонка.Имя = "Категория";
КонецЦикла;
Построитель = Новый ПостроительОтчета;
Построитель.ИсточникДанных = Описание;
Построитель.ЗаполнитьНастройки();
Построитель.ИзмеренияСтроки.Очистить();
Построитель.ИзмеренияКолонки.Очистить();
Построитель.ВыбранныеПоля.Очистить();
Построитель.ВыбранныеПоля.Добавить("Наименование", "Товар");
Построитель.ВыбранныеПоля.Добавить("Количество", "Количество");
Построитель.ВыбранныеПоля.Добавить("Сумма", "Сумма");
УчебныеДанные = Построитель.Отбор;
Порог = УчебныеДанные.Добавить("Количество", "СвойПорог", "Количество от двух");
Категория = УчебныеДанные.Добавить("Категория", "СвояКатегория", "Только канцелярия");
Если Порог = Неопределено Или Категория = Неопределено Тогда
ВызватьИсключение "Не созданы собственные условия отбора";
КонецЕсли;
Порог.ВидСравнения = ВидСравнения.БольшеИлиРавно;
Порог.Установить(2, Истина);
Категория.Установить("Канцелярия", Истина);
ИсходноеКоличество = 0;
Для Каждого СобственныйЭлемент Из УчебныеДанные Цикл
ИсходноеКоличество = ИсходноеКоличество + 1;
КонецЦикла;
Поле = ЭтаФорма.ЭлементыФормы.ТаблицаНастроек;
Управление = Поле.НастройкаОтбора;
Управление.Очистить();
Управление.Добавить("СвойПорог", Ложь);
Управление.Добавить("СвояКатегория", Истина);
Сообщить("До кнопки: СвойПорог недоступно для интерактивного изменения, СвояКатегория доступно");
КонецПроцедуры
Процедура УчебнаяКоманда(Кнопка)
Поле = ЭтаФорма.ЭлементыФормы.ТаблицаНастроек;
Управление = Поле.НастройкаОтбора;
Первое = Управление.Найти("СвойПорог");
Второе = Управление.Найти("СвояКатегория");
Если Первое = Неопределено Или Второе = Неопределено Тогда
ВызватьИсключение "Откройте свою форму заново: собственные разрешения уже очищены";
КонецЕсли;
Сообщить(Управление.Количество() = 2);
Сообщить(Первое.Имя = "СвойПорог");
Сообщить(НЕ Первое.Доступность);
Сообщить(Второе.Доступность);
Сообщить(Управление.Индекс(Второе) = 1);
Сообщить(Управление.Получить(0) = Первое);
Сообщить(Управление.Найти("НетТакойУчебнойНастройки") = Неопределено);
Первое.Доступность = Истина;
Сообщить(Первое.Доступность);
Управление.Удалить(Второе);
Сообщить(Управление.Количество() = 1);
Управление.Очистить();
Сообщить(Управление.Количество() = 0);
ТекущееКоличество = 0;
Для Каждого СобственныйЭлемент Из УчебныеДанные Цикл
ТекущееКоличество = ТекущееКоличество + 1;
КонецЦикла;
Сообщить(ТекущееКоличество = ИсходноеКоличество);
Сообщить("Очистили только коллекцию разрешений, собственные исходные настройки сохранились");
Построитель.Выполнить();
Результат = Построитель.Результат.Выгрузить();
Сообщить(Результат.Количество() = 1);
Сообщить(Результат[0].Наименование = "Книга");
Сообщить(Результат.Итог("Сумма") = 750);
КонецПроцедурыРазбор по шагам
Создать собственные данные нужного типа и связать их с обычным табличным полем через свойство Данные в редакторе формы.
Получить настоящий объект управления из расширения поля: у этого класса нет конструктора. Добавить своё запрещённое и разрешённое имя.
После ручной проверки интерфейса нажать кнопку. Найти свои элементы по именам, проверить позиции и включить доступность первого.
Удалить второй элемент разрешения, затем очистить только коллекцию разрешений. Сверить количество исходных настроек, а не принимать Очистить за удаление данных.
Повторный запуск требует заново открыть только свою форму: кнопка уже очистила созданные правила доступности.
Как проверить результат
Одиннадцать проверок коллекции разрешений и сохранения исходных настроек дают Истина.
До кнопки проверьте недоступность первого и доступность второго собственного элемента в реальном обычном поле. После кнопки ограничения очищены; исходные данные не удалены.
Ещё три проверки настоящего результата дают Истина: после очистки разрешений условия отбора остаются, результат содержит только Книгу на 750.
Ожидаемый результат
Полный подключённый к обычному редактору пример доступности с собственной типизированной формой и сохранением исходных настроек.
На что обратить внимание
Класс управления и класс исходных данных разные. У элемента управления Имя только читается, Доступность изменяется.
Свойство расширения поля только читается как ссылка на коллекцию. Не присваивайте Поле.НастройкаОтбора = Новый ... и не создавайте несуществующий конструктор.
Очистить разрешения не отключает существующий отбор и не удаляет исходные правила, области или параметры.
Статические проверки пособия подтверждают имена API и структуру кода, но не поведение конкретного редактора обычной формы: его проверяет пользователь в своей учебной базе.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Построить отчёт запросом только к собственным параметрам
Контраст с табличным источником: Текст запроса, структура Параметры, автозаполнение настроек, ПолучитьЗапрос и Результат.
Где и как запускать
Модуль новой управляемой формы учебной внешней обработки. Код содержит готовые процедуры с директивами; вставляйте на уровне модуля, не внутрь другого обработчика. Каждую задачу запускайте в отдельной копии формы.
Подготовка
Учебная внешняя обработка с пустой управляемой основной формой. Создайте команду УчебныйПример, кнопку команды и назначьте действие УчебныйПример.
Вставьте полный модуль урока: клиентский обработчик и серверную функцию. Каждый урок — отдельная копия модуля.
Откройте EPF в тонком клиенте Windows. Данные Книга/Ручка/Коробка создаются только в памяти; запрос урока с параметрами не читает таблицы базы.
ПостроительОтчета — существующий API для изучения/сопровождения старого кода. Это не СистемаКомпоновкиДанных и не рекомендация заменять ею современные отчёты.
&НаКлиенте
Процедура УчебныйПример(Команда)
ТабДок = СформироватьУчебныйОтчет();
ТабДок.ТолькоПросмотр = Истина;
ТабДок.Показать("Учебный ПостроительОтчета");
КонецПроцедуры
&НаСервере
Функция СформироватьУчебныйОтчет()
Построитель = Новый ПостроительОтчета;
Построитель.Текст = "ВЫБРАТЬ &Название КАК Наименование, &Количество КАК Количество";
Построитель.Параметры.Вставить("Название", "Учебная книга");
Построитель.Параметры.Вставить("Количество", 3);
Построитель.АвтоДетальныеЗаписи = Ложь;
Построитель.ВыводитьДетальныеЗаписи = Истина;
Построитель.ВыводитьЗаголовокОтчета = Истина;
Построитель.ВыводитьОбщиеИтоги = Ложь;
Построитель.ВыводитьПодвалОтчета = Ложь;
Построитель.ВыводитьПодвалТаблицы = Ложь;
Построитель.ВыводитьШапкуТаблицы = Истина;
Построитель.ОтображатьСостояние = Ложь;
Построитель.ОбрабатыватьПрерываниеПользователя = Истина;
Построитель.ТекстЗаголовка = "Учебный отчёт — вымышленные данные";
Построитель.ЗаполнитьНастройки();
Запрос = Построитель.ПолучитьЗапрос();
ПроверочныйРезультат = Запрос.Выполнить();
ПроверочныеСтроки = ПроверочныйРезультат.Выгрузить();
Сообщить(ПроверочныеСтроки.Количество() = 1);
Сообщить(ПроверочныеСтроки.Получить(0).Наименование = "Учебная книга");
Сообщить(ПроверочныеСтроки.Получить(0).Количество = 3);
Построитель.Выполнить();
Строки = Построитель.Результат.Выгрузить();
Сообщить(Строки.Количество() = 1);
Сообщить(Строки.Получить(0).Количество = 3);
ТабДок = Новый ТабличныйДокумент;
Построитель.Вывести(ТабДок);
Возврат ТабДок;
КонецФункции
Разбор по шагам
Запрос ВЫБРАТЬ использует два параметра и не имеет ИЗ: никакие таблицы информационной базы не читаются.
Параметры у построителя — Структура; заполняем их до получения/выполнения запроса.
ЗаполнитьНастройки применяется к Текст, в отличие от урока с ИсточникДанных.
ПолучитьЗапрос доступен, поскольку ИсточникДанных не установлен. Для проверки выполняем полученный Запрос.
Выполнить у построителя формирует его Результат; проверяем его независимо. Вывести затем формирует табличный документ.
Как проверить результат
Пять сравнений Истина: в обоих результатах одна строка Учебная книга с количеством 3.
В отчёте два собственных поля, никаких данных рабочего справочника.
Измените параметр количества на 4: оба результата и вывод поменяются; соответствующие контрольные сравнения также измените.
Ожидаемый результат
Разобраны запросный режим и два разных результата без зависимости от конфигурации базы.
На что обратить внимание
Параметры запроса — не подстановка произвольного SQL/BSL в текст.
ПолучитьЗапрос нельзя использовать при установленном ИсточникДанных.
Запрос выполняется дважды только для сравнения API в уроке; в рабочем решении не повторяйте тяжёлый запрос без причины.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.