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

D365 FO中无契约类创建SSRS报表:获取选中Load ID方法

在D365 FO的SSRS报表数据提供程序中获取选中的Load ID方法

方法一:通过报表查询参数提取(推荐)

当从WHSLoadTable窗体操作面板启动报表时,系统会自动将选中Load的LoadId作为筛选条件传入报表查询。你可以在数据提供程序类中直接从查询对象提取该值:

public void processReport()
{
    Query                   query = this.parmQuery();
    QueryBuildDataSource    qbds = query.dataSourceTable(tableNum(WHSLoadTable));
    QueryBuildRange         qbr;
    WHSLoadId               loadId;

    // 定位WHSLoadTable数据源的LoadId筛选范围
    qbr = qbds.findRange(fieldNum(WHSLoadTable, LoadId));
    if (qbr)
    {
        loadId = qbr.value();
        // 后续可使用该loadId关联查询WHSLoadLine等关联数据
    }
}

方法二:从窗体上下文的Args对象获取

如果需要在报表初始化阶段就获取选中的Load记录,可以在数据提供程序的init方法中读取窗体传递的Args对象:

public void init()
{
    WHSLoadTable            whsLoadTable;
    Args                    args = this.parmArgs();

    if (args && args.record() && args.record().TableId == tableNum(WHSLoadTable))
    {
        whsLoadTable = args.record();
        WHSLoadId loadId = whsLoadTable.LoadId;
        // 手动将loadId设置为报表查询的筛选条件
        this.parmQuery().dataSourceTable(tableNum(WHSLoadTable)).addRange(fieldNum(WHSLoadTable, LoadId)).value(queryValue(loadId));
    }

    super();
}

注意事项

  • 优先使用方法一,因为这是D365 FO报表传递筛选条件的标准方式,确保报表在不同启动场景下都能正常工作。
  • 确保报表的查询数据源已关联WHSLoadTable表,且LoadId字段已添加为可用的筛选字段。

内容的提问来源于stack exchange,提问作者Subhamay Nath

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 03:42:04