Файл: Хрусталева Е. Ю. Язык запросов 1С-Предприятия 8 (2013).pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 12.03.2019

Просмотров: 51804

Скачиваний: 8725

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

Рис. 2.26. Окно конструктора запроса

Обратите внимание, что нужно указать также тип значения полей временной таблицы.
Например, в нашей таблице поля Товар и Поставщик имеют тип ссылки на справочник.
Тогда при выборе полей из временной таблицы мы можем выбирать также поля исходной
таблицы, на которую ссылается это ссылочное поле, например,
ПоступлениеТоваров.Товар.Наименование.

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

Сформируем исходные данные для второго запроса. Перенесем справочник Товары в
список источников запроса и выберем из этой таблицы поля Наименование и
Производитель. Из временной таблицы ПоступлениеТоваров выберем поля Дата и
Поставщик (рис. 2.27).


background image

Рис. 2.27. Окно конструктора запроса

Поскольку в списке источников запроса содержатся две таблицы, свяжем левым
соединением таблицу Товары с временной таблицей ПоступлениеТоваров (рис. 2.28).

Рис. 2.28. Окно конструктора запроса

подробнее

Раздел «

Связи источников запроса

».

В заключение на закладке Порядок зададим упорядочивание записей результата запроса
по наименованиям товаров в порядке иерархии (рис. 2.29).


background image

Рис. 2.29. Окно конструктора запроса

Поскольку при описании временной таблицы ПоступлениеТоваров мы задали тип
значения ее полей, то мы могли бы выбрать все нужные для второго запроса поля из этой
таблицы, не используя таблицу Товары (рис. 2.30).

Рис. 2.30. Окно конструктора запроса

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

Нажмем ОК и вернемся в модуль формы. Запрос, сформированный с помощью
конструктора запроса, будет выглядеть следующим образом (листинг 2.9).

Листинг 2.9. Запрос, созданный конструктором


background image

В результате мы получили текст пакетного запроса, аналогичный тому, который мы писали
вручную (см. листинг 2.8).

Выполнение запросов из встроенного языка

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

В разделе «

Общая схема выполнения запросов

» мы рассматривали в самом простейшем

виде схему выполнения запроса. Теперь рассмотрим ее более подробно. Выполнение
запроса во встроенном языке состоит из следующих этапов:

Создание объекта Запрос с нужным текстом запроса на языке запросов.
Установка параметров запроса с помощью метода УстановитьПараметр.
Выполнение запроса.

Затем либо:

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

Либо:

1.  Выгрузка результата в таблицу значений или дерево значений.


background image

2.  Обработка данных таблицы/дерева значений (например, перебор строк).

Графически это можно представить следующим образом (рис. 2.31):

Рис. 2.31. Схема выполнения запроса

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

Запрос,
РезультатЗапроса,
ВыборкаИзРезультатаЗапроса.

Важно помнить, что вся работа с запросами выполняется только на сервере.

Создание запроса

Прежде всего, во встроенном языке нужно создать объект Запрос. Затем, используя
свойство Текст объекта Запрос, нужно поместить в него текст запроса, написанный на
языке запросов. В тексте запроса описывается, какие данные, из каких таблиц нужно
получить и как эти данные представить. Например, в следующем фрагменте кода
создается программный объект Запрос, в тексте которого описывается, что нужно
извлечь значения полей НаименованиеАдрес и Телефон для всех записей справочника
Клиенты (листинг 2.10).

Листинг 2.10. Пример запроса, созданного во встроенном языке