![]() |
#6 |
Участник
|
Вот полный код. Пытался разбивать на 2 транзакции, то же самое...
X++: public void DoCopy() { LedgerJournalTrans ljt1; LedgerJournalTrans ljt2; LedgerJournalTrans ljt3; CustVendPaymJournalFee cv1; CustVendPaymJournalFee cv2; LedgerJournalTable ljt; NumberSequenceTable numberSequenceTable; NumberSequenceCode nsc; Voucher voucher; LedgerVoucher ledgerVoucher; it = new MapIterator(paMarked); while (it.more()) { ttsbegin; ljt = LedgerJournalTable::findByJournalNum(JN); nsc = numberSequenceTable::find(ljt.NumberSequenceTable).NumberSequence; voucher = NumberSeq::newGetNumFromCode(nsc).num(); ljt1 = LedgerJournalTrans::findRecId(it.key(), false); ljt2.data(ljt1); ljt2.TransDate = ljt.NASLedgerJourDate; ljt2.Voucher = voucher; ljt2.JournalNum = JN; if(_Reverse) { ljt2.AmountCurDebit = ljt2.AmountCurDebit * -1; ljt2.AmountCurCredit = ljt2.AmountCurCredit * -1; } if (!ljt2.validateWrite()) { throw Exception::Error; } ljt2.insert(); //ttscommit; //ttsbegin; //ljt3 = LedgerJournalTrans::find(JN, voucher, false); while select cv1 where cv1.RefRecId == ljt1.RecId { //cv2.data(cv1); buf2Buf(cv1, cv2); //cv2.RefRecId = ljt3.RecId; cv2.RefRecId = ljt2.RecId; if (!cv2.validateWrite()) { throw Exception::Error; } cv2.insert(); } ttscommit; it.next(); } } |
|