В данной статье рассмотрено предложение ВЫБРАТЬ, его место и роль в языке запросов 1С:Предприятия 8.
Предложение ВЫБРАТЬ является единственным обязательным элементом любого запроса, поэтому изучение языка запросов начинается именно с него. Основная цель предложения ВЫБРАТЬ заключается в том, чтобы указать поля выборки, которые должны попасть в результат запроса.
Ниже рассмотрены следующие темы:
- Место предложения ВЫБРАТЬ в структуре запроса 1С:Предприятия 8
- Примеры запросов с предложением ВЫБРАТЬ:
- Выборка всех полей (кроме виртуальных) из таблиц
- Выборка только определенных полей из таблиц
- Виртуальные поля
- Разыменование ссылочных полей
- Псевдонимы полей (ключевое слово КАК / AS)
- Обращение к табличной части как вложенной таблице
- Обращение к табличной части как таблице-источнику
- Ключевое слово РАЗЛИЧНЫЕ / DISTINCT
- Ключевое слово ПЕРВЫЕ / TOP
- Выражения в списке полей выборки
Место предложения ВЫБРАТЬ в структуре запроса
В любом запросе должно быть хотя бы одно предложение ВЫБРАТЬ.
В списке полей выборки должно быть описание хотя бы одного поля выборки, которое в общем случае является выражением.
Примеры запросов с предложением ВЫБРАТЬ
1. Выборка всех полей (кроме виртуальных) из таблиц
Вместо перечисления списка полей можно указать звездочку ("*") и тогда в результат запроса попадут все поля таблицы-источника, кроме виртуальных. Например:
//обращение к таблице справочника
ВЫБРАТЬ * ИЗ Справочник.Номенклатура
//обращение к таблице документа
ВЫБРАТЬ * ИЗ Документ.РасходныйКассовыйОрдер
//обращение к основной таблице регистра накопления
ВЫБРАТЬ * ИЗ РегистрНакопления.ПродажиКомпании
//обращение к виртуальной таблице регистра накопления
ВЫБРАТЬ * ИЗ РегистрНакопления.ПродажиКомпании.Обороты
//выборка всех невиртуальных полей из таблицы справочника
ВЫБРАТЬ Справочник.Номенклатура.*
//выборка определенных полей из таблицы справочника
ВЫБРАТЬ
Справочник.Номенклатура.Код,
Справочник.Номенклатура.Наименование,
Справочник.Номенклатура.Представление //виртуальное поле
//обращение к таблице справочника
ВЫБРАТЬ Код, Наименование, Артикул, СтранаПроисхождения
ИЗ Справочник.Номенклатура
//обращение к таблице документа
ВЫБРАТЬ Номер, Дата, ПодразделениеКомпании, СуммаДокумента
ИЗ Документ.РасходныйКассовыйОрдер
//обращение к таблице справочника (выбрать два обычных поля и одно виртуальное)
ВЫБРАТЬ Код, Наименование, Представление
ИЗ Справочник.Номенклатура
//обращение к таблице документа (выбрать все невиртуальные поля и два виртуальных)
ВЫБРАТЬ *, Представление, МоментВремени
ИЗ Документ.РасходныйКассовыйОрдер
//обращение к свойству объекта через одну точку
ВЫБРАТЬ
Ссылка,
ЮрФизЛицоКонтрагента.ИНН,
ПодразделениеКомпании.Код
ИЗ Документ.РасходныйКассовыйОрдер
//обращение к свойствам объектов через несколько точек
ВЫБРАТЬ
Ссылка,
Ответственный.ОсновнойБанковскийСчет.Банк.КоррСчет
ИЗ Документ.АвансовыйОтчет
ВЫБРАТЬ
Ссылка КАК Документ,
Ответственный КАК МатериальноОтветственный
ИЗ Документ.АвансовыйОтчет
УПОРЯДОЧИТЬ ПО МатериальноОтветственный
ВЫБРАТЬ
Ссылка Документ,
Ответственный МатериальноОтветственный
ИЗ Документ.АвансовыйОтчет
//получение табличной части как вложенной таблицы результата запроса
ВЫБРАТЬ Номер, Дата, Товары
ИЗ Документ.АвансовыйОтчет
//получение нескольких колонок табличной части как вложенной таблицы
ВЫБРАТЬ Номер, Дата, Товары.(Номенклатура, Количество)
ИЗ Документ.АвансовыйОтчет
ВЫБРАТЬ Номер, Дата, Товары.Номенклатура, Товары.Количество
ИЗ Документ.АвансовыйОтчет
//выборка всех полей из табличной части
ВЫБРАТЬ * ИЗ Документ.АвансовыйОтчет.Товары
// выборка определенных полей из табличной части
ВЫБРАТЬ Номенклатура, Количество, Цена, Сумма
ИЗ Документ.АвансовыйОтчет.Товары
//задание псевдонимов для полей табличной части
ВЫБРАТЬ Документ.АвансовыйОтчет.Товары.(Номенклатура, Сумма КАК СуммаПоСтроке)
//обращение к реквизитам документа и реквизитам табличной части (поле Ссылка)
ВЫБРАТЬ
Ссылка.Номер, Ссылка.Дата, Ссылка.Ответственный, //реквизиты документа
Номенклатура, Количество, Цена, Сумма //реквизиты табличной части
ИЗ Документ.АвансовыйОтчет.Товары
ВЫБРАТЬ РАЗЛИЧНЫЕ Ответственный
ИЗ Документ.АвансовыйОтчет
ВЫБРАТЬ ПЕРВЫЕ 10 Номер, Дата, СуммаДокумента
ИЗ Документ.АвансовыйОтчет
УПОРЯДОЧИТЬ ПО СуммаДокумента УБЫВ
//арифметические операции
ВЫБРАТЬ
Номенклатура,
Количество * Цена КАК РасчСумма1,
Сумма / Количество КАК РасчСумма2
ИЗ Документ.АвансовыйОтчет.Товары
//литералы типа "булево", "число", "строка", "дата"
ВЫБРАТЬ Истина, Ложь, 10.5, "Текст", ДАТАВРЕМЯ(2003,12,25)
//конкатенация строк
ВЫБРАТЬ "Сотрудник " + Ответственный.Наименование
ИЗ Документ.АвансовыйОтчет
//агрегатные функции
ВЫБРАТЬ
ПодразделениеКомпании,
СУММА(СуммаДокумента),
МАКСИМУМ(СуммаДокумента),
МИНИМУМ(СуммаДокумента),
СРЕДНЕЕ(СуммаДокумента),
КОЛИЧЕСТВО(*)
ИЗ Документ.АвансовыйОтчет
СГРУППИРОВАТЬ ПО ПодразделениеКомпании
//операция выбора
ВЫБРАТЬ Наименование,
ВЫБОР
КОГДА СтранаПроисхождения.Наименование = "КИТАЙ" ТОГДА "Азия"
КОГДА СтранаПроисхождения.Наименование = "ТАЙВАНЬ" ТОГДА "Азия"
КОГДА СтранаПроисхождения.Наименование = "США" ТОГДА "Америка"
КОГДА СтранаПроисхождения.Наименование = "КАНАДА" ТОГДА "Америка"
ИНАЧЕ "Другое"
КОНЕЦ КАК Страна
ИЗ Справочник.Номенклатура
//операция приведения типов
ВЫБРАТЬ
Ссылка,
Номенклатура,
ВЫРАЗИТЬ(Сумма / 3 КАК Число(5,2)) КАК ТретьСуммы
ИЗ Документ.АвансовыйОтчет.Товары
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua