На сон грядущий пришла мысля, что есть некоторые неудобства по обычной работе с запросами.
И вот родилась такая обработка.
Создано на платформе 8.3.13, но думаю будет работать на любой платформе 8.2+.
Просто скачать обработку (пытливые пользователи сами по предоставленному тексту смогут создать обработку)
и включить в конфигурацию, либо использовать через Расширение.
Примеры использования с ней описано в Секции "Использование".
//////////////////////////////////////////////////////////////////////
//
// Обработка расширения объекта Запрос
//
/////////////////////////////////////////////////////////////////////
//
// Использование:
//
// Запрос = Обработки.Запрос.Создать();
//
// Можно так:
//
// Запрос
// .Текст("Выбрать 1 КАК Номенклатура Где 2=&Два")
// .МенеджерВременныхТаблиц()
// .УстановитьПараметры(Новый Структура("Два", 2))
// .УстановитьПараметр("Один", 1)
// .Пустой();
//
// Можно и так:
//
// Запрос.Текст = "Выбрать 1 КАК Номенклатура Где 2=&Два";
// Запрос.Параметры.Вставить("Два", 3);
//
// Возврат результатов:
//
// ТаблицаЗначений = Запрос.ВыполнитьИВыгрузить();
// Выборка = Запрос.ВыполнитьИВыбрать();
// МассивРезультатов = Запрос.ВыполнитьПакет();
// Булево = Запрос.Пустой();
#Область ПрограммныйИнтерейс
#Область УстановкаПараметров
Функция МенеджерВременныхТаблиц(МенеджерВременныхТаблиц = Неопределено) Экспорт
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Возврат ЭтотОбъект;
КонецФункции
Функция Текст(ТекстЗапроса = Неопределено) Экспорт
Текст = ТекстЗапроса;
Возврат ЭтотОбъект;
КонецФункции
Функция ПолучитьПараметры() Экспорт
Для каждого Параметр Из Запрос.НайтиПараметры() Цикл
Параметры.Вставить(Параметр.Имя, Параметр.ТипЗначения);
КонецЦикла;
Возврат ЭтотОбъект;
КонецФункции
Функция УстановитьПараметр(Имя, Значение) Экспорт
Параметры.Вставить(Имя, Значение);
Возврат ЭтотОбъект;
КонецФункции
Функция УстановитьПараметры(ПараметрыЗапроса = Неопределено) Экспорт
//Значит мы в программе прямо в Структуру "Параметры" добавляли
Если ПараметрыЗапроса = Неопределено Тогда
ПараметрыЗапроса = Параметры;
КонецЕсли;
Для каждого Параметр Из ПараметрыЗапроса Цикл
Параметры.Вставить(Параметр.Ключ, Параметр.Значение);
КонецЦикла;
Возврат ЭтотОбъект;
КонецФункции
Функция Выполнить() Экспорт
ПодготовитьЗапрос();
Возврат ЭтотОбъект;
КонецФункции
Функция Очистить() Экспорт
Конструктор();
Возврат ЭтотОбъект;
КонецФункции
#КонецОбласти
#Область РезультатЗапроса
Функция ВыполнитьИВыбрать(ТипОбхода = Неопределено) Экспорт
ПодготовитьЗапрос();
Возврат ЭтотОбъект.Результат.Выбрать(ТипОбхода);
КонецФункции
Функция ВыполнитьИВыгрузить(ТипОбхода = Неопределено) Экспорт
ПодготовитьЗапрос();
Возврат ЭтотОбъект.Результат.Выгрузить(ТипОбхода);
КонецФункции
Функция ВыполнитьПакет(ТипОбхода = Неопределено) Экспорт
ПакетныйЗапрос = Истина;
ПодготовитьЗапрос(ПакетныйЗапрос);
Возврат ЭтотОбъект.Результат;
КонецФункции
Функция Пустой() Экспорт
ПодготовитьЗапрос();
Возврат ЭтотОбъект.Результат.Пустой();
КонецФункции
#КонецОбласти
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Процедура ПодготовитьЗапрос(Пакетный = Ложь)
Запрос.Текст = Текст;
Для каждого Параметр Из Параметры Цикл
Запрос.УстановитьПараметр(Параметр.Ключ, Параметр.Значение);
КонецЦикла;
Если Пакетный Тогда
Результат = ЭтотОбъект.Запрос.ВыполнитьПакет();
Иначе
Результат = ЭтотОбъект.Запрос.Выполнить();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область Конструктор
Процедура Конструктор()
Запрос = Новый Запрос;
Параметры = Новый Структура;
Результат = Неопределено;
КонецПроцедуры
Конструктор();
#КонецОбласти