0
sendems
26.10.12
✎
18:33
|
Привет, товарищи.
Есть такой прямой запрос, который прекрасно работал:
|SELECT
| Рег.DATE AS ДатаДень,
| SUM(-1*$Рег.Прибыль*(1-Рег.DEBKRED*2)) AS ПрибыльТовара
|FROM
| $Регистр.ПартииТоваров AS Рег
|WHERE
| ($Рег.Товар+DTOS(Рег.DATE)+Рег.TIME+Рег.IDDOC+STR(Рег.LINENO,4)+STR(Рег.ACTNO,6) BETWEEN
| :выбТовар+DTOS(:Дата1~~)+' '+' '+'0000'+'000000' AND
| :выбТовар+DTOS(:Дата2~~)+'ZZZZZZ'+'ZZZZZZZZZ'+'9999'+'999999') AND
| (Рег.IDDOCDEF NOT IN ($ВидДокумента.Перемещение,$ВидДокумента.Списание)) AND
| ($Рег.Статус IN (:СП1,:СП2,:СП3,:СП4,:СП5)) AND
| ($Рег.Фирма = :выбФирма)
|GROUP BY
| Рег.DATE
|";
Потом мне захотелось выбрать все движения в регистре по всем товарам за тот же период, переписал условие BETWEEN так:
| ($Рег.Товар+DTOS(Рег.DATE)+Рег.TIME+Рег.IDDOC+STR(Рег.LINENO,4)+STR(Рег.ACTNO,6) BETWEEN
| ' '+DTOS(:Дата1~~)+' '+' '+'0000'+'000000' AND
| 'ZZZZZZZZ'+DTOS(:Дата2~~)+'ZZZZZZ'+'ZZZZZZZZZ'+'9999'+'999999')
т.е. просто заменил конкретный товар на строки в 9 знаков длиной, как описано в .DD
Так вот по-новому, запрос не фильтрует по датам и вываливает все движения за все время.
Может индекс так не умеет работать? Или я еще чего не знаю, просветите.
|
|