И снова салют вам, уважаемые коллеги!
Сегодня во время археологических раскопок кода обнаружил в методе \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
Собственно, о чем я...
Кто что может сказать по этому поводу?