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 のデータ ソースの 1 つは、表示方法を追加する GeneralJournalEntry です。SubLedgerVoucher の助けを借りて、LedgerJournalTrans から 1 行を取得できます。
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;
}
この後、このメソッドをフォームのグリッドにドラッグ アンド ドロップするだけです。