Инструменты пользователя

Инструменты сайта


axapta:формированиепроводокгк

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

axapta:формированиепроводокгк [2018/04/13 22:43] (текущий)
Строка 1: Строка 1:
 +Раздел:​ [[Программирование | ]] > [[БизнесЛогика]]
 +----
 +{{toc}}
 +как формировать проводки [[ГлавнаяКнига]] описано в материалах курса MorphXIntergationMaster.
  
 +[[http://​www.axforum.info/​forums/​attachment.php?​s=&​postid=26507]],​ описывающий проводки в Axapta, опубликованный Иваном Мищенко в [[http://​www.axforum.info/​forums/​showthread.php?​postid=26507]]
 +
 +При сторнировании надо выставлять флаг parmCorrection в [[Класс/​LedgerVoucherObject]] иначе при отрицательной сумме получится реверсирование
 +<code XPP>
 +_ledgerVoucher.findLedgerVoucherObject().parmCorrection(
 +        _isCancellation);​
 +</​code>​
 +
 +=== Пример ===
 +в качестве примера использования можно западной функциональности можно посмотреть Класс/​TutorialLedgerVoucher
 +
 +[[РоссийскаяФункциональность]],​ судя по всему, требует дополнительных действий для обеспечения корреспонденции. Пример можно посмотреть [[http://​www.axforum.info/​forums/​showthread.php?​postid=67347#​post67347]]:​
 +<code java>
 +  // EVGL, Correspondence II -->
 +  if (ledgerBondClient && AmountTrans)
 +  {
 +      ledgerBondClient.bondVRef2VRef(ledgerBondClient.lastVrefId(),​
 +                                                  ledgerBondClient.lastVrefId(-1));​
 +  }
 +  // EVGL, Correspondence II -->
 +</​code>​
 +
 +еще один пример: ​
 +<code java>
 +// \Data Dictionary\Tables\CustTrans\Methods\postClosing
 +void postClosing(TransDate ​      ​_postingDate,​
 +                        ledgerVoucher ​  ​_ledgerVoucher = _ledgerVoucher)
 +{
 +    // Номерная серия
 +    NumberSeq ​          ​numberSeq;​
 +    ​
 +     // Движок корреспонденции
 +    // EGLA, Correspondence II, -->
 +    LedgerBondClient_RU ledgerBondClient;​
 +    // EGLA, Correspondence II, <--
 +
 +    // LedgerVoucher - объект инкапсулирующий всю операцию проводки
 +    ledgerVoucher ​  ​ledgerVoucher = _ledgerVoucher;​
 +    // LedgerVoucherObject - объект инкапсулирующий документ ГК
 +    LedgerVoucherObject ledgerVoucherObject;​
 +    // Признак того, что создается собственный объект разноску
 +    boolean ​            ​ledgerVoucherInit ​ = false;
 +    ​
 +    // Профиль разноски ​
 +    CustPostingProfile ​ postingProfileClose = CustLedger::​loadPostingClose(this.postingProfile);​
 +
 +    // Со счета
 +    LedgerAccount ​      ​fromAccount; ​
 +    // На счет
 +    LedgerAccount ​      ​toAccount; ​
 +
 +    // Если найден профиль разноски закрытия,​ отличабщийся от текущего
 +    if (postingProfileClose && postingProfileClose != this.postingProfile)
 +    {
 +        // Получение счетов для разноски
 + fromAccount ​    = CustLedgerAccounts::​sumAccount(this.accountNum,​ this.postingProfile);​
 +        toAccount ​      = CustLedgerAccounts::​sumAccount(this.accountNum,​ postingProfileClose);​
 +
 +        // Запоминания профиля разноски закрытия
 + this.postingProfileClose = postingProfileClose;​
 +
 +        // Если счета отличаются
 + if (fromAccount != toAccount)
 +        {
 +            // Если нам не передали объект-разноску создаем свой:
 +     if (! ledgerVoucher) //​ledgerVouchertrans)
 +            {
 +                // Получаем номерную серию
 + numberSeq = NumberSeq::​newGetVoucher(CustParameters::​numRefCustCloseVoucher());​
 +
 + // Создаем объект- разноску
 +                ledgerVoucher = ledgerVoucher::​newLedgerPost(DetailSummary::​Detail,​
 +                                                            SysModule::​Cust,​
 +                                                            numberSeq.parmVoucherSequenceCode());​
 + // Создаем объект - voucher
 +                ledgerVoucherObject = LedgerVoucherObject::​newVoucher(numberSeq.voucher(),​
 +                                                                      _postingDate,​
 +                                                                      SysModule::​Cust,​
 +                                                                      LedgerTransType::​Cust);​
 +                // ссылка на платеж,​ которая попадет в проводки
 +                ledgerVoucherObject.parmPaymentReference(this.paymReference);​
 + // Добавляем документ ГК в разноску
 +                ledgerVoucher.AddVoucher(ledgerVoucherObject);​
 +
 +                ledgerVoucherInit= true;
 +            }
 +
 +            // Добавляем кредитовую проводку
 +     ledgerVoucher.addTrans(
 +                LedgerVoucherTransObject::​newCreateTrans(
 +                    ledgerVoucher.findLedgerVoucherObject(),​
 +                    LedgerPostingType::​CustBalance,​
 +                    fromAccount,​
 +                    this.dimension,​
 +                    this.currencyCode,​
 +                   ​-this.amountCur,​
 +                    this.recId));​
 +
 +            // Добавляем дебетовую проводку
 +     ledgerVoucher.addTrans(
 +                LedgerVoucherTransObject::​newCreateTrans(
 +                    ledgerVoucher.findLedgerVoucherObject(),​
 +                    LedgerPostingType::​CustBalance,​
 +                    toAccount,
 +                    this.dimension,​
 +                    this.currencyCode,​
 +                    this.amountCur,​
 +                    this.recId));​
 +            ​
 +     // EGLA, Correspondence II  -->
 +     // Получаем объект для корреспонденции
 +            ledgerBondClient = ledgerVoucher.findLedgerVoucherObject().ledgerBondClient_RU();​
 +            if (ledgerBondClient && this.amountCur)
 +            {
 +                // Устанавливаем корреспонденцию
 + ledgerBondClient.bondVRef2VRef(ledgerBondClient.lastVrefId(),​
 +                                               ​ledgerBondClient.lastVrefId(-1));​
 +            }
 +            // EGLA, Correspondence II  <--
 +
 +            // Устанавливаем дату закрытия
 +     this.closed = this.maxSettlementDate(_postingDate);​
 +
 +            // если нам пришлось создать собственный объект-разноску:​
 +     if (ledgerVoucherInit)
 +            {
 + // завершаем её
 +                ledgerVoucher.end();​
 +            }
 +        }
 +    }
 +}
 +</​code>​
 +=== см. также ==
 +[[:​AxForum]]:​
 +  *[[http://​www.axforum.info/​forums/​showthread.php?​s=&​threadid=9187]]
 +  *Класс/​LedgerVoucher
 +  *[[http://​www.ms-dynamics.ru/​blog/​2007/​08/​28/​nemnogo-ob-arxitekture-raznoski-v-gk-i-probleme-korrespondencii-schetov/​]] -- см. раздел "​Немного о программном API создания постингов"​
axapta/формированиепроводокгк.txt · Последние изменения: 2018/04/13 22:43 (внешнее изменение)