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

  • Автор темы puh14
  • Дата начала
P

puh14

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


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


и

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

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

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

vitfil

надо смотреть в профайлере, во что 1С переводит первый запрос. иногда просто диву даешься, как она интрипертирует казалось бы простые запросы.
 
P

puh14

Это согласен. Для интереса вечерком гляну - когда народа не будет.
 
V

vbs

А как ведет себя запрос в таком варианте :

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

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

vitfil

А как ведет себя запрос в таком варианте :

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

Бредовая мысль, конечно, но часто такое помогает
Я бы вместо Дата() поставил бы Число()
 
V

vbs

Ну, еще надежнее. Вероятнее всего, вылечат оба варианта

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

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

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

Hryv

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

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

vitfil

Я вообще не очень люблю не строго типизированные языки.
 
P

puh14

Да - преобразования в число и преобразования в дату помогли. Что там на скуль отправляется в нерабочем варианте гляну вечером.
 
V

vitfil

Подозреваю, что в запросе 1С преобразует значение переменной ТекущаяДата к строке...
Что-то мне подсказывает, что условие
Условие ((ТекущаяДата - Документ.ДатаДок)>30);
не работает по причине того, что первый параметр - строка, как ей кажется.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!