Axapta 在LedgerTransAccount表单中将供应商名称作为一列

Axapta 在LedgerTransAccount表单中将供应商名称作为一列,axapta,microsoft-dynamics,dynamics-ax-2012,dynamics-ax-2012-r3,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 l

我试图在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,我添加了显示方法。 在Subgradgervoucher的帮助下,我能够从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;
}

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

您可以将显示方法添加到
ledgerJournalTrans
表中:

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

一行。

考虑缓存方法值。