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