You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

D365 FO中如何获取表单显示方法totalAmountSingleLine的值?

D365显示方法取值与字段对比解决方案

问题背景

在LedgerJournalTransVendInvoice表单中,"Total Amount"字段关联数据源的显示方法totalAmountSingleLine,需要获取该方法返回的金额值,与RemainingAmount字段做对比,现有代码无法实现该逻辑。

现有代码问题点

  • 错误使用formRun.controlCallingMethod获取方法名称,而非直接调用显示方法获取返回值
  • 未正确获取显示方法的返回值,也未实现与RemainingAmount的对比逻辑
  • 获取表单数据源和当前记录的方式冗余

修正后的代码实现

final class LedgerJournalTransVendInvoice_PostJournal_AzimutBenetti_Extension
{
    public void clicked()
    {
        LedgerJournalTransVendInvoice currentRecord;
        Amount totalAmount;
        Amount remainingAmount;
        DialogButton diagBut;
        str strMessage = "Importo da decurtare al saldo della lettera di intento maggiore dell’importo residuo. Proseguire?";
        str strTitle = "Splafonamento";

        // 获取当前表单数据源的选中记录
        currentRecord = this.dataSourceObject().cursor();
        if (!currentRecord)
        {
            next clicked();
            return;
        }

        // 直接调用显示方法获取Total Amount值
        totalAmount = this.dataSourceObject().totalAmountSingleLine();
        // 获取RemainingAmount字段值
        remainingAmount = currentRecord.RemainingAmount;

        // 执行金额对比逻辑
        if (totalAmount > remainingAmount)
        {
            diagBut = Box::yesNo(strMessage, DialogButton::No, strTitle);
            // 根据用户选择决定是否执行后续逻辑
            if (diagBut == DialogButton::Yes)
            {
                next clicked();
            }
            // 用户选No则终止后续操作
        }
        else
        {
            // 金额符合要求,直接执行后续逻辑
            next clicked();
        }
    }
}

关键说明

  • 直接通过dataSourceObject()获取表单数据源,调用其显示方法totalAmountSingleLine()即可拿到计算后的金额值
  • 通过cursor()获取当前选中的LedgerJournalTransVendInvoice记录,直接读取RemainingAmount字段值
  • 增加空记录判断,避免空引用错误
  • 完善用户选择分支逻辑,仅在用户确认后执行后续的clicked()操作

内容的提问来源于stack exchange,提问作者Fabrizio Mastrone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 01:44:52