Получить обычный Запрос и выполнить его отдельно

Учебные задачи

ПолучитьЗапрос применим только в запросном режиме, без установленного ИсточникДанных.

Где и как запускать

Полный серверный общий модуль собственной учебной базы.

Подготовка

  1. Создайте собственный общий модуль УчебныйПостроительЗапроса в учебной базе 8.5.1.1343. Установите флаг Сервер. Каждый урок — отдельный полный текст модуля с процедурой ВыполнитьПример() Экспорт.

  2. Из серверного обработчика команды своей учебной обработки вызовите УчебныйПостроительЗапроса.ВыполнитьПример(). Не переносите серверные таблицы значений в тонкий клиент.

  3. Данные Книга/Ручка/Коробка создаются самим уроком в памяти. Нет чтения справочников, документов, регистров, внешних сервисов или записи информационной базы.

  4. ПостроительЗапроса — отдельный старый API, не объект Запрос и не конструктор запросов. У него нет Вывести и оформительских свойств ПостроительОтчета.

  5. Проверки рассчитаны на исходные вымышленные значения. После изменения образцов пересчитайте контрольные суммы и количества строк.

Процедура ВыполнитьПример() Экспорт
    Построитель = Новый ПостроительЗапроса("ВЫБРАТЬ &Название КАК Наименование, &Количество КАК Количество");
    Построитель.ДобавлениеПредставлений = ТипДобавленияПредставлений.НеДобавлять;
    Построитель.Параметры.Вставить("Название", "Учебная книга");
    Построитель.Параметры.Вставить("Количество", 3);
    Построитель.ЗаполнитьНастройки();
    Сообщить(СтрДлина(Построитель.Текст) > 0);
    Запрос = Построитель.ПолучитьЗапрос();
    Сообщить(ТипЗнч(Запрос) = Тип("Запрос"));
    Запрос.УстановитьПараметр("Количество", 9);
    ОтдельныйРезультат = Запрос.Выполнить();
    ОтдельныеСтроки = ОтдельныйРезультат.Выгрузить();
    Сообщить(ОтдельныеСтроки.Количество() = 1);
    Сообщить(ОтдельныеСтроки.Получить(0).Количество = 9);
    Сообщить(ОтдельныеСтроки.Получить(0).Наименование = "Учебная книга");
    Сообщить(Построитель.Параметры.Количество = 3);
    Построитель.Выполнить();
    СтрокиПостроителя = Построитель.Результат.Выгрузить();
    Сообщить(СтрокиПостроителя.Получить(0).Количество = 3);
КонецПроцедуры

Разбор по шагам

  1. Построитель создаётся из текста, без ОписаниеИсточникаДанных: здесь ПолучитьЗапрос разрешён.

  2. После получения Запрос работаем с его собственным методом УстановитьПараметр.

  3. Меняем число только у полученного запроса; явно проверяем исходные параметры построителя.

  4. Два выполнения нужны для обучения и сравнения отдельных объектов, а не для ускорения.

Как проверить результат

  1. Семь булевых проверок Истина. У Запрос — количество 9, у исходного построителя — 3.

  2. Название остаётся Учебная книга; изменение числа не изменяет второй параметр.

Ожидаемый результат

Показано различие двух API и самостоятельная настройка полученного запроса.

На что обратить внимание

  1. Не вызывайте ПолучитьЗапрос после установки ИсточникДанных: этот режим явно исключён справкой.

  2. ПолучитьЗапрос не является выполнением запроса; выполнение вызывается отдельно.

  3. Не переносите двукратное выполнение тяжёлого рабочего запроса без необходимости.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.