Предложение ВЫБРАТЬ / SELECT

Добавил admin | Предложение ВЫБРАТЬ / SELECT | Понедельник 5 октября 2009 19:06

Предложение ВЫБРАТЬ позволяет указать список полей для выборки. Если вместо перечня полей указана звездочка («*»), тогда это означает, что нужно выбрать все поля таблицы. Указание конкретных полей позволяет выбрать только заданные колонки из исходной таблицы-источника запроса.

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

Синтаксическая диаграмма конструкции ВЫБРАТЬ такова:

ВЫБРАТЬ [РАЗЛИЧНЫЕ] [ПЕРВЫЕ <Количество>] <:Список полей выборки I *>
Примеры:
ВЫБРАТЬ Наименование, Цена ИЗ Справочник.Товары
ВЫБРАТЬ * ИЗ Справочник.Сотрудники
ВЫБРАТЬ Номер, Дата, Представление ИЗ Документ.РасходнаяНакладная
ВЫБРАТЬ * ИЗ РегистрНакопления.Продажи


В системе 1С:Предприятие 8.0 можно построить запрос без указания ключевого слова ИЗ, тогда список полей должен содержать полные имена таблиц, например:

ВЫБРАТЬ Справочник.Товары.Наименование, Справочник.Товары.Цена
ВЫБРАТЬ Справочник.Сотрудники.*

Псевдонимы полей (КАК/AS)

Для поля может быть назначен псевдоним с помощью ключевого слова КАК. Это позволяет обращаться к полю по псевдониму при указании итогов и порядка сортировки, а также в результате запроса.

В следующем запросе для полей Наименование и ЕдИзм назначаются псевдонимы:

ВЫБРАТЬ Наименование КАК Товар, Цена, ЕдИзм КАК ЕдиницаИзмерения
ИЗ Справочник.Товары
УПОРЯДОЧИТЬ ПО Товар


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

Товар

Цена

ЕденицаИзмерения

Бумага 130 Пачка
Вилы 1000 Шт
Грабли 1500 Шт

Ключевое слово КАК необязательно и может быть опущено, но для повышения наглядности его рекомендуется указывать, особенно на первых порах. Ниже приведен пример того же запроса без ключевого слова КАК:

ВЫБРАТЬ Наименование Товар, Цена, ЕдИзм ЕдиницаИзмерения
ИЗ Справочник.Товары
УПОРЯДОЧИТЬ ПО Товар


Ключевое слово РАЗЛИЧНЫЕ/DISTINCT

Ключевое слово РАЗЛИЧНЫЕ позволяет оставить в результате запроса только отличающиеся строки. Например, если мы выбираем контрагентов из документа РасходнаяНакладная, то вполне вероятно, что один и тот же контрагент, может встретиться в нескольких накладных, поэтому без ключевого слова РАЗЛИЧНЫЕ он будет присутствовать в результате запроса несколько раз.

Например, в результате приведенного ниже запроса несколько раз встречается контрагент ООО «Новый мир»:

ВЫБРАТЬ Контрагент ИЗ Документ.РасходнаяНакладная

Контрагент

ООО”Новый мир”
ЗАО”Стройметмаш”
ООО”Новый мир”
ООО”Механика”

Если же указать ключевое слово РАЗЛИЧНЫЕ, то повторяющиеся записи из результата запроса будут удалены:

ВЫБРАТЬ РАЗЛИЧНЫЕ Контрагент ИЗ Документ.РасходнаяНакладйая
Контрагент
ООО”Новый мир”
ЗАО”Стройметмаш”
ООО”Механика”

Ключевое слово ПЕРВЫЕ / ТОР

Данное ключевое слово позволяет ограничить выборку несколькими первыми записями. Часто это ключевое слово применяется

в комбинации с сортировкой (см. предложение УПОРЯДОЧИТЬ ПО).

Допустим, требуется выбрать 3 самых дорогих товара. Это реализуется следующим запросом:

ВЫБРАТЬ ПЕРВЫЕ 3 Наименование, Цена
ИЗ Справочник.Номенклатура
УПОРЯДОЧИТЬ ПО Цена УБЫВ

Результат запроса будет такой:

Наименование Цена
ЖК-МониторLG Flatron 21″ 1500
Компьютор Farmoza 1450
ЖК-МониторLG Flatron 17″ 1200

Поля из вложенных таблиц

Поле в списке выборки может ссылаться на вложенную таблицу источника данных, например, на табличную часть справочника. В этом случае поле результата запроса будет иметь тип РезультатЗапроса, то есть содержать вложенный результат запроса, сформированный на основе вложенной таблицы-источника. По умолчанию во вложенный результат запроса включаются все поля вложенной таблицы-источника данных. Имеется возможность явно определить группу полей, которые должны содержаться во вложенном результате запроса. Список полей, выбираемых из вложенной таблицы, описывается по следующему образцу:

//требуются все поля из вложенной таблицы

ВЫБРАТЬ Документ.РасходнаяНакладная.Состав

ВЫБРАТЬ Документ.РасходнаяНакладная.Состав.*

//требуется только одно поле из табличной части

ВЫБРАТЬ Документ.РасходнаяНакладная.Состав.Сумма

//требуется несколько полей из табличной части

ВЫБРАТЬ Документ.РасходнаяНакладная.Состав.(Количество,Сумма)

//для полей вложенной таблицы можно указать псевдонимы

ВЫБРАТЬ Документ.РасходнаяНакладная.Состав.(Количество КАК Кол,Сумма КАК Сум)