14.07.2008, 21:03 | #1 |
Участник
|
Поведение notexists
В классе LedgerJournalCheckPost/checkJournal есть такое место где проверяется, существует ли уже транзакция с таким номером ваучера и берется самая поздняя дата
X++: checkTransDate = (select maxof(TransDate) from ledgerTrans where ledgerTrans.Voucher like num).TransDate; Чтобы подкорректировать ситуацию, я добавил код X++: select firstonly TransDate, RecId from ledgerTrans order by TransDate desc notexists join transactionReversalTrans where ledgerTrans.Voucher like num && transactionReversalTrans.RefTableId == tablenum(LedgerTrans) && transactionReversalTrans.RefRecId == ledgerTrans.RecId && transactionReversalTrans.reversed == NoYes::Yes; В трейсере вижу X++: declare @p1 int set @p1=1073742163 declare @p2 int set @p2=180171631 declare @p5 int set @p5=16 declare @p6 int set @p6=1 declare @p7 int set @p7=1 exec sp_cursorprepexec @p1 output,@p2 output,N'@P1 nvarchar(8),@P2 nvarchar(8),@P3 nvarchar(42), @P4 int,@P5 int',N'SELECT TOP 1 A.TRANSDATE,A.RECID FROM LEDGERTRANS A WHERE (A.DATAAREAID=@P1) AND NOT EXISTS (SELECT TOP 1 ''x'' FROM TRANSACTIONREVERSALTRANS B WHERE ((B.DATAAREAID=@P2) AND ((((A.VOUCHER LIKE @P3 ESCAPE ''\'' ) AND (B.REFTABLEID=@P4)) AND (B.REFRECID=A.RECID)) AND (B.REVERSED=@P5)))) ORDER BY A.DATAAREAID DESC,A.TRANSDATE DESC', @p5 output,@p6 output,@p7 output,N'itz',N'itz',N'A08-0547',225,1 select @p1, @p2, @p5, @p6, @p7 X++: while select TransDate, RecId, Voucher from ledgerTrans order by TransDate desc where ledgerTrans.Voucher like num { if(!ledgerTrans.reversed()) { checkTransDate = ledgerTrans.TransDate; break; } } Kernel 4.0.2163.0 SP2 Localization: Eastern Europe |
|
14.07.2008, 21:21 | #2 |
----------------
|
Аксапта просто дословно перевела, что вы ей написали.
У вас условие фильтрации like стоит в условиях объединения, вот на сервер так и ушло. X++: select firstonly TransDate, RecId from ledgerTrans order by TransDate desc where ledgerTrans.Voucher like num notexists join transactionReversalTrans where transactionReversalTrans.RefTableId == tablenum(LedgerTrans) && transactionReversalTrans.RefRecId == ledgerTrans.RecId && transactionReversalTrans.reversed == NoYes::Yes; |
|
|
За это сообщение автора поблагодарили: sgt.Pepper (1). |
15.07.2008, 12:05 | #3 |
Участник
|
Спасибо, работает :-)
|
|