Обработка результата запроса

Добавил admin | Обработка результата запроса | Понедельник 5 октября 2009 13:43

Напомним общую схему выполнения запроса:

1. Создание объекта Запрос и передача ему текста запроса.

2. Установка параметров запроса с помощью метода УстановитьПараметр.

3. Выполнение запроса, получение результата запроса.

4. Получение выборки из результата запроса или выгрузка результата запроса в таблицу значений / дерево значений. Также есть возможность использовать результат запроса в качестве источника данных для сводной таблицы.

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

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

Запрос = Новый Запрос;
ТекстЗапроса = "ВЫБРАТЬ * ИЗ Справочник.Сотрудники";
Запрос.Текст = ТекстЗапроса;
РезультатЗапроса = Запрос.Выполнить();
ВыборкаИзРезультатаЗапроса = РезультатЗапроса.Выбрать();
 

Тот же самый фрагмент можно записать короче. В приведенном ниже примере используется конструктор объекта Запрос с параметром, через который передается текст запроса. Далее запрос выполняется, и сразу же производится выборка из результата запроса:

Запрос = Новый Запрос("ВЫБРАТЬ * ИЗ Справочник.Сотрудники");
ВыборкаИзРезультатаЗапроса = Запрос.Выполнить().Выбрать();

 

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

Запрос = Новый Запрос("ВЫБРАТЬ * ИЗ Справочник.Сотрудники");
Результат = Запрос.Выполнить();
Если НЕ Результат.Пустой() Тогда
	ВыборкаИзРезультатаЗапроса = Результат.Выбрать();
КонецЕсли;

 

В некоторых случаях до получения выборки необходимо определить, какие сведения содержатся в результате. Для решения этой задачи у объекта РезультатЗапроса есть свойство Колонки, через которое можно обратиться к коллекции колонок результата запроса. Например, выведем имена всех колонок результата запроса с указанием их типа и ширины:

Запрос = Новый Запрос("ВЫБРАТЬ * ИЗ Справочник.Сотрудники");
Результат = Запрос.Выполнить();
Для Каждого Колонка ИЗ Результат.Колонки Цикл
	Сообщить("Колонка: " + Колонка.Имя + " типа " + Колонка.Тип +
	" имеет ширину " + Колонка.Ширина);
КонецЦикла;