将供应商名称作为LedgerTransAccount形式的列

时间:2015-11-24 15:23:38

标签: axapta microsoft-dynamics dynamics-ax-2012 dynamics-ax-2012-r3

我正在尝试在TransAccountForm的每一行上提供供应商名称。

我写了一小段代码,当LedgerJournalTrans的LedgerDimension可用时,该代码获取供应商名称:

static void GetVendorName(Args _args)
{
   CustAccount custAccount;
   VendTable vendTable;

   LedgerJournalTrans ledgerJournalTrans;

   while select ledgerJournalTrans
   {
       if (ledgerJournalTrans.AccountType == LedgerJournalACType::Vend)
       {
           custAccount = DimensionStorage::ledgerDimension2AccountNum(LedgerJournalTrans.LedgerDimension);

           select firstOnly vendTable
               where vendTable.AccountNum == custAccount;

            info(strFmt("Vendor Name: %1, Voucher: %2", DirPartyTable::getName(vendTable.Party), ledgerJournalTrans.Voucher));
        }
    }
}

但是如何才能运行此代码以使该新列具有供应商名称?

感谢Jan B. Kjeldsen 我得到了这个解决方案:

LedgerTransAccount中的一个数据源是GeneralJournalEntry,我添加了显示方法。 在SubLedgerVoucher的帮助下,我可以从LedgerJournalTrans获得一行。

public display Name VendorName()
{
    Name ret;
    LedgerJournalTrans ledgerJournalTrans;

    select firstFast firstOnly ledgerJournalTrans
        where ledgerJournalTrans.Voucher == this.SubledgerVoucher && 
            ledgerJournalTrans.TransDate == this.AccountingDate;

   ret = ledgerJournalTrans.AccountType == LedgerJournalACType::Vend ?
               vendTable::find(DimensionStorage::ledgerDimension2AccountNum
                (ledgerJournalTrans.LedgerDimension)).name() : '';

   return ret;
}

在此之后,我只是将此方法拖放到表单的网格上。

1 个答案:

答案 0 :(得分:1)

您可以向ledgerJournalTrans表添加显示方法:

[SysClientCacheDataMethodAttribute(true)]
display VendName vendName()
{
    return this.AccountType == LedgerJournalACType::Vend ? vendTable::find(DimensionStorage::ledgerDimension2AccountNum(this.LedgerDimension)).name() : '';
}

单行。