Как установить параметры запроса и вывести результаты в сообщение?
Установка параметров запроса и вывод результатов в сообщение — одна из базовых задач при работе с языком запросов в 1С. Она позволяет гибко управлять выборкой данных из базы и выводить эти данные для анализа, отладки или отображения пользователю. Ниже подробно описаны все шаги: от создания запроса до вывода результата.
1. Создание объекта запроса
Запрос = Новый Запрос;
Создаётся новый объект типа Запрос, через который выполняется обращение к данным. Объект запроса может быть локальным или глобальным, в зависимости от контекста использования (внешняя обработка, форма, общий модуль и т.д.).
2. Задание текста запроса
Запрос.Текст =
"ВЫБРАТЬ
Контрагенты.Ссылка КАК Ссылка,
Контрагенты.Наименование КАК Наименование
ИЗ
Справочник.Контрагенты КАК Контрагенты
ГДЕ
Контрагенты.Наименование ПОДОБНО &Имя";
Здесь используется параметр &Имя, который будет передан в запрос позднее. В тексте запроса параметры обозначаются через амперсанд (&), чтобы 1С понимала, где использовать внешние значения.
3. Установка параметров
Запрос.УстановитьПараметр("Имя", "%ООО%");
Метод УстановитьПараметр передаёт значение параметру, определённому в запросе (&Имя). В этом примере ищутся все контрагенты, в названии которых есть "ООО". Используется оператор ПОДОБНО, поддерживающий подстановочные знаки (%).
Можно передать и другие типы значений: дату, число, ссылку и т.д.:
Запрос.УстановитьПараметр("Дата", ТекущаяДата());
Запрос.УстановитьПараметр("СсылкаДок", ДокументСсылка);
4. Выполнение запроса
Результат = Запрос.Выполнить();
Метод Выполнить() возвращает объект РезультатЗапроса, содержащий выборку строк, соответствующих условиям.
5. Получение выборки
Выборка = Результат.Выбрать();
Теперь можно обойти результат запроса построчно. Выборка — это итератор, возвращающий записи по очереди. В каждой записи можно обратиться к полям, которые были указаны в ВЫБРАТЬ.
6. Обход выборки и формирование текста сообщения
Сообщение = "";
Пока Выборка.Следующий() Цикл
Сообщение = Сообщение + Выборка.Наименование + " (" + Строка(Выборка.Ссылка) + ")" + Символы.ПС;
КонецЦикла;
Создаётся строка Сообщение, куда добавляются строки из результата запроса. В примере добавляются наименования контрагентов и их ссылки. Символы.ПС — перевод строки.
7. Вывод сообщения
Сообщить(Сообщение);
Команда Сообщить() выводит текст в окно сообщений 1С:Предприятие. Она особенно полезна при отладке или простом выводе информации пользователю.
Пример целиком
Процедура ВыполнитьЗапрос()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
Контрагенты.Ссылка КАК Ссылка,
Контрагенты.Наименование КАК Наименование
ИЗ
Справочник.Контрагенты КАК Контрагенты
ГДЕ
Контрагенты.Наименование ПОДОБНО &Имя";
Запрос.УстановитьПараметр("Имя", "%Торг%");
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Сообщение = "";
Пока Выборка.Следующий() Цикл
Сообщение = Сообщение + Выборка.Наименование + " — " + Строка(Выборка.Ссылка) + Символы.ПС;
КонецЦикла;
Если ПустаяСтрока(Сообщение) Тогда
Сообщить("Ничего не найдено.");
Иначе
Сообщить(Сообщение);
КонецЕсли;
КонецПроцедуры
Поддержка разных типов параметров
1С автоматически приводит параметры к нужным типам в большинстве случаев, но можно указать тип явно, например:
Параметр = Новый Структура;
Параметр.Вставить("Имя", ЗначениеПеременной);
Запрос.УстановитьПараметры(Параметр);
Параметры с множественным выбором
В некоторых случаях можно передавать массивы или списки в &Параметр В (... список ...):
СписокКонтрагентов = Новый Массив;
СписокКонтрагентов.Добавить(Справочники.Контрагенты.НайтиПоКоду("001"));
СписокКонтрагентов.Добавить(Справочники.Контрагенты.НайтиПоКоду("002"));
Запрос.Текст =
"ВЫБРАТЬ
Контрагенты.Наименование
ИЗ
Справочник.Контрагенты КАК Контрагенты
ГДЕ
Контрагенты.Ссылка В (&Список)";
Запрос.УстановитьПараметр("Список", СписокКонтрагентов);
Этот механизм параметров позволяет эффективно и безопасно работать с данными, не прибегая к конкатенации SQL-строк, и уменьшает риск SQL-инъекций и других ошибок при формировании запросов.