AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.02.2007, 13:11   #1  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
Отсторнировать документ ГК программно
Добрый день!!
Кто нибудь может кинуть кусок кода, который бы сторнировал документ ГК по такому то ваучеру (чтоб корреспонденция есчо проходила при этом). Искал на форуме но чтот не нашол. Заранее спасибо.
Старый 26.02.2007, 13:19   #2  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Посмотрите в 4.0. Там есть такое. Как работает — не смотрел. Но вдруг это то, что вам нужно.
__________________
С уважением,
glibs®
Старый 26.02.2007, 13:30   #3  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
а где там???
Старый 26.02.2007, 13:39   #4  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
ГК\План счетов, кнопка Операции, кнопка Сторнировать операцию.
__________________
С уважением,
glibs®
Старый 26.02.2007, 13:54   #5  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
Заморочено А может быть кто нибуть уже делал такое в тройке??
Старый 26.02.2007, 14:13   #6  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,494 / 1065 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
смотрите джобы
tutorial_BondTestJob_RU
tutorial_BondDateTestJob_RU

признак коррекции можно так установить
ledgerVoucher.findLedgerVoucherObject().parmCorrection(true);
Старый 26.02.2007, 14:31   #7  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
Не кидайте камнями. Хочу сначала просто чтоб в новый Документ ГК попали все строки из сторнируемого документа. Выходит в итоге вообще что попало...
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()
вместо 24-х строк попадает только 6 и то какие то левый суммы вылазят кое где...

Последний раз редактировалось Sada; 26.02.2007 в 14:33.
Старый 26.02.2007, 14:52   #8  
Jony is offline
Jony
Участник
 
99 / 22 (1) +++
Регистрация: 25.06.2003
Адрес: г. Барнаул
попробуй на основе этого чегонить слепить... должно получиться
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).
Старый 26.02.2007, 15:25   #9  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,494 / 1065 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
сторно делается через признак коррекции.
его можно так установить так
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.
Старый 26.02.2007, 15:31   #10  
Jony is offline
Jony
Участник
 
99 / 22 (1) +++
Регистрация: 25.06.2003
Адрес: г. Барнаул
вобщем в джобе и в примере автора этот признак устанавливается
........
ledgerVoucherObject = LedgerVoucherObject::newVoucher(
voucher,
systemDateget(),
SysModule::Vend,
LedgerTransType::ExchAdjustment);
ledgerVoucher.addVoucher(ledgerVoucherObject);

ledgerVoucher.findLedgerVoucherObject().parmCorrection(true);// <- тут
ledgerBondClient = ledgerVoucher.findLedgerVoucherObject().ledgerBondClient_RU();
..................
Старый 26.02.2007, 15:42   #11  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
Спасибо коллеги. Наставили на путь истинный .
Старый 27.02.2007, 22:26   #12  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Не уподобляйтесь локализаторам, и аудит не забывайте писать.

TransactionLog::create(...);

В стандартной Аксапте пользователя, который породил LedgerTrans, только через аудит можно узнать.
__________________
С уважением,
glibs®
Старый 27.02.2007, 23:15   #13  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
1. http://erpkb.com/Axapta/FormirovanieProvodokGK
2. Сдается мне, в 3.0 был некий метод (кажется в LedgerVoucher) начинающийся на cancel и кончающийся на _RU, который всё сам делал (видел где-то в районе аннулирования авансового отчета)
Старый 28.02.2007, 19:18   #14  
Yegor is offline
Yegor
Участник
 
40 / 37 (2) +++
Регистрация: 12.09.2003
В 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

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Немного об архитектуре разноски в ГК и проблеме корреспонденции счетов mazzy DAX: База знаний и проекты 29 02.05.2019 17:56
При повторном вызове linkActive проваливается в validateWrite(Строки общего журнала ГК) Lemming DAX: Программирование 6 25.10.2007 13:50
как программно создать документ в DocuView алька DAX: Программирование 5 03.04.2007 18:44
Создание проводок ГК (программно) Ivan Mischenko DAX: База знаний и проекты 25 30.10.2006 16:35
Журнал накладных и пустое поле Документ ГК Натка DAX: Функционал 3 21.10.2005 13:03
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 08:16.