Уведомления
Очистить все

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

1 Записи
1 Пользователи
0 Likes
384 Просмотры
161-150x150 Okolokompa Форум
 bga
(@bga)
Eminent Member
Присоединился: 4 года назад
Записи: 11
Создатель темы  

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

Вариант №1

 

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

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

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

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

КонецЕсли;

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

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

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

 

Вариант №2

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

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

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

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

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

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

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

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

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

   
Цитата
Поделиться: