Имя: Пароль:
1C
1C 7.7
v7: 1SQLite Запрос, не срабатывают условия.
0 botman4
 
05.01.17
05:52
Есть документ "Заявка", в его табЧ добавляются различные документы, так же в Документе заявка есть ДатаОп ( не ДатаДок )
Хочется найти, использовался ли определенный документ в заявках в интервале дат ДатаОп.
Запрос отрабатывается без ошибок, но условия в нем не срабатывают, тупо выбираются все строки....
подскажите пож, где засада? спасибо.

Текстзапроса = "
|Select Заявка.IDDOC as [Заявка $Документ.Заявка], ДокументОснование as [Строка $Документ], Заявка.ДатаОп as [Дата $Дата] from
|ДокументСтроки.Заявка as Строки
|INNER JOIN Документ.Заявка as Заявка ON Заявка.IDDOC = Строки.IDDOC;
|WHERE Заявка.ДатаОп BETWEEN :ДатаНач AND :ДатаКон
|And ДокументОснование = :НужныйДок
|
|";
            
                
ПрЗапр = СоздатьОбъект("ПрямойЗапрос");                
ПрЗапр.УстановитьТекстовыйПараметр("ДатаНач", ТекущаяДата()-30);
ПрЗапр.УстановитьТекстовыйПараметр("ДатаКон", ТекущаяДата());
ПрЗапр.УстановитьТекстовыйПараметр("НужныйДок",Док);
1 Djelf
 
гуру
05.01.17
15:25
Что-то с парсером ПрямогоЗапроса, насколько помню в нем надо писать не
Select Заявка.IDDOC as [Заявка $Документ.Заявка]
а
Select $Заявка.IDDOC as [Заявка $Документ.Заявка]
Какой преобразованный текст запроса выводится при РежимОтладки=1?
И вообще лучше выбирать сначала Заявки, а потом к ним left join Строки т.к. sqlite может не понять что так будет быстрее и сначала будет просматривать все Строки без учета ограничения по дате.
И вот еще что "добавляются различные документы" значит ДокументОснование id13, а ты подставляешь id9. Если бы фильтр работал, запрос вообще ничего бы не выводил.
2 Salimbek
 
05.01.17
15:52
(0) Парсер сам не догадается, что ДокументОснование надо от таблицы Заявка вытаскивать.
Напиши Заявка.ДокументОснование=:НужныйДок
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.