Показать сообщение отдельно
Старый 11.04.2007, 10:51   #1  
Owl83 is offline
Owl83
Участник
 
14 / 10 (1) +
Регистрация: 18.12.2006
Баг в сопоставлении открытых проводок
И снова салют вам, уважаемые коллеги!

Сегодня во время археологических раскопок кода обнаружил в методе \Classes\CustVendSettle_Vend\postAmountDiffTrans_RU один очень любопытный фрагмент. (Этот метод вызывается в процессе сопоставления открытых проводок по клиенту)

Код:
    maxCount = (select count (RecId) from VendInvoiceTrans
                    where VendInvoiceTrans.PurchID             == _vendInvoiceJour.Num                &&
                          VendInvoiceTrans.InvoiceId           == _vendInvoiceJour.InvoiceId          &&
                          VendInvoiceTrans.InvoiceDate         == _vendInvoiceJour.InvoiceDate        &&
                          VendInvoiceTrans.numberSequenceGroup == _vendInvoiceJour.NumberSequenceGroupId).RecId;
     postMarkup (tableNum(VendInvoiceJour),_vendInvoiceJour.RecId,_vendInvoiceJour.Dimension);
     while select vendInvoiceTrans
               where vendInvoiceTrans.PurchID             == _vendInvoiceJour.Num                   &&
                     vendInvoiceTrans.InvoiceId           == _vendInvoiceJour.InvoiceId             &&
                     vendInvoiceTrans.InvoiceDate         == _vendInvoiceJour.InvoiceDate           &&
                     vendInvoiceTrans.numberSequenceGroup == _vendInvoiceJour.NumberSequenceGroupId
{
....
}
Переменная _vendInvoiceJour типа custVendInvoiceJour передается в метод в качестве параметра.
Подозреваю, что это цикл по строкам накладной.
Но вот ведь незадача - набор полей для фильтрации неуникальный!
Получается так, что в цикл могут попасть строки нескольких накладных.

Есть мнение, что русские кодеры, программировавшие этот метод мягко говоря ошиблись, и связывать тыблицы нужно было по InernalInvoiceId

Собственно, о чем я...

Кто что может сказать по этому поводу?