Собрать запрос только к двум учебным параметрам

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

Конструктор принимает текст; Параметры — структура; Выполнить заполняет свойство Результат, а не возвращает таблицу.

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

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

Подготовка

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

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

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

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

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

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

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

  1. В тексте отсутствует ИЗ: запрос выбирает значения параметров и не читает таблицы базы.

  2. Имя Название в структуре соответствует &Название, а псевдоним результирующего поля — Наименование.

  3. ЗаполнитьНастройки разбирает текст. Затем Выполнить и чтение Результат дают результат запроса.

  4. Вставить с тем же ключом заменяет параметр. Для следующего результата снова вызываем Выполнить.

  5. Ранее выгруженная таблица Строки остаётся самостоятельным снимком с количеством 3.

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

  1. Семь булевых проверок Истина. Первый результат: Учебная книга / 3; второй: Учебная книга / 4.

  2. Исходный снимок не меняется вместе с параметрами построителя.

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

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

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

  1. У ПостроительЗапроса нет УстановитьПараметр: используйте его структуру Параметры.

  2. Не присваивайте Результат: это свойство только для чтения.

  3. Не пишите Результат = Построитель.Выполнить(): документированное место результата — свойство.

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

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

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

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

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