Если требется в одном случае выполнить запрос с одними условиями в другом с другими, то для этого потребуется изменять текст запроса, а точнее его условия "ГДЕ". Ниже представлены несколько примеров как оптимально реализовать динамическое формирование условий запроса.
Вариант №1
Функция ВыполнениеЗапроса() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Справочник1.Ссылка |ИЗ | Справочник.Справочник1 КАК Справочник1"; Если ЗначениеЗаполнено(Истина) Тогда Запрос.Текст = Запрос.Текст + " ГДЕ Справочник1.Код = &Код"; Запрос.УстановитьПараметр("Код", "000001"); КонецЕсли; РезультатЗапроса = Запрос.Выполнить(); Выборка = РезультатЗапроса.Выбрать(); Пока Выборка.Следующий() Цикл // Вставить обработку выборки КонецЦикла; КонецФункции
Вариант №2 Заменяемую подстроку "&Условие1" удобно сделать как параметр, тогда запрос можно будет открывать с помощью конструктора.
Функция ВыполнениеЗапроса() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Справочник1.Ссылка |ИЗ | Справочник.Справочник1 КАК Справочник1 |ГДЕ | &Условие1"; Условие1 = "ИСТИНА"; Если ЗначениеЗаполнено(Истина) Тогда Условие1 = " Справочник1.Код = &Код"; Запрос.УстановитьПараметр("Код", "000001"); КонецЕсли; Запрос.Текст = СтрЗаменить(Запрос.Текст, "&Условие1", Условие1); РезультатЗапроса = Запрос.Выполнить(); Выборка = РезультатЗапроса.Выбрать(); Пока Выборка.Следующий() Цикл // Вставить обработку выборки КонецЦикла; КонецФункции
|