Перейти к основному содержимому

Синтаксис текста запросов

Синтаксически текст запроса состоит из набора секций, имеющих определенное назначение, например: выбрать записи из базы данных, отсортировать их, сгруппировать и т. д. Секции состоят из предложений и операторов, которые, в свою очередь, содержат ключевые слова (например, СОЗДАТЬ, ИЗ, ДЛЯ и т. п.), обозначающие определенное действие, которое нужно выполнить с базой данных.

Ключевые слова

Ключевые слова — это предварительно определенные зарезервированные идентификаторы, имеющие специальные значения для компилятора. Ключевые слова могут использоваться только там, где разрешает синтаксис языка запросов.

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

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

В языке запросов зарезервированы следующие ключевые слова:

Русский языкАнглийский языкПодробнее
ВРЕМЕННУЮTEMPORARYОператор СОЗДАТЬ ВРЕМЕННУЮ ТАБЛИЦУ
ДЛЯFORОператор СОЗДАТЬ ИНДЕКС
ИЗFROMПредложение ИЗ
ИНДЕКСИРОВАТЬINDEXПредложение ИНДЕКСИРОВАТЬ ПО
ИСТИНАTRUEЗначение типа Булево. Используется в логических и булевых операциях
ЛОЖЬFALSEЗначение типа Булево. Используется в логических и булевых операциях
НЕОПРЕДЕЛЕНОUNDEFINEDЛитерал типа Неопределено
ОБРЕЗАТЬTRUNCATEОператор ОБРЕЗАТЬ
СОЗДАТЬCREATEОператор СОЗДАТЬ ВРЕМЕННУЮ ТАБЛИЦУ
ТАБЛИЦУTABLEОператор СОЗДАТЬ ВРЕМЕННУЮ ТАБЛИЦУ

Также зарезервированными словами языка запросов без варианта на русском языке являются NULL и TEMP.

Ключевые слова языка запросов нечувствительны к регистру. Мы рекомендуем выбрать один стиль написания (прописными буквами) и его придерживаться, например:

ВЫБРАТЬ
КодУчастника,
ИмяПроцесса
ИЗ
ОбработанныеСообщения
ГДЕ
ИмяПроцесса == "Обмен"
УПОРЯДОЧИТЬ ПО
КодУчастника

Комментарии

В тексте запроса поддерживаются как однострочные, так и многострочные комментарии.

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

ВЫБРАТЬ
КодУчастника,
ИмяПроцесса // Необходимо включить и другие поля
ИЗ
ОбработанныеСообщения
ГДЕ
ИмяПроцесса == "Обмен" // Лучше передавать имя процесса параметром
УПОРЯДОЧИТЬ ПО
КодУчастника

Пример запроса с многострочным комментарием:

ВЫБРАТЬ
КодУчастника,
ИмяПроцесса
ИЗ
ОбработанныеСообщения
/*ГДЕ
ИмяПроцесса == "Обмен"
УПОРЯДОЧИТЬ ПО
КодУчастника*/

Текст комментария и его положение относительно секций и предложений сохраняются при форматировании.

Пример запроса с комментариями до форматирования:

метод Пример(ДатаКурса: Дата, Валюта: Строка)
знч Запрос = Запрос{
ВЫБРАТЬ
/* Необходимо перепроверить выборку
В новых релизах возможны изменения */
/* После изменения методов работы с валютами
переоценить подход к выборке */
КурсыВалютСрезПоследних.Валюта КАК Валюта,
КурсыВалютСрезПоследних.Период КАК Период,
КурсыВалютСрезПоследних.Курс КАК Курс, // Сделать строку последней
КурсыВалютСрезПоследних.Кратность КАК Кратность
ЗАПОЛНИТЬ
КурсВалюты
ИЗ
КурсыВалют.СрезПоследних(%ДатаКурса) КАК /* Пересмотреть это представление */ КурсыВалютСрезПоследних
ГДЕ
КурсыВалютСрезПоследних.Валюта == %Валюта // Эта секция кажется избыточной
}
;

Пример запроса с комментариями после форматирования:

метод Пример(ДатаКурса: Дата, Валюта: Строка)
знч Запрос = Запрос{
ВЫБРАТЬ
// Необходимо перепроверить выборку
// В новых релизах возможны изменения
// После изменения методов работы с валютами
// переоценить подход к выборке
КурсыВалютСрезПоследних.Валюта КАК Валюта,
КурсыВалютСрезПоследних.Период КАК Период,
КурсыВалютСрезПоследних.Курс КАК Курс,
// Сделать строку последней
КурсыВалютСрезПоследних.Кратность КАК Кратность
ЗАПОЛНИТЬ
КурсВалюты
ИЗ
// Пересмотреть это представление
КурсыВалют.СрезПоследних(%ДатаКурса) КАК КурсыВалютСрезПоследних
ГДЕ
КурсыВалютСрезПоследних.Валюта == %Валюта /* Эта секция кажется избыточной */
}
;

Экранирование имен

Для экранирования имен таблиц, полей и псевдонимов полей, не являющихся корректными идентификаторами, необходимо использовать пару символов `. Например: `Имя с пробелом`.

Если вам требуется включить в имя символ `, удвойте его: `Имя с символом ` ` в середине`.

Имена таблиц, содержащие точку (например, КурсыВалют.СрезПоследних), экранирования не требуют.

См. также