Язык запросов 1С 8 — незаменимый инструмент для программиста 1С, он позволяет писать более лаконичный, простой, понятный код, использовать меньшее количество ресурсов системы при работе с данными. Данная статья открывает серию уроков, посвященных языку запросов 1С 8. На первом уроке мы рассмотри структуру главного оператора данного языка — ВЫБРАТЬ. При помощи этого оператора можно создавать выборки из таблиц базы данных. Выбранные данные таблиц можно сортировать, накладывать на них условия, связывать и объединять с данными других таблиц, группировать по различным полям и много другое.
Язык запросов 1с предприятия 8 — Структура оператора ВЫБРАТЬ
Рассмотрим структуру оператора ВЫБРАТЬ (в квадратных скобках указаны необязательные части оператора). Язык запросов 1С предоставляет широкий набор инструментов для создания выборок данных.
ВЫБРАТЬ [РАЗРЕШЕННЫЕ] [РАЗЛИЧНЫЕ] [ПЕРВЫЕ A]
[Поле1] [КАК Псевдоним1],
[Поле2] [КАК Псевдоним2],
...
[ПолеM] [КАК ПсевдонимB]
[ПОМЕСТИТЬ ИмяВременнойТаблицы]
[ИЗ
Таблица1 КАК ПсевдонимТаблицыТаблицы1
[[ВНУТРЕННЕЕ СОЕДИНЕНИЕ][ЛЕВОЕ СОЕДИНЕНИЕ][ПОЛНОЕ СОЕДИНЕНИЕ] Таблица2 КАК ПсевдонимТаблицы2
[[ВНУТРЕННЕЕ СОЕДИНЕНИЕ][ЛЕВОЕ СОЕДИНЕНИЕ][ПОЛНОЕ СОЕДИНЕНИЕ] ТаблицаC КАК ПсевдонимТаблицыC
ПО Выражение1 [И Выражение2]...[И ВыражениеD]]
...
...
ПО Выражение1 [И Выражение2]...[И ВыражениеE]]
...
[ТаблицаF КАК ПсевдонимТаблицыF]
... ]
[СГРУППИРОВАТЬ ПО
ГруппировочноеПоле1[,]
...
[ГруппировочноеПолеG]]
[ГДЕ
Выражение1
[И Выражение2]
...
[И ВыражениеH]]
[ОБЪЕДИНИТЬ ВСЕ
...]
[;
...]
[ИНДЕКСИРОВАТЬ ПО
Псевдоним1
...
ПсевдонимB]
[ИТОГИ
[АгрегатнаяФункция(Поле1)][,]
[АгрегатнаяФункция(Поле2)][,]
...
[АгрегатнаяФункция(ПолеI)]
ПО
[ОБЩИЕ][,]
[ГруппировочноеПоле1][,]
...
[ГруппировочноеПолеj]]
Ключевые слова и блоки работы с полями
- ВЫБРАТЬ — ключевое слово обозначающее начало оператора;
- РАЗРЕШЕННЫЕ — указывает, что в выборку должны попадать записи таблиц, доступ на чтение к которым разрешен для данного пользователя;
- РАЗЛИЧНЫЕ — указывает, что в выборку должны попадать только различные (по всем полям) стоки. Иными словами, из выборки будут исключены повторяющиеся строки;
- ПЕРВЫЕ A — если указать данное ключевое слово, то в выборку попадут только первые A из выбранных запросом строк, где A — натуральное число;
- Блок полей — в данном блоке указываются поля, которые необходимо включить в выборку. Эти поля будут случить столбцами выборки. В самом простом случае поле выглядит следующим образом:
ПсевдонимТаблицы.ИмяПоляТаблицы КАК ПсевдонимПоляТаким образом мы указываем из какой таблицы мы берем данное поле. Язык запросов 1С позволяет указывать любые псевдонимы, но они не должны повторяться в одном операторе ВЫБРАТЬ. Поле может быть и более сложным, оно может состоять из различных комбинаций полей таблиц, функций языка запросов и агрегатных функций, но в этом уроке мы не будем касаться этих случаев;
Ключевые слова и блоки работы с таблицами
- ПОМЕСТИТЬ ИмяВременнойТаблицы — ключевое слово ПОМЕСТИТЬ предназначено для создания временной таблицы с определенным именем, которая будет храниться в оперативной памяти в данном сеансе 1С 8, пока он не завершится или пока временная таблица не будет уничтожена. Следует заметить, что имена временных таблиц в одном сеансе 1С 8 не должны повторяться;
- Блок таблиц и связей — в блоке указываются все таблицы используемые в данном запросе, а также связи между ними. Начинается блок с ключевого слова ИЗ, за ним следует имя и псевдоним первой таблицы. Если данная таблица связана с другими таблицами, то указываются связи. Язык запросов 1С содержит следующий набор типов связей:
- ВНУТРЕННЕЕ СОЕДИНЕНИЕ — запись из левой таблицы попадет в выборку только при выполнении условия связи, запись из правой таблицы попадет в выборку только при выполнении условия связи;
- ЛЕВОЕ СОЕДИНЕНИЕ — запись из левой таблицы попадет в выборку в любом случае, запись из правой таблицы попадет в выборку только при выполнении условия связи;
- ПОЛНОЕ СОЕДИНЕНИЕ — запись из левой таблицы попадет в выборку сначала в любом случае, потом только при выполнении условия связи, запись из правой таблицы попадет в выборку сначала в любом случае, потом только при выполнении условия связи. При этом получившиеся в результате связи повторяющиеся строки исключаются из выборки.
После типа связи указывается имя и псевдоним второй таблицы. Далее следует ключевое слово ПО, после него следуют условия связи, связанные между собою логическими операторами И, ИЛИ. Каждое выражение в условии должно возвращать значение логического типа (Истина, Ложь). Если первая таблица связана еще с какими то таблицами, кроме второй, то снова указывается тип соединения и так далее. Каждая из таблиц участвующих в связи в свою очередь может быть связана с другими таблицами, это показано в схеме структуры запроса. Если таблица не связана с первой, то она указывается без типа соединения, далее могут следовать ее связи и так далее;
Ключевые слова и блоки преобразования данных
- Блок группировок — данный блок служит для группировки строк таблицы. Строки объединяются в одну, если значения полей указанных после ключевого слова СГРУППИРОВАТЬ ПО оказываются одинаковыми. При этом все остальные поля суммируются, усредняются, максимизируются, либо минимизируются при помощи агрегатных функций. Агрегатные функции используют в блоке полей. Пример:
Максимум(ПсевдонимТаблицы.ИмяПоляТаблицы) КАК ПсевдонимПоля - Блок условий — в данном блоке после ключевого слова ГДЕ указываются условные выражения разделенные логическими операторами И, ИЛИ, для того чтобы любая из выбранных строк попала в выборку, необходимо, чтобы все условия в совокупности имели значение Истина.
- ОБЪЕДИНИТЬ ВСЕ — данное ключевое слово используется для объединения запросов (операторов ВЫБРАТЬ). Язык запросов 1С позволяет объединять несколько запросов в один. Для того, чтобы запросы можно было объединить у них должен быть одинаковый набор полей;
- «;» — точка с запятой используется для разделения не зависимых друг от друга операторов ВЫБРАТЬ;
- ИНДЕКСИРОВАТЬ ПО — ключевое слово используется для индексации полей указанных после него;
- Блок итогов — используется для построения древовидных выборок. По каждому из группировочных полей, указанных после ключевого слова ПО, будет создана отдельная строка в выборке. В этой строке при помощи агрегатных функций будут посчитаны итоговые значения полей указанных после ключевого слова ИТОГИ.
Хотите продолжить изучать язык запросов 1с 8? Тогда прочтите следующую статью: Программная работа с запросом в 1С 8
Научитесь пользоваться конструктором запросов: Конструктор запросов 1С — обучение на примерах
Добавить комментарий