Показать сообщение отдельно
Старый 14.09.2015, 15:24   #6  
syl is offline
syl
Участник
Аватар для syl
 
236 / 21 (1) +++
Регистрация: 10.06.2015
Адрес: Киев
Вот полный код. Пытался разбивать на 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();
    }
}