1

我试图在TransAccountForm的每一行上提供供应商名称。将供应商名称作为LedgerTransAccount表单中的列

我已经写了一小段代码,它获取的供应商名称时,从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)); 
     } 
    } 
} 

但我怎么能去为用户带来新的列与供应商运行这段代码名称?

由于扬B.杰德森练到此解决方案:

一个在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

可以添加的显示方法的ledgerJournalTrans表:

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

一个一衬垫。

+1

考虑缓存方法值。 https://msdn.microsoft.com/en-us/library/aa596691.aspx –

相关问题