Создание простого запроса
страницаСоздание простого запроса
Первый запрос, который вы создадите с помощью конструктора – это запрос для отображения в порядке иерархии всех элементов справочника Номенклатура (листинг 11.38).
Листинг **11.**38. Вывод записей справочника «Номенклатура», расположенных в порядке иерархии
ВЫБРАТЬ
Номенклатура.Код,
Номенклатура.Наименование,
Номенклатура.Родитель,
Номенклатура.ЭтоГруппа
ИЗ
Справочник.Номенклатура КАК Номенклатура
УПОРЯДОЧИТЬ ПО
Номенклатура.Ссылка ИЕРАРХИЯ
АВТОУПОРЯДОЧИВАНИЕ
Сначала напишите в модуле формы заготовку программного кода, который будет формировать запрос (листинг 11.39).
Листинг **11.**39. Заготовка для создания запроса
Запрос = Новый Запрос;
Запрос.Текст = "";
Затем поместите курсор между кавычек и нажмите Конструктор запроса… в контекстном меню (рис. 11.36).

Рис. 11.36. Вызов конструктора запроса
После этого откроется конструктор запроса (рис. 11.37).

Рис. 11.37. Конструктор запроса
Сначала вы попадаете на основную закладку конструктора Таблицы и поля. На этой закладке в списке База данных можно выбрать реальные и виртуальные таблицы в качестве источников запроса.
Раскройте группу Справочники, выберите таблицу Номенклатура и перетащите ее в список Таблицы. В этом списке можно выбрать поля для отображения в запросе.
Раскройте структуру выбранной таблицы и перенесите в список Поля поля Код, Наименование, Родитель, ЭтоГруппа (рис. 11.38).

Рис. 11.38. Окно конструктора запроса
ПРИМЕЧАНИЕ
Выделенные элементы можно перенести из одного списка в другой перетаскиванием мышью или двойным щелчком на них. Либо можно использовать кнопки >, >>, <, <<.
На любом этапе создания запроса, не выходя из конструктора запроса (не нажимая ОК), можно увидеть, как изменяется текст запроса в процессе работы. Для этого нужно нажать кнопку Запрос в правом нижнем углу окна конструктора запроса.
Нажмите эту кнопку и посмотрите, какой текст запроса создал конструктор (рис. 11.39). В этом же окне при необходимости вы можете отредактировать текст запроса вручную.

Рис. 11.39. Текст запроса, созданный конструктором
Вы видите, что в запросе выбираются поля Код, Наименование, Родитель, ЭтоГруппа из справочника Номенклатура. Таким образом, на закладке Таблицы и поля конструктора запроса формируются основные предложения языка запросов ВЫБРАТЬ, ИЗ.
Нажмите ОК или Отмена, чтобы закрыть окно редактора запроса.
Теперь перейдите на закладку Объединения/Псевдонимы, чтобы задать псевдонимы полей запроса. Задайте псевдоним КодТовара для поля Код (рис. 11.40).

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

Рис. 11.41. Текст запроса, созданный конструктором
Вы видите, что к тексту запроса конструктор добавляет псевдонимы полей и ключевое слово КАК.
В заключение перейдите на закладку Порядок и задайте упорядочивание записей результата запроса. Из списка полей выберите поле Номенклатура.Ссылка, установите тип упорядочивания – Возрастание иерархии и установите флажок Автоупорядочивание (рис. 11.42).

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

Рис. 11.43. Текст запроса, созданный конструктором
Вы видите, что к тексту запроса конструктор добавляет предложение УПОРЯДОЧИТЬ ПО.
Закройте редактор запроса, а затем нажмите ОК в конструкторе запроса. Вы вернетесь в модуль формы.
Запрос, сформированный с помощью конструктора запроса, будет выглядеть следующим образом (листинг 11.40).
Листинг 11.40. Запрос, созданный конструктором
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Номенклатура.Код КАК КодТовара,
| Номенклатура.Наименование,
| Номенклатура.Родитель,
| Номенклатура.ЭтоГруппа
|ИЗ
| Справочник.Номенклатура КАК Номенклатура+
|
|УПОРЯДОЧИТЬ ПО
| Номенклатура.Ссылка ИЕРАРХИЯ
|АВТОУПОРЯДОЧИВАНИЕ";
Для дальнейшего изменения запроса можно поместить курсор внутрь текста запроса и снова вызвать конструктор запроса из контекстного меню. Если при этом текст запроса содержит ошибки, то конструктор запроса укажет на них и не будет открыт, пока эти ошибки вручную не будут исправлены. Таким образом, конструктор запроса помогает вам создать запрос с нуля, а также найти собственные ошибки уже в существующем запросе, если вы написали его в модуле вручную.
Откройте существующий запрос в конструкторе запроса и доработайте его. Добавьте в запрос условие отбора, чтобы в результате запроса отображались только те записи из справочника Номенклатура, которые не являются группой.
Для этого перейдите на закладку Условия и перетащите в список условий поле ЭтоГруппа из таблицы Товары. Платформа автоматически создаст условие с этим полем, но в данном случае вам нужно другое условие (рис. 11.44).

Рис. 11.44. Окно конструктора запроса
Чтобы изменить условие отбора, дважды щелкните на нем мышью. Откроется окно редактирования выражений (рис. 11.45).

Рис. 11.45. Окно редактирования произвольного выражения
Задайте условие Номенклатура.ЭтоГруппа = ЛОЖЬ и нажмите ОК (рис. 11.46).

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

Рис. 11.47. Текст запроса, созданный конструктором
Вы видите, что к тексту запроса конструктор добавляет предложение ГДЕ.
Закройте окно редактора запроса и нажмите ОК. Вы вернулись в модуль формы. Текст запроса, сформированный с помощью конструктора запроса, заменил собой прежний вариант (рис. 11.48).

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