Обработка результата запроса
Напомним общую схему выполнения запроса:
1. Создание объекта Запрос и передача ему текста запроса.
2. Установка параметров запроса с помощью метода УстановитьПараметр.
3. Выполнение запроса, получение результата запроса.
4. Получение выборки из результата запроса или выгрузка результата запроса в таблицу значений / дерево значений. Также есть возможность использовать результат запроса в качестве источника данных для сводной таблицы.
5. Обход выборки из результата запроса или обработка таблицы значений/дерева значений.
Ниже приведен пример выполнения простого запроса и получения выборки из результата запроса:
Запрос = Новый Запрос;
ТекстЗапроса = "ВЫБРАТЬ * ИЗ Справочник.Сотрудники";
Запрос.Текст = ТекстЗапроса;
РезультатЗапроса = Запрос.Выполнить();
ВыборкаИзРезультатаЗапроса = РезультатЗапроса.Выбрать();
Тот же самый фрагмент можно записать короче. В приведенном ниже примере используется конструктор объекта Запрос с параметром, через который передается текст запроса. Далее запрос выполняется, и сразу же производится выборка из результата запроса:
Запрос = Новый Запрос("ВЫБРАТЬ * ИЗ Справочник.Сотрудники");
ВыборкаИзРезультатаЗапроса = Запрос.Выполнить().Выбрать();
Перед получением выборки можно проверить результат запроса на наличие хотя бы одной записи. Для этого предназначен метод Пустой:
Запрос = Новый Запрос("ВЫБРАТЬ * ИЗ Справочник.Сотрудники");
Результат = Запрос.Выполнить();
Если НЕ Результат.Пустой() Тогда
ВыборкаИзРезультатаЗапроса = Результат.Выбрать();
КонецЕсли;
В некоторых случаях до получения выборки необходимо определить, какие сведения содержатся в результате. Для решения этой задачи у объекта РезультатЗапроса есть свойство Колонки, через которое можно обратиться к коллекции колонок результата запроса. Например, выведем имена всех колонок результата запроса с указанием их типа и ширины:
Запрос = Новый Запрос("ВЫБРАТЬ * ИЗ Справочник.Сотрудники");
Результат = Запрос.Выполнить();
Для Каждого Колонка ИЗ Результат.Колонки Цикл
Сообщить("Колонка: " + Колонка.Имя + " типа " + Колонка.Тип +
" имеет ширину " + Колонка.Ширина);
КонецЦикла;