Работа с запросами во встроенном языке

Пример создания, выполнения запроса и обработки его результатов во встроенном языке может выглядеть следующим образом:

// Установить значения параметров запроса.
знч Возраст = 40

// Задать текст запроса.
знч Запрос = Запрос{ВЫБРАТЬ 
                        Сотрудники.Ссылка КАК Ссылка,
                        Сотрудники.ФИО КАК ФИО 
                     ИЗ
                        Сотрудники КАК Сотрудники
                     ГДЕ
                        Сотрудники.Возраст < %Возраст}

// Обойти результат запроса и обработать его.
для СтрокаРезультата из Запрос.Выполнить()
   пер СотрудникСсылка = СтрокаРезультата.Ссылка    
   пер СотрудникФИО    = СтрокаРезультата.ФИО
; 

Литерал или произвольный запрос

Для создания запроса можно использовать два способа:

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

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

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

Примечание: Ограничение: в литерале запроса нельзя использовать запрос вида ВЫБРАТЬ * ИЗ ЖурналСобытий