Предложение ИЗ / FROM

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

Вот простые примеры запросов с предложением ИЗ:

 

ВЫБРАТЬ * ИЗ Справочник.Товары
ВЫБРАТЬ * ИЗ Документ.РасходнаяНакладная

 

Напомним, что конструкция ИЗ необязательна, если в списке выбираемых полей указаны полные имена таблиц, например,

 

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

 

Таблицы-источники данных

Каждая таблица-источник предоставляет свой набор полей. С полным их перечнем вы можете ознакомиться в документации или Синтакс-помощнике.

В 1C:Предприятии 8.0 существуют следующие таблицыисточники данных для запросов:

В данной главе подробно описаны только таблицы для обращения к справочникам и документам.

Таблица справочника

Таблица справочника позволяет организовать запрос к любому справочнику и предоставляет следующие поля:

Ссылка

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

ПометкаУдаления

Признак пометки на удаление элемента справочника. Если равно значению Истина, то элемент помечен на удаление.

Родитель

Указывает на элемента-родителя (или группу), в которой содержится данный элемент. Это поле будет включено в результат запроса только для иерархических справочников.

ЭтоГруппа

Признак того, что элемент справочника является группой.

Это поле включается в результат запроса только для иерархических справочников.

Владелец

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

Представление

Виртуальное поле* (см.ниже). Содержит представление элемента справочника, например, его наименование или код.

Код

Код элемента. Встроенное поле для всех справочников.

Наименование

Наименование элемента. Встроенное поле для всех справочников.

<имя реквизита>

Далее идут реквизиты справочника, как они определены в Конфигураторе, например, Цена, ЕдИзм и т.д.

<имя табличной части>

Если у справочника есть табличные части, то к ним можно обращаться по имени. При этом в результате запроса появляется вложенная таблица.

Приведем примеры простых запросов к справочнику:

 

ВЫБРАТЬ Код, Наименование, Цена, Родитель
ИЗ Справочник.Номенклатура
ВЫБРАТЬ *.Представление
ИЗ Справочник.Номенклатура
ВЫБРАТЬ Наименование, ЭтоГруппа, ПометкаУдаления
ИЗ Справочник.Номенклатура
ГДЕ ЭтоГруппа = ИСТИНА И ПометкаУдаления = ЛОЖЬ
 

Таблица документа

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

Ссылка

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

ПометкаУдаления

Признак пометки на удаление документа.

Номер

Номер документа. Встроенное поле для всех документов.

Дата

Дата и время документа. Встроенное поле для всех документов.

Проведен

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

<имя реквизита>

Далее идут реквизиты шапки документа, как они определены в Конфигураторе, например, Контрагент, Склад и т.д.

<имя табличной части>

Если у документа есть табличные части, то к ним можно обращаться по имени. При этом в результате запроса появляется вложенная таблица.

МоментВремени

Виртуальное поле. Содержит момент времени документа, который включает дату и ссылку на документ. Напомним, что тип «дата» включает также и время с точностью до секунды.

Представление

Виртуальное поле. Содержит строку-представление документа, например, «Расходная накладная 0035 от 25.07.2003 12:05:01».

Итак, мы рассмотрели две основные таблицы-источники данных для справочников и документов. Таблицы-источники для регистров будут представлены в соответствующих главах. Таблицыисточники для других объектов (констант, журналов документов и т.д.) имеют достаточно простую структуру и в данной книге не рассматриваются.

Псевдонимы источников КАК/AS

В языке запросов есть возможность указать псевдоним для таблицы-источника с помощью ключевого слова КАК. При этом можно обращаться к источнику через псевдоним, например, в списке полей конструкции ВЫБРАТЬ или при соединении таблиц, которое будет описано ниже.

Ниже приведен пример использования псевдонима таблицыисточника:

 

ВЫБРАТЬ Спр.Наименование,
Спр.Цена,
Спр.Страна
ИЗ Справочник.Номенклатура КАК Спр

 

Запросы к табличным частям

В качестве таблиц источников можно указывать табличные части объектов, например, справочников и документов. Это не то же самое, что получать табличную часть как поле запроса, содержащее вложенную таблицу, о чем было рассказано выше.

Например, в следующем запросе производится обращение к табличной части Состав документа РасходнаяНакладная:

 

ВЫБРАТЬ Товар, Цена, Количество, Сумма
И3 Документ.РасходнаяНакладная.Состав
ВЫБРАТЬ Ссылка.Дата, Ссылка.Номер,
Номенклатура, Цена, Количество, Сумма
ИЗ Документ.РасходнаяНакладная.Состав

Если запрос делается к табличной части справочника или документа, то обращение к реквизитам шапки документа или обычным реквизитам справочника производится через поле Ссылка, например:

 

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

Вложенные запросы в списке источников

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

 

ВЫБРАТЬ Товары.Номенклатура КАК Товар,
Товары.Номенклатура.ЗакупочнаяЦена КАК Цена
ИЗ (
ВЫБРАТЬ Номенклатура ИЗ Документ.РасходнаяВакладная.Состав
ОБЪЕДИНИТЬ
ВЫБРАТЬ Номенклатура ИЗ Документ.ПриходнаяНакладная.Состав
) КАК Товары
СГРУППИРОВАТЬ ПО Товары.Номенклатура

Конструкция СОЕДИНЕНИЕ...ПО/JOIN...ON

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

 

ВЫБРАТЬ Док.Номенклатура,
Спр.ЗакупочнаяЦена КАК Цена,
Спр.Родитель КАК Группа
ИЗ Документ.РасходнаяНакладная.Состав КАК Док
СОЕДИНЕНИЕ Справочник. Номенклатура КАК Спр
ПО Док.Номенклатура = Спр.Ссылка
 

Результат этого запроса показан ниже:

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

 

ВЫБРАТЬ Номенклатура,
Номенклатура.ЗакупочнаяЦена КАК Цена,
Номенклатура.Родитель КАК Группа
ИЗ Документ.РасходнаяНакладная.Состав
 

Возможность разыменования полей в 1С:Предприятии 8.0 допускает обращение к свойствам объектов через несколько точек, например, «Номенклатура.Поставщик.Страна». Это позволяет значительно упростить написание запросов.

Рассмотренное соединение относится к классу внутренних. В языке запросов системы 1С:Предприятие 8.0 существует возможность внешних соединений, которые могут быть левыми (LEFT OUTER), правыми (RIGHT OUTER) и полными (FULL OUTER).

 

Левое внешнее соединение

Конструкция ЛЕВОЕ [ВНЕШНЕЕ] СОЕДИНЕНИЕ означает, что в результат запроса надо включить комбинации записей из обеих исходных таблиц, которые соответствуют указанному условию. Но, в отличие от внутреннего соединения, в результат запроса надо включить еще и записи из первого источника (указанного слева от слова СОЕДИНЕНИЕ), для которых не найдено соответствующих условию записей из второго источника.

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

Обратите внимание, что NULL-значения не являются нулем или пустой строкой. Это специальные маркеры, обозначающие неуказанные (отсутствующие) значения или значения, не имеющие смысла.

Например, нужно показать курсы всех валют, которые хранятся в регистре сведений КурсыВалют. Возможно, что для некоторой валюты не будет найдено соответствующей записи в регистре сведений, но она также должна попасть в отчет (запросы к регистрам сведений и таблица СрезПоследних описаны в главе «Регистры сведений»):

 

ВЫБРАТЬ Спр.Наименование, Peг.Курс
ИЗ Справочник.Валюты КАК Спр
ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ
РегистрСведений.КурсыВалют.СрезПоследних КАК Peг
ПО Спр.Ссылка = Peг.Валюта
 

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

Правое внешнее соединение

Конструкция ПРАВОЕ [ВНЕШНЕЕ] СОЕДИНЕНИЕ означает, что в результат запроса надо включить комбинации записей из обеих исходных таблиц, которые соответствуют указанному условию. Кроме того, в результат запроса надо включить еще и записи из второго источника (указанного справа от слова СОЕДИНЕНИЕ), для которых не найдено соответствующих условию записей из первого источника.

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

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

 

ВЫБРАТЬ Спр.Наименование, Peг.Курс
ИЗ РегистрСведений.КурсыВалют.СрезПоследних() КАК Peг
ПРАВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ Справочник.Валюты КАК Спр
ПО Спр.Ссылка = Peг.Валюта
 

Полное внешнее соединение

Конструкция ПОЛНОЕ [ВНЕШНЕЕ] СОЕДИНЕНИЕ означает, что в результат запроса надо включить комбинации записей из обеих исходных таблиц, которые соответствуют указанному условию. Кроме того, в результат запроса надо включить также еще и те записи из обоих источников, для которых не найдено соответствий.

Таким образом, в результат запроса будут включены все записи из обоих источников; они будут соединены друг с другом при выполнении указанного условия. Строки результата запроса, для которых не найдено соответствующих условию записей из какого-либо источника, будут содержать NULL в полях, формируемых на основании записей из этого источника.


*Примечание. Виртуальные поля.

Некоторые поля в таблицах-источниках виртуальные, например, поле «Представление» для таблицы справочника и документа, или поле «МоментВремени» для документа. Это значит, что они не хранятся в базе данных, а генерируются «на лету». Виртуальные поля не включаются в результат запроса, когда вместо списка полей указана звездочка («*»), их нужно указывать явно, например «ВЫБРАТЬ *, Представление ИЗ Справочник.Товары». Такое решение было принято для ускорения выполнения классического запроса «ВЫБРАТЬ * ИЗ...». В этом случае не требуется генерировать представления для элементов справочников и документов, следовательно запросы будут выполняться быстрее. офисная мебель . Делаем качественно кодирование от алкоголизма по выгодным условиям. . Дешевая недвижимость Киев без посредников . карбоновая пленка для iphone 4 оригинальная брендовая продукция . Купить iphone 4 со скидкой