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