Файл: Хрусталева Е. Ю. Язык запросов 1С-Предприятия 8 (2013).pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 12.03.2019
Просмотров: 51783
Скачиваний: 8724
Рис. 2.6. Окно конструктора запроса
Нажмем кнопку Запрос и посмотрим, как изменился текст запроса (рис. 2.7).
Рис. 2.7. Текст запроса, созданный конструктором
Мы видим, что к тексту запроса конструктор добавляет предложение УПОРЯДОЧИТЬ
ПО. Кроме того, конструктор автоматически добавляет псевдоним для поля, по которому
производится упорядочивание (Наименование).
Нажмем ОК и вернемся в модуль формы. Запрос, сформированный с помощью
конструктора запроса (без обработки результата), будет выглядеть следующим образом
(листинг 2.3).
Листинг 2.3. Запрос, созданный конструктором
Для дальнейшего изменения запроса можно поместить курсор внутрь текста запроса и
вызвать конструктор запроса из контекстного меню. Если при этом текст запроса
содержит ошибки, то конструктор запроса укажет на них и не будет открыт, пока эти
ошибки вручную не будут исправлены. Таким образом, конструктор запроса помогает
разработчику создать запрос с нуля, а также найти собственные ошибки уже в
существующем запросе.
Итак, с помощью конструктора запроса мы получили текст запроса, аналогичный тому,
который мы писали вручную (см. листинг 2.2). Далее текст запроса, полученный при
нажатии кнопки Запрос (см. рис. 2.7), можно скопировать в окно консоли запросов и
выполнить. Или же полученный фрагмент кода (см. листинг 2.3), содержащий текст
запроса, можно использовать для выполнения и обработки результатов запроса из
встроенного языка.
подробнее
Раздел «
Выполнение запросов из встроенного языка
».
Теперь добавим в запрос условие отбора, чтобы в результате запроса отображались
только те записи из справочника Товары, которые не являются группой. Этот пример мы
рассматривали в разделе «
Как получить записи иерархической таблицы, не являющиеся
Листинг 2.4. Вывод записей справочника «Товары», не являющихся группой
Чтобы получить подобный запрос, изменим текст запроса, ранее созданный
конструктором (см. листинг 2.3). Отредактируем полученный запрос в конструкторе. Мы
видим, что закладки конструктора Таблицы и поля, Объединения/Псевдонимы и Порядок
уже заполнены так, как мы это задавали ранее (см. рис. 2.2, 2.4, 2.6).
Чтобы задать условие отбора записей из таблицы, перейдем на закладку конструктора
Условия и перетащим в список условий поле ЭтоГруппа из таблицы Товары. Платформа
автоматически создаст параметризированное условие с этим полем, но в данном случае
нам это не нужно. Поэтому зададим произвольное условие отбора (Товары.ЭтоГруппа =
ЛОЖЬ), установив флажок Произвольное (рис. 2.8).
Рис. 2.8. Окно конструктора запроса
Перейдем на закладку конструктора запроса Порядок и удалим установленное ранее
упорядочивание записей результата запроса (с помощью кнопки <), так как в данном
случае оно не нужно.
Нажмем кнопку Запрос и посмотрим, как изменился текст запроса (рис. 2.9).
Рис. 2.9. Текст запроса, созданный конструктором
Мы видим, что к тексту запроса конструктор добавляет предложение ГДЕ.
Нажмем ОК и вернемся в модуль формы. Текст запроса, сформированный с помощью
конструктора запроса, заменит собой прежний вариант. В результате мы получим текст
запроса, аналогичный тому, который мы писали вручную (см. листинг 2.4).
Связи источников запроса
Теперь создадим с помощью конструктора запрос, выводящий перечень товаров из
справочника Товары и показывающий актуальную цену для каждого товара. Этот пример
мы рассматривали в разделе «
Как получить данные из разных таблиц для одного и того
Листинг 2.5. Левое внешнее соединение данных справочника «Товары» и среза последних записей регистра сведений
«Цены»
Из текста запроса мы видим, что в качестве источников запроса здесь выступают две
таблицы Справочник.Товары и РегистрСведений.Цены.СрезПоследних, которые
связаны между собой левым внешним соединением.
Для того чтобы получить такой запрос с помощью конструктора запроса, нужно на
закладке Таблицы и поля перенести обе эти таблицы в список источников запроса и
выбрать из таблицы Товары поля Код, Наименование, Производитель, а из таблицы
Цены.СрезПоследних – поле Цена (рис. 2.10).
Рис. 2.10. Окно конструктора запроса
В случае, если в запросе участвуют несколько таблиц, в окне конструктора запроса
становится доступной закладка Связи, на которой задается тип связи и условие связи
между таблицами. В тех случаях, когда это возможно, платформа сама устанавливает
связь между источниками запроса по ссылочным полям. Нам остается только на закладке
Связи установить флажок Все у таблицы Товары и снять его у таблицы
Цены.СрезПоследних (рис. 2.11).
Рис. 2.11. Окно конструктора запроса
Состояние флажка Все справа от названия таблицы определяет тип соединения
связанных таблиц. Если оба флажка сняты, то задается внутреннее соединение; если оба
флажка установлены, то – полное соединение. Наличие установленного флажка Все у
левой или у правой таблицы задает соответственно левое или правое соединение.
Заметим, что при самостоятельной установке связи двух таблиц (как в данном случае)
конструктор запроса автоматически устанавливает флажок Все у левой таблицы, тем
самым задавая левое соединение таблиц. Но нам нужно, чтобы в запросе слева была
таблица Товары, поэтому мы изменили состояние флажка Все у обеих таблиц. При
следующем редактировании текста запроса с помощью конструктора таблица Товары