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