Имя: Пароль:
1C
1С v8
Подскажите с запросом, как добавлять условия красиво?
0 Double_Medved
 
29.06.16
14:34
Добрый день!
Трудно описать ситуацию в заголовке, вот я делаю отчет. Выбираю я например документы за период, и есть у меня на форме отчета реквизит склад. Если он не заполнен - я выбираю все документы вне зависимости от склада, если заполнен - делаю отбор по складу. Как избежать вот такой уродской конструкции:
СтрокаСклад = ?(ЗначениеЗаполнено(Склад),"И ОтчетОРозничныхПродажах.Склад = &Склад","");         
    
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ОтчетОРозничныхПродажах.Ссылка.Склад,
    |    ОтчетОРозничныхПродажах.Ссылка,
    |    ОтчетОРозничныхПродажах.Дата
    |ИЗ
    |    Документ.ОтчетОРозничныхПродажах КАК ОтчетОРозничныхПродажах
    |ГДЕ
    |    ОтчетОРозничныхПродажах.Дата МЕЖДУ &ДатаНачало И &ДатаКонец
    |"+ СтрокаСклад + "
    |
    |СГРУППИРОВАТЬ ПО
    |    ОтчетОРозничныхПродажах.Ссылка,
    |    ОтчетОРозничныхПродажах.Дата

Я говорю конечно про СтрокаСклад = ?(ЗначениеЗаполнено(Склад),"И ОтчетОРозничныхПродажах.Склад = &Склад","");     
И
    |"+ СтрокаСклад + "

При таких вставках потом не заходит в конструктор и т.д. Можно это как-то решить через Запрос.УстановитьПараметр? Просто если склад пустой - то параметр будет пустой и выберутся не все склады, а ничего. Ну ведь есть какое-то красивое решение?
1 Numerus Mikhail
 
29.06.16
14:35
ВЫБОР КОГДА &Склад = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка) ТОГДА ИСТИНА ИНАЧЕ ОтчетОРозничныхПродажах.Склад = &Склад КОНЕЦ
2 Зая Бусечка
 
29.06.16
14:36
Для этого придуманы построитель и скд
3 sash-ml
 
29.06.16
14:38
&Склад = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка) или ОтчетОРозничныхПродажах.Склад = &Склад
4 В тылу врага
 
29.06.16
14:49
|ГДЕ
    |    ОтчетОРозничныхПродажах.Дата МЕЖДУ &ДатаНачало И &ДатаКонец
    |И &УсловиеСклад


ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"&УсловиеСклад",?(ЗначениеЗаполнено(Склад),"ОтчетОРозничныхПродажах.Склад = &Склад","ИСТИНА"));
5 Double_Medved
 
29.06.16
14:49
(1)О, збс, получилось! Спасибо
6 viktor_vv
 
29.06.16
15:28
И еще вариант

И (ОтчетОРозничныхПродажах.Склад = &Склад или &Склад = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка))
7 viktor_vv
 
29.06.16
15:28
(6)+ Тормоз, в (3) уже есть это .