Рассмотрим общий порядок работы с запросами в коде.
1. Во встроенном языке основной тип для работы с запросами - собственно объект Запрос. Запрос объявляется через переменную и строится конструктором Новый:
МойЗапрос = Новый Запрос
2. У объекта запрос есть свойства Текст, Параметры и МенеджерВременных таблиц. Текст и МенеджерВременныхТаблиц доступны для записи, Параметры - только для чтения. Свойство Текст - обязательное, остальные нет. Устанавливаем запросу свойство Текст:
МойЗапрос.Текст = "ВЫБРАТЬ
|Контрагенты.Ссылка,
|Контрагенты.ИНН
|ИЗ
|Справочник.Контрагенты КАК Контрагенты
|ГДЕ Контрагенты.Тип = &ТипКонтрагента";
3. Раз в запросе выше есть условие ГДЕ, в котором тип контрагента сравнивается с таковым, передаваемым через параметр, установим параметры запросу. Т.к. свойство Параметры доступно только на чтение, нужно воспользоваться методом объекта Запрос УстановитьПараметр(). Важно, что параметры могут быть как одиночные, примитивного или ссылочного типа, так и могут быть таблицей - массивом, структурой, или таблицей значений. Установим простой параметр:
МойЗапрос.УстановитьПараметр("ТипКонтрагента", Перечисления.ТипыКонтрагентов.Поставщики);
4. Выполним запрос. Для этого используем метод запроса Выполнить():
МойРезультат = МойЗапрос.Выполнить();
Метод Выполнить() возвращает в качестве результата либо объект РезультатЗапроса (в общем случае), либо тип Неопределено, если запрос создавался для уничтожения временной таблицы.
5. Обработаем РезультатЗапроса. Этот объект имеет в качестве свойств колонки, а в качестве методов - Пустой(), Выбрать() и Выгрузить(). Метод Результата запроса Пустой() возвращает Истину или Ложь в зависимости от того, есть ли строки в результате, или нет. Используем его, чтобы убедиться, что Запрос вернул данные:
Если МойРезультат.Пустой();
Тогда
Возврат;
КонецЕсли;
Важно, что если из запроса будем выбирать или выгружать данные - проверять результат на пустоту не следует. Это будет избыточный вызов. Рекомендация с ИТС.
6А. Если из результата запроса нужно получить выборку - то используем метод Результата запроса Выбрать(). Выборку можно например вывести в табличную часть документа:
МояВыборка = МойРезультат.Выбрать();
Можно также сразу написать:
МояВыборка = МойЗапрос.Выполнить().Выбрать();
6В. Если из результата запроса нужно получить таблицу значений либо дерево значений - используем метод Выполнить(). Таблицу или дерево можно обработать программно:
МояТЗ = МойРезультат.Выполнить();
Итого, один из вариантов обработки запроса, полностью:
МойЗапрос = Новый Запрос;
МойЗапрос.Текст = "ВЫБРАТЬ
|Контрагенты.Ссылка,
|Контрагенты.ИНН
|ИЗ
|Справочник.Контрагенты КАК Контрагенты
|ГДЕ Контрагенты.Тип = &ТипКонтрагента";
МойЗапрос.УстановитьПараметр("ТипКонтрагента", Перечисления.ТипыКонтрагентов.Поставщики);
МояВыборка = МойРезультат.Выбрать();
МояТЗ = МойРезультат.Выполнить();
1. Во встроенном языке основной тип для работы с запросами - собственно объект Запрос. Запрос объявляется через переменную и строится конструктором Новый:
МойЗапрос = Новый Запрос
2. У объекта запрос есть свойства Текст, Параметры и МенеджерВременных таблиц. Текст и МенеджерВременныхТаблиц доступны для записи, Параметры - только для чтения. Свойство Текст - обязательное, остальные нет. Устанавливаем запросу свойство Текст:
МойЗапрос.Текст = "ВЫБРАТЬ
|Контрагенты.Ссылка,
|Контрагенты.ИНН
|ИЗ
|Справочник.Контрагенты КАК Контрагенты
|ГДЕ Контрагенты.Тип = &ТипКонтрагента";
3. Раз в запросе выше есть условие ГДЕ, в котором тип контрагента сравнивается с таковым, передаваемым через параметр, установим параметры запросу. Т.к. свойство Параметры доступно только на чтение, нужно воспользоваться методом объекта Запрос УстановитьПараметр(). Важно, что параметры могут быть как одиночные, примитивного или ссылочного типа, так и могут быть таблицей - массивом, структурой, или таблицей значений. Установим простой параметр:
МойЗапрос.УстановитьПараметр("ТипКонтрагента", Перечисления.ТипыКонтрагентов.Поставщики);
4. Выполним запрос. Для этого используем метод запроса Выполнить():
МойРезультат = МойЗапрос.Выполнить();
Метод Выполнить() возвращает в качестве результата либо объект РезультатЗапроса (в общем случае), либо тип Неопределено, если запрос создавался для уничтожения временной таблицы.
5. Обработаем РезультатЗапроса. Этот объект имеет в качестве свойств колонки, а в качестве методов - Пустой(), Выбрать() и Выгрузить(). Метод Результата запроса Пустой() возвращает Истину или Ложь в зависимости от того, есть ли строки в результате, или нет. Используем его, чтобы убедиться, что Запрос вернул данные:
Если МойРезультат.Пустой();
Тогда
Возврат;
КонецЕсли;
Важно, что если из запроса будем выбирать или выгружать данные - проверять результат на пустоту не следует. Это будет избыточный вызов. Рекомендация с ИТС.
6А. Если из результата запроса нужно получить выборку - то используем метод Результата запроса Выбрать(). Выборку можно например вывести в табличную часть документа:
МояВыборка = МойРезультат.Выбрать();
Можно также сразу написать:
МояВыборка = МойЗапрос.Выполнить().Выбрать();
6В. Если из результата запроса нужно получить таблицу значений либо дерево значений - используем метод Выполнить(). Таблицу или дерево можно обработать программно:
МояТЗ = МойРезультат.Выполнить();
Итого, один из вариантов обработки запроса, полностью:
МойЗапрос = Новый Запрос;
МойЗапрос.Текст = "ВЫБРАТЬ
|Контрагенты.Ссылка,
|Контрагенты.ИНН
|ИЗ
|Справочник.Контрагенты КАК Контрагенты
|ГДЕ Контрагенты.Тип = &ТипКонтрагента";
МойЗапрос.УстановитьПараметр("ТипКонтрагента", Перечисления.ТипыКонтрагентов.Поставщики);
МояВыборка = МойРезультат.Выбрать();
МояТЗ = МойРезультат.Выполнить();
В пункте 6В явно ошибка. Наверное имеется в виду "МояТЗ = МойРезультат.Выгрузить()". Да и итоговый запрос не содержит исполнения самого запроса (нужно добавить строку "МойРезультат = МойЗапрос.Выполнить(); после установки параметра).
ОтветитьУдалить