Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЦОО_ИСБУ_Лек3.doc
Скачиваний:
5
Добавлен:
01.07.2025
Размер:
683.52 Кб
Скачать

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

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

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

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

УстановитьПараметр.

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

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

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

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

Запрос = Новый Запрос;

ТекстЗапроса = "ВЫБРАТЬ * ИЗ Справочник.Сотрудники";

Запрос.Текст = ТекстЗапроса;

РезультатЗапроса = 3апрос.Выполнить ();

ВыборкаИзРезультатаЗапроса = РезультатЗапроса.Выбрать();

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

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

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

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

Результат = 3апрос.Выполнить();

Если НЕ Результат.Пустой() Тогда

ВыборкаИзРезультатаЗапроса = Результат.Выбрать();

КонецЕсли;

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

Например, выведем имена всех колонок результата запроса с ука­занием их типа и ширины:

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

Результат = Запрос.Выполнить();

Для каждого Колонка ИЗ Результат.Колонки Цикл

Сообщить("Колонка: " + Колонка.Имя + " типа " + Колонка.Тип +

" имеет ширину " + Колонка.Ширина);

КонецЦикла;

8.5. Выборка из результата запроса

Выборка из результата запроса предназначена для обхода его за­писей. Можно представить себе выборку как некоторый объект, который содержит указатель на текущую запись в результате за­проса и предоставляет программе доступ ко всем полям текущей записи. Обход выборки может быть линейный, иерархический или по группировкам.

Возьмем результат простого запроса и продемонстрируем на его примере все варианты обхода выборки:

ВЫБРАТЬ Номенклатура, Количество

ИЗ Документ.РасходнаяНакладная.Состав

УПОРЯДОЧИТЬ ПО Номенклатура

ИТОГИ СУММА(Количество) ПО Номенклатура,Номенклатура Иерархия

Результат запроса показан в следующей таблице:

Номенклатура

Количество

1

Сантехника

104

2

Кран

84

3

Кран

10

4

Кран

8

5

Кран

44

6

Кран

22

7

Смеситель

20

8

Смеситель

5

9

Смеситель

1

10

Смеситель

14

11

Мебель

134

12

Стол

26

13

Стол

1

14

Стол

15

15

Стол

10

16

Стул

108

17

Стул

55

18

Стул

5

19

Стул

32

20

Стул

16

В этой таблице добавлен столбец №1, которого нет в результате запроса, но который будет использоваться нами в дальнейшем для идентификации записи в результате. Итоговые записи для уровней иерархии справочника выделены жирным шрифтом.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]