Имя: Пароль:
1C
1С v8
Вопрос про запросы
,
0 Майбах
 
06.09.15
18:48
Подскажите, как сделать так, что если даты Начало периода и конец периода на форме не заполнены то запрос бы выводил все документы. А если заполнены только за указанный период, Начало периода и конец периода - это параметры в запросе.

|ГДЕ
                   |    РеализацияТоваровУслуг.Дата МЕЖДУ &НачалоПериода И &КонецПериода
1 jsmith82
 
06.09.15
18:54
|ГДЕ
|    %УсловиеДата";

Если ЗначениеЗаполнено(КонецПериода) И КонецПериода >= НачалоПериода Тогда
    СтрЗаменить(Запрос.Текст, "%УсловиеДата", "РеализацияТоваровУслуг.Дата МЕЖДУ &НачалоПериода И &КонецПериода");
    Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода);
    Запрос.УстановитьПараметр("КонецПериода", КонецПериода);
Иначе
    СтрЗаменить(Запрос.Текст, "%УсловиеДата", "ИСТИНА");    
КонецЕсли;
2 GROOVY
 
06.09.15
19:22
|ГДЕ
|    РеализацияТоваровУслуг.Дата МЕЖДУ &НачалоПериода И &КонецПериода И (&НачалоПериода <> ДАТАВРЕМЯ(1,1,1) И &КонецПериода <> ДАТАВРЕМЯ(1,1,1))
3 jsmith82
 
06.09.15
19:23
Тогда уж так
|ГДЕ
|    РеализацияТоваровУслуг.Дата МЕЖДУ &НачалоПериода И &КонецПериода И (&КонецПериода <> ДАТАВРЕМЯ(1,1,1) И &КонецПериода <> &НачалоПериода)
4 jsmith82
 
06.09.15
19:24
Так-то в (1) быстрее будет работать, но у тебя красивей, ага.
5 Майбах
 
06.09.15
19:38
Не работает)
6 Майбах
 
06.09.15
19:39
Запрос.Текст = "ВЫБРАТЬ
                   |    ОплатаПлатежнойКартой.Ссылка КАК СсылкаДокумент,
                   |    ОплатаПлатежнойКартой.Дата КАК ДатаДокумента
                   |ПОМЕСТИТЬ ВТ_ДокументыДляПерепроведения
                   |ИЗ
                   |    Документ.ОплатаПлатежнойКартой КАК ОплатаПлатежнойКартой
                   |ГДЕ
                   |    ВЫБОР
                   |            КОГДА &Организация = ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)
                   |                ТОГДА ИСТИНА
                   |            ИНАЧЕ ОплатаПлатежнойКартой.Организация = &Организация
                   |        КОНЕЦ
                   |    И ОплатаПлатежнойКартой.Дата МЕЖДУ &НачалоПериода И &КонецПериода
                   |    И &НачалоПериода <> ДАТАВРЕМЯ(1, 1, 1)
                   |    И &КонецПериода <> ДАТАВРЕМЯ(1, 1, 1)
                   |    И ВЫБОР
                   |            КОГДА &ТолькоПроведенные
                   |                ТОГДА ОплатаПлатежнойКартой.Проведен = ИСТИНА
                   |            ИНАЧЕ ИСТИНА
                   |        КОНЕЦ
                   |    И ОплатаПлатежнойКартой.ВидОперации = &ВидОперации
                   |    И НЕ ОплатаПлатежнойКартой.ПометкаУдаления
7 GROOVY
 
06.09.15
20:11
(6) Скобки не забывай, у то у тебя равный приоритет и взаимоисключающие условия.
8 Armando
 
06.09.15
20:15
Про {} все забыли?
9 Майбах
 
06.09.15
20:18
GROOVY конструктор запроса убирает скобки)
10 GROOVY
 
06.09.15
20:28
(9) Пиши руками.
(8) Это же вопрос не про СКД.
11 Armando
 
06.09.15
21:00
(10) в обычных тоже работает
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn