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

MS Dynamics 365 Operations跨公司RDP报表数据异常求助

解决Dynamics AX RDP报表跨公司运行时数据异常(大量值为0)的问题

你遇到的这个跨公司报表数据异常问题,我帮你梳理几个关键排查点和修复方案,应该能解决问题:

1. 调整QueryRun的跨公司设置时机

你当前是先创建QueryRun再调用allowCrossCompany(true),但这个顺序可能导致跨公司设置没有完全生效。正确的做法是先给原始查询对象启用跨公司,再基于它创建QueryRun,修改代码如下:

public void processReport()
{
    ProjTable projTable;
    ProjTransPosting projTransPosting;
    CostControlTransCommittedCost costControlTransCommittedCost;
    EstimateTemplatePeriod EstimateTemplatePeriod;
    Query query;
    QueryRun queryRun;

    // 先获取报表关联的查询,启用跨公司属性
    query = this.parmQuery();
    query.allowCrossCompany(true);
    // 基于启用跨公司后的查询创建QueryRun
    queryRun = new QueryRun(query);

    while (queryRun.next())
    {
        // ... 后续循环逻辑保持不变
    }

    this.rangesToTable(this.parmQuery());
}

2. 确认临时表的跨公司存储属性

你的临时表tmpWIP如果设置了SaveDataPerCompany = Yes,会被绑定到当前法人实体,跨公司的数据无法正确存储或读取。请在AOT中找到tmpWIP表:

  • 修改SaveDataPerCompany属性为No
  • 保存并重新生成临时表

这个设置能让临时表变成全局存储,容纳所有公司的数据,不会被当前公司上下文过滤。

3. 验证AOT查询所有数据源的跨公司开关

你提到已经在AOT查询中启用了跨公司属性,但要确保所有参与连接的数据源都开启了这个设置:

  • 打开AOT中的WIP查询
  • 逐个检查每个数据源(ProjTable、ProjTransPosting、CostControlTransCommittedCost、EstimateTemplatePeriod)的AllowCrossCompany属性是否为Yes
  • 保存查询并重新生成

如果某个数据源没开跨公司,会导致该表只能读取当前公司的数据,关联字段自然会出现0值。

4. 排查数据关联逻辑的跨公司兼容性

在循环中通过queryRun.get()获取多表记录时,要确保表之间的关联在跨公司场景下有效:

  • 比如ProjTransPosting和ProjTable的连接条件,是否依赖公司范围?如果原查询的连接没考虑跨公司,会导致部分记录无法匹配,字段值为0。
  • 可以先单独测试AOT查询:运行WIP查询,手动选择跨公司范围,查看返回结果中的AmountMst、CostAmount等字段是否正常,确认查询本身没有问题。

5. 检查报表公司范围参数的传递

你已经添加了公司范围参数,要确保它正确传递到查询中:

  • 确认报表的公司范围参数是多值选择,并且绑定到查询的DataAreaId范围
  • 当选择当前公司时,检查查询的DataAreaId范围是否正确包含当前公司ID,没有被错误过滤

按照以上步骤逐一排查,应该就能解决大量值为0的异常问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:01:47