Запрос.Параметры

Свойства · Parameters

Тип: Структура. Содержит значения параметров, установленных запросу.

Полное описание, параметры и ограничения

Запрос.Параметры (Query.Parameters)

Запрос (Query)

Параметры (Parameters)

Доступен, начиная с версии 8.1.

Использование:
Только чтение.
Описание:
Тип: Структура.
Содержит значения параметров, установленных запросу.
Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.

Использование в версии:

Доступен, начиная с версии 8.1.

Методическая информация

Практические примеры

Найти параметры запроса и проверить их перед выполнением

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

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

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

Подготовка

  1. Никакие справочники не нужны: запрос выбирает только значения параметров.

  2. Контракт объявлен явно: непустая строка Название и целое неотрицательное Количество.


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

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

  1. НайтиПараметры анализирует текст и возвращает структуру имён, а не готовые значения из бизнес-данных.

  2. Проверяем ожидаемые два ключа и ограничения конкретных значений отдельно от синтаксиса запроса.

  3. УстановитьПараметр передаёт типизированное значение без склейки текста. Параметры позволяет прочитать установленные значения.

  4. После Выполнить и Выбрать обязательно позиционируем выборку методом Следующий.

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

  1. Все сообщения дают Истина, запрос возвращает Книга и число 3.

  2. Измените &Количество в тексте на &Колво: проверка контракта останавливает выполнение.

  3. Количество = -1 отклоняется до выполнения запроса.

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

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

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

  1. НайтиПараметры не проверяет бизнес-правила и не подбирает значения автоматически.

  2. Имя таблицы или поля не следует пытаться передать обычным параметром значения. Здесь параметры находятся в выражениях.

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

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

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

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

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