表单Journal Voucher
(AR> Journal> PaymentJournal>点击按钮Lines
)。我想从x ++代码创建一个新记录。
我在按ctrl+n
时调用的形式为viz create(),initvalue(),ledgerJournalEngine_custPayment等等,这些方法很少见。我们如何通过x ++代码使用这些方法来使用标准功能创建记录。
帮助。
答案 0 :(得分:3)
在您详细阐述之前,我认为您正在尝试创建自己的自定义表单来扩展日记功能。如果您只是尝试创建工具,则只需创建一个新的Settlement Using Cust Group
按钮即可。在单击的事件中,调用您的事务标记表单或您执行的任何操作以获取要使用的事务。然后把这样的东西放进去:
void clicked()
{
;
element.lock();
super();
// Put your code here to call the open transaction editing code
// CREATE THIS CUSTOM METHOD on C\LedgerJournalEngine_CustPayment\settleTransCustGroup
ledgerJournalEngine.settleTransCustGroup(ledgerJournalTable);
ledgerJournalTrans_ds.active();
ledgerJournalTrans_ds.reread();
ledgerJournalTrans_ds.executeQuery();
//recalculate balances
ledgerJournalEngine.newJournalActive(ledgerJournalTable, true);
element.firstField();
element.unLock();
}
然后在你创建的新方法中,我命名为settleTransCustGroup
,你可以在testLedgerJournalSpecTrans
建模中循环你的记录,类似于这个(在引擎类上创建的自定义方法):
void settleTransCustGroup(LedgerJournalTable _ledgerJournalTable)
{
LedgerJournalTrans ledgerJournalTrans;
;
// Turn this stuff into a loop and default whatever else you need
ledgerJournalTrans.clear();
ledgerJournalTrans.initValue();
ledgerJournalTrans.AccountNum = '100003';
ledgerJournalTrans.AmountCurCredit = 10;
this.initValue(ledgerJournalTrans);
ledgerJournalTrans.insert();
this.write(ledgerJournalTrans);
ledgerJournalTrans.clear();
ledgerJournalTrans.initValue();
ledgerJournalTrans.AccountNum = '100005';
ledgerJournalTrans.AmountCurCredit = 15;
this.initValue(ledgerJournalTrans);
ledgerJournalTrans.insert();
this.write(ledgerJournalTrans);
}
答案 1 :(得分:1)
通常,您的X ++代码看起来像这样:
static void InsertRecord(Args _args)
{
LedgerJournalTrans ledgerJournalTrans;
;
ledgerJournalTrans.AccountNum = "10000";
ledgerJournalTrans.AmountCurCredit = 50.64;
ledgerJournalTrans.AccountType = LedgerJournalACType::Ledger;
ledgerJournalTrans.insert();
}
您可以根据需要替换字段和值。如果缺少任何字段,错误将显示在infolog中(例如,如果您要运行上述操作,则会出现“必须指定货币代码”错误),因此请确保解决所有必填字段。
在大多数情况下,您还可以在分配值之前调用ledgerJournalTrans.initValue();
,以使用默认的AX值预先填充记录。我相信这与您在表单上使用Ctrl + N时看到的内容相同。在上面的示例中,这样做将导致填写货币代码,并且正确保存记录(至少在我们的系统上)。
答案 2 :(得分:1)
在其他评论中引用的框架中没有神奇的方法来调用标准功能。对于每种分类帐类型(会计,库存,订单,付款等),创建和初始化行的方式不同,如果您希望日记帐正确发布,则必须按照这种特定方式进行操作。
在Google的X ++代码中有很多例子可以为几乎所有类型的代码插入日记帐事务。这并不容易,但至少它总是几乎相同的代码,并且可以很容易地重复使用。