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

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

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

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

Добавлен: 12.03.2019

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

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

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

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

Нажмем кнопку Запрос и посмотрим, как изменился текст запроса (рис. 2.7).

Рис. 2.7. Текст запроса, созданный конструктором

Мы видим, что к тексту запроса конструктор добавляет предложение УПОРЯДОЧИТЬ
ПО
. Кроме того, конструктор автоматически добавляет псевдоним для поля, по которому
производится упорядочивание (Наименование).

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

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


background image

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

Итак, с помощью конструктора запроса мы получили текст запроса, аналогичный тому,
который мы писали вручную (см. листинг 2.2). Далее текст запроса, полученный при
нажатии кнопки Запрос (см. рис. 2.7), можно скопировать в окно консоли запросов и
выполнить. Или же полученный фрагмент кода (см. листинг 2.3), содержащий текст
запроса, можно использовать для выполнения и обработки результатов запроса из
встроенного языка.

подробнее

Раздел «

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

».

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

Как получить записи иерархической таблицы, не являющиеся

группой

» (листинг 2.4).

Листинг 2.4. Вывод записей справочника «Товары», не являющихся группой

Чтобы получить подобный запрос, изменим текст запроса, ранее созданный
конструктором (см. листинг 2.3). Отредактируем полученный запрос в конструкторе. Мы
видим, что закладки конструктора Таблицы и поляОбъединения/Псевдонимы и Порядок
уже заполнены так, как мы это задавали ранее (см. рис. 2.2, 2.4, 2.6).

Чтобы задать условие отбора записей из таблицы, перейдем на закладку конструктора


background image

Условия и перетащим в список условий поле ЭтоГруппа из таблицы Товары. Платформа
автоматически создаст параметризированное условие с этим полем, но в данном случае
нам это не нужно. Поэтому зададим произвольное условие отбора (Товары.ЭтоГруппа =
ЛОЖЬ
), установив флажок Произвольное (рис. 2.8).

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

Перейдем на закладку конструктора запроса Порядок и удалим установленное ранее
упорядочивание записей результата запроса (с помощью кнопки <), так как в данном
случае оно не нужно.

Нажмем кнопку Запрос и посмотрим, как изменился текст запроса (рис. 2.9).

Рис. 2.9. Текст запроса, созданный конструктором

Мы видим, что к тексту запроса конструктор добавляет предложение ГДЕ.


background image

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

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

Теперь создадим с помощью конструктора запрос, выводящий перечень товаров из
справочника Товары и показывающий актуальную цену для каждого товара. Этот пример
мы рассматривали в разделе «

Как получить данные из разных таблиц для одного и того

же поля

» (листинг 2.5).

Листинг 2.5. Левое внешнее соединение данных справочника «Товары» и среза последних записей регистра сведений
«Цены»

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

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


background image

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

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

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

Состояние флажка Все справа от названия таблицы определяет тип соединения
связанных таблиц. Если оба флажка сняты, то задается внутреннее соединение; если оба
флажка установлены, то – полное соединение. Наличие установленного флажка Все у
левой или у правой таблицы задает соответственно левое или правое соединение.

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