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