1CLenta.ru  

Динамические условия в запросе

Программирование системы     06.01.2017 13:15     10300

Если требется в одном случае выполнить запрос с одними условиями в другом с другими, то для этого потребуется изменять текст запроса, а точнее его условия "ГДЕ". Ниже представлены несколько примеров как оптимально реализовать динамическое формирование условий запроса.

Вариант №1


Функция ВыполнениеЗапроса()

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Справочник1.Ссылка
|ИЗ
| Справочник.Справочник1 КАК Справочник1"
;

Если ЗначениеЗаполнено(Истина) Тогда

Запрос.Текст = Запрос.Текст + " ГДЕ Справочник1.Код = &Код";
Запрос.УстановитьПараметр("Код", "000001");

КонецЕсли;

РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();

Пока Выборка.Следующий() Цикл
// Вставить обработку выборки
КонецЦикла;

КонецФункции

Вариант №2


Заменяемую подстроку "&Условие1" удобно сделать как параметр, тогда запрос можно будет открывать с помощью конструктора.

Функция ВыполнениеЗапроса()

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Справочник1.Ссылка
|ИЗ
| Справочник.Справочник1 КАК Справочник1
|ГДЕ
| &Условие1"
;

Условие1 = "ИСТИНА";
Если ЗначениеЗаполнено(Истина) Тогда

Условие1 = " Справочник1.Код = &Код";
Запрос.УстановитьПараметр("Код", "000001");

КонецЕсли;
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&Условие1", Условие1);

РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();

Пока Выборка.Следующий() Цикл
// Вставить обработку выборки
КонецЦикла;

КонецФункции

Комментарии (0)