|
Отбор в запросе по полю | ☑ | ||
---|---|---|---|---|
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).
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |