|
![]() |
#1 |
Участник
|
Верхнюю половину метода написал один человек; нижнюю - другой, не глядя на верхнюю, и - внимание - ловко "оптимизировал" код использовав список полей. BestPractice ошибок нет - все отлично. Это из стандартного кода AX 2012.
CustWriteOff\checkForDuplicateVouchers X++: protected boolean checkForDuplicateVouchers(Voucher _voucher, TransDate _transDate, recId _existingCustTransRecId) { boolean found; VendTrans vendTrans; // check for duplicate customer transaction found = (select firstonly RecId from custTrans where custTrans.Voucher == _voucher && custTrans.TransDate == _transDate && custTrans.RecId != _existingCustTransRecId).RecId != 0; if (found == true) { return true; } // check for duplicate vendor transactions select count(RecId) from vendTrans where vendTrans.Voucher == _voucher && vendTrans.TransDate == _transDate; found = vendTrans.ReasonRefRecId == 0 ? false : true; return found; } |
|
|
За это сообщение автора поблагодарили: kashperuk (5). |
![]() |
#2 |
Участник
|
Napalm, а расскажите подробнее про эту находку.
Где и как столкнулись? Я посмотрел, и этот код там существовал в таком виде с декабря 2008 года. Раз до этого не заметили (а я проверил - не заметили), то скорее всего никто из кастомеров с этим не сталкивался |
|
![]() |
#3 |
Участник
|
Цитата:
Скорее всего проблемы будут если этот код "починить". Какой смысл искать дубликаты в VendTrans по полю Voucher, используя значение Voucher из CustTrans? Возможно будут ложные срабатывания - зависит от настройки номерных серий. |
|
![]() |
#4 |
Участник
|
AX2012
\Classes\CustAutoCreate\setCustTable
X++: protected void setCustTable() { NumberSeq num; ; custTable.clear(); custTable.initValue(); custTable.data(CustTable::find(templateCustAccount)); if (custAccount) { custTable.AccountNum = custAccount; } else { custTable.AccountNum = NumberSeq::newGetNum(CustParameters::numRefCustAccount()).num(); } if (CustTable::exist(custTable.AccountNum)) { if (num) { num.abort(); checkFailed("@SYS59641"); } checkFailed("@SYS59639", custTable.AccountNum); throw error("@SYS23020"); } if (num) { num.used(); } }
__________________
_databaseTransDelete ... bl@$ ! |
|
|
За это сообщение автора поблагодарили: macklakov (1). |