07.10.2004, 15:00 | #1 |
Участник
|
Разные запросы в 2-х и 3-х уровневой конфигурациях. Что делать?!
Многоуважаемая публика. Столкнулась со странной ситуацией: при формировании отчета в 2-х и в 3-х уровневых конфигурациях Axapta отправляет на SQL-сервер разные (!) запросы.
В 2-х уровневой версии запрос уходит на сервер вот в таком виде: SELECT A.VOUCHER,A.TRANSDATE,A.BGR_INVENTTRANSID,SUM(B.AMOUNTMST),SUM(B.AMOUNTCUR),B.ACCOUNTNUM,B.CREDITING,B.VOUCHER,B.TRANSDATE,B.BGR_INVENTTRANSID FROM LEDGERTRANS A,LEDGERTRANS B WHERE ((A.DATAAREAID='bgr') AND ((((((((A.TRANSDATE>={ts '2004-06-01 00:00:00.000'}) AND (A.TRANSDATE<={ts '2004-06-30 00:00:00.000'})) AND NOT ((A.BONDBATCH_RU=' '))) AND NOT ((A.BONDBATCHTRANS_RU=0))) AND ((A.PERIODCODE>=1) AND (A.PERIODCODE<=2))) AND NOT ((A.POSTING=19))) AND (A.VOUCHER=' ВП-00000060')) AND ((((((((((A.TRANSTYPE=0) OR (A.TRANSTYPE=3)) OR (A.TRANSTYPE=14)) OR (A.TRANSTYPE=16)) OR (A.TRANSTYPE=19)) OR (A.TRANSTYPE=20)) OR (A.TRANSTYPE=82)) OR (A.TRANSTYPE=80)) OR (A.TRANSTYPE=9)) OR (A.TRANSTYPE=99)))) AND ((B.DATAAREAID='bgr') AND (((B.RECID<>A.RECID) AND (A.BONDBATCH_RU=B.BONDBATCH_RU)) AND (A.BONDBATCHTRANS_RU=B.BONDBATCHTRANS_RU))) GROUP BY A.VOUCHER,A.TRANSDATE,A.BGR_INVENTTRANSID,B.ACCOUNTNUM,B.CREDITING,B.VOUCHER,B.TRANSDATE,B.BGR_INVENTTRANSID ORDER BY A.VOUCHER,A.TRANSDATE,A.BGR_INVENTTRANSID,B.ACCOUNTNUM,B.CREDITING,B.VOUCHER,B.TRANSDATE,B.BGR_INVENTTRANSID OPTION(FAST 19) А в 3-уровневой, вот в таком: SELECT A.VOUCHER,A.TRANSDATE,A.BGR_INVENTTRANSID,SUM(B.AMOUNTMST),SUM(B.AMOUNTCUR),B.ACCOUNTNUM,B.CREDITING,B.VOUCHER,B.TRANSDATE,B.BGR_INVENTTRANSID FROM LEDGERTRANS A,LEDGERTRANS B WHERE ((A.DATAAREAID='bgr') AND ((((((((A.TRANSDATE>={ts '2004-06-01 00:00:00.000'}) AND (A.TRANSDATE<={ts '2004-06-30 00:00:00.000'})) AND NOT ((A.BONDBATCH_RU=' '))) AND NOT ((A.BONDBATCHTRANS_RU=0))) AND ((A.PERIODCODE>=1) AND (A.PERIODCODE<=2))) AND NOT ((A.POSTING=19))) AND (A.VOUCHER=' ВП-00000060')) AND (((((((((A.TRANSTYPE=3) OR (A.TRANSTYPE=14)) OR (A.TRANSTYPE=16)) OR (A.TRANSTYPE=19)) OR (A.TRANSTYPE=20)) OR (A.TRANSTYPE=82)) OR (A.TRANSTYPE=80)) OR (A.TRANSTYPE=9)) OR (A.TRANSTYPE=99)))) AND ((B.DATAAREAID='bgr') AND (((B.RECID<>A.RECID) AND (A.BONDBATCH_RU=B.BONDBATCH_RU)) AND (A.BONDBATCHTRANS_RU=B.BONDBATCHTRANS_RU))) GROUP BY A.VOUCHER,A.TRANSDATE,A.BGR_INVENTTRANSID,B.ACCOUNTNUM,B.CREDITING,B.VOUCHER,B.TRANSDATE,B.BGR_INVENTTRANSID ORDER BY A.VOUCHER,A.TRANSDATE,A.BGR_INVENTTRANSID,B.ACCOUNTNUM,B.CREDITING,B.VOUCHER,B.TRANSDATE,B.BGR_INVENTTRANSID OPTION(FAST 19) Разница отмечена жиным шрифтом: в 2-х уровневой конфигурации добавляется лишний фильтр, который совсем даже не лишний..... Причем, если идти по циклу в дебагере, то фильтр добавляется в обеих конфигурациях. А на SQL-сервер в итоге уходят разные запросы! УЖАС! Кто-нибудь сталкивался с таким? Знает как бороться?!
__________________
Улыбаемся и машем, парни! Улыбаемся и машем... |
|