Странное поведение в запросе, 7.7

puh14

Well-known member
11.07.2008
1 412
0
#1
Вот казалось бы два одинаковых по смыслу условия
вводные:
ТекущаяДата = ТекущаяДата();
Документ - какой то объявленный документ в запросе


Условие ((ТекущаяДата - Документ.ДатаДок)>30);


и

Условие ((Документ.ДатаДок + 30)< ТекущаяДата);

Только первый синтаксис не работает (выводит 1 документ из 300. Но выводит блин!!!), а второй - работает. :please:
Но это в запросе - без запроса оба варианта работают корректно. Больше часа убил пока искал косяк в запросе на пять строк.
Шайтан, однако!

З.Ы. Вроде была тема с найденными глюками платформы - не нашел. Если кто помнит, киньте в меня ссылкой.
 

vitfil

IT-интегратор
02.04.2004
2 062
0
#2
надо смотреть в профайлере, во что 1С переводит первый запрос. иногда просто диву даешься, как она интрипертирует казалось бы простые запросы.
 

puh14

Well-known member
11.07.2008
1 412
0
#3
Это согласен. Для интереса вечерком гляну - когда народа не будет.
 

vbs

Well-known member
18.02.2007
1 708
1
#4
А как ведет себя запрос в таком варианте :

Условие ((Дата(ТекущаяДата) - Дата(Документ.ДатаДок))>30);

Бредовая мысль, конечно, но часто такое помогает
 

vbs

Well-known member
18.02.2007
1 708
1
#6
Ну, еще надежнее. Вероятнее всего, вылечат оба варианта

У меня как-то был косяк при поиске в ТЗ - так пока не превратил в число счетчик и сравниваемое значение, не работало - и все :)
Если Число(Счетчик) = Число(1) Тогда...

А
Если Счетчик = 1 Тогда...

не срабатывало...
 
H

Hryv

#7
Да уж неявный тип переменных в 7.7 это больное место

с числами я павда не припоминаю проблем, а вот СокрЛП() леплю где надо и где не надо, для надежности
 

vitfil

IT-интегратор
02.04.2004
2 062
0
#8
Я вообще не очень люблю не строго типизированные языки.
 

puh14

Well-known member
11.07.2008
1 412
0
#9
Да - преобразования в число и преобразования в дату помогли. Что там на скуль отправляется в нерабочем варианте гляну вечером.
 

vitfil

IT-интегратор
02.04.2004
2 062
0
#10
Подозреваю, что в запросе 1С преобразует значение переменной ТекущаяДата к строке...
Что-то мне подсказывает, что условие
Условие ((ТекущаяДата - Документ.ДатаДок)>30);
не работает по причине того, что первый параметр - строка, как ей кажется.