![]() |
#8 |
Lean Six Sigma
|
Если такие ошибки часто появляются, то:
X++: void merge(RecId mainRecordId,RecId secondRecordId) { CustTable _tableMain; CustTable _tableLine; SalesJournalAutoSummary journalSummary; SalesPrintCopies printCopies; CustBankAccount custBankAccount; RContractTable contractTable; RContractTable contractTableNew; LedgerBalancesDimTrans dimTrans; Dimensions dim, dimNew; ; startLengthyOperation(); ttsbegin; select forUpdate _tableMain where _tableMain.RecId == mainRecordId; if (_tableMain.RecId == 0) { ttsabort; throw error('??? ??????? ??????!'); } select forUpdate _tableLine where _tableLine.RecId == secondRecordId; if (_tableLine.RecId != 0) { delete_from journalSummary where journalSummary.CustAccount == _tableLine.AccountNum; delete_from printCopies where printCopies.CustAccount == _tableLine.AccountNum; delete_from custBankAccount where custBankAccount.CustAccount == _tableLine.AccountNum; while select forUpdate contractTable where contractTable.RContractPartnerType == RContractPartnerType::Cust && contractTable.RContractPartnerCode == _tableLine.AccountNum exists join contractTableNew where contractTableNew.RContractPartnerType == RContractPartnerType::Cust && contractTableNew.RContractPartnerCode == _tableMain.AccountNum && contractTableNew.RContractAccount == contractTable.RContractAccount && contractTableNew.RContractCode == contractTable.RContractCode { contractTable.delete(); } select forUpdate dimNew where dimNew.DimensionCode == SysDimension::Partner && dimNew.Num == _tableMain.AccountNum; if (dim.RecId == 0 || dimNew.RecId == 0) { ttsabort; throw error('?? ??????? ?????????, ??????????????? ????????????!'); } _tableLine.merge(_tableMain); dim.merge(dimNew); } ttscommit; endLengthyOperation(); } |
|