Имя: Пароль:
1C
 
многовариантный запрос
,
0 Дебет
 
15.01.16
06:13
подскажите что делаю не так?

    запрос.Текст= "ВЫБРАТЬ
                  |    ПлатежноеПоручение.Ссылка,
                  |    ПлатежноеПоручение.Дата,
                  |    ПлатежноеПоручение.ДатаОплаты
                  |ИЗ
                  |    Документ.ПлатежноеПоручение КАК ПлатежноеПоручение
                  |ГДЕ" +
                   Если Флажок2 Тогда +
                 " |ПлатежноеПоручение.ДатаОплаты МЕЖДУ &Дата И &Дата2";

                   Иначе +  
"|ПлатежноеПоручение.Дата МЕЖДУ &Дата И &Дата2
                  |    И ПлатежноеПоручение.ДатаОплаты <> &ПустаяДата";
  
                  КонецЕсли;
1 Godofsin
 
15.01.16
06:14
))))))
2 Godofsin
 
15.01.16
06:15
Условие вынеси из текста )))))
3 Дебет
 
15.01.16
06:15
(2) запрос меняться должен в зависимости от условия
4 Godofsin
 
15.01.16
06:17
(3) =)

ТекстЗапроса= "ВЫБРАТЬ
                  |    ПлатежноеПоручение.Ссылка,
                  |    ПлатежноеПоручение.Дата,
                  |    ПлатежноеПоручение.ДатаОплаты
                  |ИЗ
                  |    Документ.ПлатежноеПоручение КАК ПлатежноеПоручение
                  |ГДЕ";

     Если Флажок2 Тогда
                ТекстЗапроса = ТекстЗапроса + " |ПлатежноеПоручение.ДатаОплаты МЕЖДУ &Дата И &Дата2";

                  ТекстЗапроса = ТекстЗапроса +  
"|ПлатежноеПоручение.Дата МЕЖДУ &Дата И &Дата2
                  |    И ПлатежноеПоручение.ДатаОплаты <> &ПустаяДата";
  
    КонецЕсли;
Запрос.Текст = ТекстЗапроса;
5 Godofsin
 
15.01.16
06:17
(4) Иначе забыл после  ТекстЗапроса = ТекстЗапроса + " |ПлатежноеПоручение.ДатаОплаты МЕЖДУ &Дата И &Дата2";
6 Godofsin
 
15.01.16
06:18
и все даже проще
7 Godofsin
 
15.01.16
06:19
ТекстЗапроса= "ВЫБРАТЬ
                  |    ПлатежноеПоручение.Ссылка,
                  |    ПлатежноеПоручение.Дата,
                  |    ПлатежноеПоручение.ДатаОплаты
                  |ИЗ
                  |    Документ.ПлатежноеПоручение КАК ПлатежноеПоручение
                  |ГДЕ
                  |ПлатежноеПоручение.ДатаОплаты МЕЖДУ &Дата И &Дата2";
     Если НЕ Флажок2 Тогда
                ТекстЗапроса = ТекстЗапроса + "|    И ПлатежноеПоручение.ДатаОплаты <> &ПустаяДата";
  
    КонецЕсли;
Запрос.Текст = ТекстЗапроса;
8 Дебет
 
15.01.16
06:22
(7) спасибо
9 VladZ
 
15.01.16
06:22
(7) См. первоначальный запрос. Там в зависимости от значение реквизита Флажок2  условие либо по реквизиту "ДатаОплаты", либо по "Дата".
10 Godofsin
 
15.01.16
06:24
(9) Точно. Тогда (4)
11 Sammo
 
15.01.16
07:00
Либо вместо
Если флажок2
использовать ?(флажок2 ,,)

Теоретически можно было бы внести сам флажок в запрос и в зависимости от него рулить условиями, но в данном случае не стоит, имхо.
12 Web00001
 
15.01.16
07:04
Два варианта
1. в тексте запроса: "<<ЗдесьДолжноБытьУсловие>>" а потом стрЗаменить на нужное.
2. Если 8.3 можно использовать объектную модель запроса
13 VladZ
 
15.01.16
08:02
(12) Вариант 1 отлаживать неудобно. Я обычно использую

"ВЫБРАТЬ
                  |    ПлатежноеПоручение.Ссылка,
                  |    ПлатежноеПоручение.Дата,
                  |    ПлатежноеПоручение.ДатаОплаты
                  |ИЗ
                  |    Документ.ПлатежноеПоручение КАК ПлатежноеПоручение
                  |ГДЕ 1 = 1";

Потом уже через стрЗаменить меняю на то, что должно быть.  
В принципе, для небольших запросов и твой вариант пойдет.