|
Отбор в запросе по полю |
☑ |
0
ultrannge89
08.07.13
✎
10:31
|
Наверное не раз обсуждало, но все же задам.
Имеется запрос, результат которого надо вывести в табличную часть. Нужно сделать отбор для запроса, желательно на уровне самого запроса. Чтобы в случае если поле не заполнено выдавался результат без отбора, а если поле заполнено по нему.
Запрос имеет вид.
Запрос.Текст ="ВЫБРАТЬ
| Ю_Лимиты.Сотрудник,
| Ю_Лимиты.ВидЛимита,
| Ю_Лимиты.Сумма,
| Ю_Лимиты.Регистратор.Ссылка КАК Документ
|ИЗ
| РегистрСведений.Ю_Лимиты КАК Ю_Лимиты
|ГДЕ
| Ю_Лимиты.Период = &Период
| И Ю_Лимиты.ВидЛимита = &ОтборЛимита";
|
|
1
ale-sarin
08.07.13
✎
10:33
|
Верно - "не раз обсуждало". И все равно лень искать, да?
|
|
2
Cube
08.07.13
✎
10:33
|
Выбор Когда тебе в помощь
|
|
3
Галахад
гуру
08.07.13
✎
10:33
|
И
(Ю_Лимиты.ВидЛимита = &ОтборЛимита или &ОтборПоЛимитуНЕзаполенен)
|
|
4
andreymongol82
08.07.13
✎
10:35
|
В текст запроса вместо
"| И Ю_Лимиты.ВидЛимита = &ОтборЛимита"
Добавить что-то вроде
| И %ДопУсловие%
Потом в коде уже, если реквизит заполнен, то
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"%ДопУсловие%","ИСТИНА"),
Если заполнен, то тогда стрзаменить(ТекстЗапроса,"%ДопУсловие%","Ю_Лимиты.ВидЛимита = &ОтборЛимита")
|
|
5
Cube
08.07.13
✎
10:40
|
(4) %ДопУсловие% вообще там лишнее...
|
|
6
chelentano
08.07.13
✎
10:44
|
(0) построитель запроса чем не устраивает?
|
|
7
andreymongol82
08.07.13
✎
11:09
|
(5) Именно в этом лишнее, да. А так, если возникнет куча других запросов, соединений, то может пригодиться.
|
|
8
ultrannge89
08.07.13
✎
12:33
|
А вот так может проканать?
ТекДата = ТекущаяДата();
Запрос = Новый Запрос;
ДопУсловие = "";
Если ЗначениеЗаполнено(ВидЛимита) Тогда
ДопУсловие = "И Ю_Лимиты.ВидЛимита = &ОтборЛимита";
Запрос.УстановитьПараметр("ОтборЛимита", ВидЛимита);
КонецЕсли;
ДопУсловие1 = "";
Если ЗначениеЗаполнено(СрезДаты) Тогда
ДопУсловие1 = "Ю_Лимиты.Период = &Период";
Запрос.УстановитьПараметр("Период", СрезДаты);
Иначе
ДопУсловие1 = "Ю_Лимиты.Период = &Период";
Запрос.УстановитьПараметр("Период", ТекДата);
КонецЕсли;
Запрос.Текст ="ВЫБРАТЬ
| Ю_Лимиты.Сотрудник,
| Ю_Лимиты.ВидЛимита,
| Ю_Лимиты.Сумма,
| Ю_Лимиты.Регистратор.Ссылка КАК Документ
|ИЗ
| РегистрСведений.Ю_Лимиты КАК Ю_Лимиты
|ГДЕ "+ДопУсловие1 +ДопУсловие;
|
|
9
Cube
09.07.13
✎
05:11
|
(8) Не занимайся ерундой, используй (2) или (3).
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший