|
![]() |
#1 |
Программатор
|
Отсторнировать документ ГК программно
Добрый день!!
Кто нибудь может кинуть кусок кода, который бы сторнировал документ ГК по такому то ваучеру (чтоб корреспонденция есчо проходила при этом). Искал на форуме но чтот не нашол. Заранее спасибо. |
|
![]() |
#2 |
Member
|
Посмотрите в 4.0. Там есть такое. Как работает — не смотрел. Но вдруг это то, что вам нужно.
__________________
С уважением, glibs® |
|
![]() |
#3 |
Программатор
|
а где там???
|
|
![]() |
#4 |
Member
|
ГК\План счетов, кнопка Операции, кнопка Сторнировать операцию.
__________________
С уважением, glibs® |
|
![]() |
#5 |
Программатор
|
Заморочено
![]() ![]() |
|
![]() |
#6 |
NavAx
|
смотрите джобы
tutorial_BondTestJob_RU tutorial_BondDateTestJob_RU признак коррекции можно так установить ledgerVoucher.findLedgerVoucherObject().parmCorrection(true); |
|
![]() |
#7 |
Программатор
|
Не кидайте камнями. Хочу сначала просто чтоб в новый Документ ГК попали все строки из сторнируемого документа. Выходит в итоге вообще что попало...
X++: numberSeq = NumberSeq::newGetVoucher(VendParameters::numRefVendExchAdjVoucher()); ledgerVoucher = ledgerVoucher::newLedgerPost(DetailSummary::Summary, SysModule::Vend, numberSeq.parmVoucherSequenceCode()); voucher = numberSeq.voucher(); ledgerVoucherObject = LedgerVoucherObject::newVoucher( voucher, _inventJournalCostClosing.TransDate, SysModule::Vend, LedgerTransType::ExchAdjustment); ledgerVoucher.addVoucher(ledgerVoucherObject); ledgerVoucher.findLedgerVoucherObject().parmCorrection(true); ledgerBondClient = ledgerVoucher.findLedgerVoucherObject().ledgerBondClient_RU(); while select ledgerTrans index hint VoucherDateIdx where ledgerTrans.TransDate == _inventJournalCostClosing.TransDate && ledgerTrans.Voucher == _inventJournalCostClosing.ExchAdjVoucher && { ledgerVoucher.addTrans(ledgerVoucherTransObject::newCreateTrans(ledgerVoucherObject, ledgerTrans.Posting, ledgerTrans.AccountNum, ledgerTrans.Dimension, currencyCodeMST, ledgerTrans.AmountMST, 0)); } ledgerVoucher.end() Последний раз редактировалось Sada; 26.02.2007 в 14:33. |
|
![]() |
#8 |
Участник
|
попробуй на основе этого чегонить слепить... должно получиться
X++: static void Job56(Args _args) { numberSeq numberSeq; ledgerVoucher ledgerVoucher; voucher voucher; ledgerVoucherObject ledgerVoucherObject; ledgerBondClient_RU ledgerBondClient; ledgerTrans ledgerTrans; transDate _transDate; voucher _ExchAdjVoucher; currencyCode currencyCodeMST; ledgerVoucherTransObject transObject; ; numberSeq = NumberSeq::newGetVoucher(VendParameters::numRefVendExchAdjVoucher()); ledgerVoucher = ledgerVoucher::newLedgerPost(DetailSummary::Summary, SysModule::Vend, numberSeq.parmVoucherSequenceCode()); voucher = numberSeq.voucher(); ledgerVoucherObject = LedgerVoucherObject::newVoucher( voucher, systemDateget(), SysModule::Vend, LedgerTransType::ExchAdjustment); ledgerVoucher.addVoucher(ledgerVoucherObject); ledgerVoucher.findLedgerVoucherObject().parmCorrection(true); ledgerBondClient = ledgerVoucher.findLedgerVoucherObject().ledgerBondClient_RU(); while select ledgerTrans index hint VoucherDateIdx where ledgerTrans.TransDate == _transDate && ledgerTrans.Voucher == _exchAdjVoucher && !ledgerTrans.crediting { if(ledgerBondClient) ledgerBondClient.addNewLogObject(); transObject = ledgerVoucherTransObject::newCreateTrans(ledgerVoucherObject, ledgerTrans.Posting, ledgerTrans.AccountNum, ledgerTrans.Dimension, currencyCodeMST, -ledgerTrans.AmountMST, // тут минус так как сторно 0); ledgerVoucher.addTrans(transObject); transObject = ledgerVoucherTransObject::newCreateTrans(ledgerVoucherObject, ledgerTrans.Posting, ledgerTrans.bondedLedgerTrans_RU().AccountNum, ledgerTrans.bondedLedgerTrans_RU().Dimension, currencyCodeMST, ledgerTrans.AmountMST, 0); ledgerVoucher.addTrans(transObject); if(ledgerBondClient) { ledgerBondClient.bondLastVRef2CurrentLog(); ledgerBondClient.removeCurrentLogObject(); } } ledgerVoucher.end(); } Последний раз редактировалось Jony; 26.02.2007 в 14:57. Причина: PS |
|
|
За это сообщение автора поблагодарили: Sada (1). |
![]() |
#9 |
NavAx
|
сторно делается через признак коррекции.
его можно так установить так ledgerVoucher.findLedgerVoucherObject().parmCorrection(true); X++: // ledgerVoucher = LedgerVoucher::newLedgerPost(DetailSummary::Detail, SysModule::Cust, "001"); ledgerVoucherObject = LedgerVoucherObject::newVoucher(Voucher, TransDate); ledgerVoucherObject.newTaxReference(DetailSummary::Summary); ledgerVoucher.AddVoucher(ledgerVoucherObject); ledgerVoucher.findLedgerVoucherObject().parmCorrection(true); ledgerBondClient = ledgerVoucherObject.ledgerBondClient_RU(); select LedgerTrans order by BondBatchTrans_RU, Crediting where ; ledgerBondClient.addNewLogObject(); bond = LedgerTrans.BondBatchTrans_RU; while (LedgerTrans) { ledgerVoucherObject.AddTrans(LedgerVoucherTransObject::newCreateTrans( ledgerVoucherObject, LedgerTrans.Posting, LedgerTrans.AccountNum, LedgerTrans.Dimension, +/- LedgerTrans.CurrencyCode, LedgerTrans.AmountCur, 0)); next LedgerTrans; if (bond != LedgerTrans.BondBatchTrans_RU) { ledgerBondClient.bondLastVRef2CurrentLog(); if (LedgerTrans) ledgerBondClient.addNewLogObject(); bond = LedgerTrans.BondBatchTrans_RU; } } ledgerVoucher.end(); Последний раз редактировалось raz; 26.02.2007 в 15:35. |
|
![]() |
#10 |
Участник
|
вобщем в джобе и в примере автора этот признак устанавливается
........ ledgerVoucherObject = LedgerVoucherObject::newVoucher( voucher, systemDateget(), SysModule::Vend, LedgerTransType::ExchAdjustment); ledgerVoucher.addVoucher(ledgerVoucherObject); ledgerVoucher.findLedgerVoucherObject().parmCorrection(true);// <- тут ledgerBondClient = ledgerVoucher.findLedgerVoucherObject().ledgerBondClient_RU(); .................. |
|
![]() |
#11 |
Программатор
|
Спасибо коллеги. Наставили на путь истинный
![]() |
|
![]() |
#12 |
Member
|
Не уподобляйтесь локализаторам, и аудит не забывайте писать.
TransactionLog::create(...); В стандартной Аксапте пользователя, который породил LedgerTrans, только через аудит можно узнать.
__________________
С уважением, glibs® |
|
![]() |
#13 |
Участник
|
1. http://erpkb.com/Axapta/FormirovanieProvodokGK
2. Сдается мне, в 3.0 был некий метод (кажется в LedgerVoucher) начинающийся на cancel и кончающийся на _RU, который всё сам делал (видел где-то в районе аннулирования авансового отчета) |
|
![]() |
#14 |
Участник
|
В LedgerVoucherObject есть метод createLedgerTransStorno_RU, возможно belugin его имел ввиду. Но он появился в SP3 или SP4. Если это еще актуально посмотрите его, возможно это то что вам нужно.
Использовать можно так: X++: void StornoDistribution(LedgerTrans ledgerTrans) { LedgerVoucher ledgerVoucher; LedgerVoucherObject ledgerVoucherObject; LedgerVoucherTransObject ledgerVoucherTransObject; LedgerBondClient_RU ledgerBondClient; ; if(!ledgerTrans) return; ledgerVoucher = LedgerVoucher::newLedgerPost(DetailSummary::Summary, SysModule::None, ""); ledgerVoucherObject = LedgerVoucherObject::newVoucher(ledgerTrans.Voucher, ledgerTrans.TransDate); ledgerVoucherObject.newTaxReference(DetailSummary::Summary); ledgerVoucher.AddVoucher(ledgerVoucherObject); ledgerBondClient = ledgerVoucherObject.ledgerBondClient_RU(); ledgerVoucherObject.createLedgerTransStorno_RU(ledgerTrans.TransDate, ledgerTrans.Voucher); ledgerBondClient.bondVRef2Log(1); ledgerBondClient.bondLastVRef2CurrentLog(); ledgerVoucher.end(); } |
|
|
За это сообщение автора поблагодарили: belugin (14). |
Теги |
проводки главной книги, сторно, ax3.0, ax4.0 |
|
|