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