如何在Dynamics CRM账户表单展示关联账户的所有Order Products?
嘿,这个需求我之前帮客户落地过,刚好有几个实用的方案,根据你的场景推荐优先级从高到低排列:
方案1:无代码自定义视图+子网格(最快捷)
这是我最推荐的方案,完全不需要写代码,适合大多数标准场景:
- 先确认你的Account实体已经配置了主账户-子账户的关联关系(Dynamics CRM默认就有这个父子关系,要是你的环境没启用,得先在实体关系里激活)
- 进入
Order Product实体的视图管理界面,新建一个公共视图,命名为「主账户及关联账户订单产品」 - 设置过滤条件:
- 第一条规则:
订单 > 客户 > 等于 当前记录(这会拉取当前账户自己的订单产品) - 点击「添加组」选择「或」,添加第二条规则:
订单 > 客户 > 主账户 > 等于 当前记录(这里的字段名要根据你的关联关系调整,比如如果你的关联字段叫「父账户」就选这个,这条会拉取所有子账户的订单产品)
- 第一条规则:
- 保存视图后,回到Account表单编辑器,拖一个子网格到表单合适位置,数据源选
Order Product,然后指定刚才创建的自定义视图 - 保存并发布表单,搞定!打开主账户表单时,子网格会自动加载该账户及所有关联子账户的全部Order Products
方案2:自定义Web资源(适合复杂展示需求)
如果需要更灵活的展示(比如自定义筛选、特殊样式,或者关联关系不是标准的主-子结构),可以写个HTML Web资源实现:
- 新建一个HTML Web资源,里面嵌入JS逻辑:
- 获取当前账户ID:模型驱动应用用
formContext.data.entity.getId(),经典UI用Xrm.Page.data.entity.getId() - 用Web API查询所有关联账户:比如
/accounts?$filter=_parentaccountid_value eq '{当前账户ID}'(同样,字段名根据你的关联关系调整) - 把当前账户ID和所有关联账户ID收集成一个数组
- 查询这些账户对应的Order Products:
/orderproducts?$expand=orderid&$filter=orderid/_customerid_value in ({ID数组}) - 把返回的数据渲染成自定义表格(可以加排序、筛选按钮)
- 获取当前账户ID:模型驱动应用用
- 把这个Web资源添加到Account表单,保存发布就行,这种方式自由度极高,能满足各种定制化需求
方案3:Power Automate+自定义实体(异步汇总场景)
如果不需要实时查看,只是需要定期汇总采购数据(比如统计月度总采购量),可以用Power Automate做异步同步:
- 新建一个自定义实体,比如「账户采购汇总」,和Account实体建立关联
- 创建一个定时触发的Power Automate流:
- 遍历所有主账户
- 查询该主账户及其关联账户的所有Order Products,汇总数量、金额等关键指标
- 把汇总结果更新到「账户采购汇总」实体中
- 在Account表单添加子网格或者字段,展示这些汇总数据
一些注意事项
- 权限:要确保用户有
Order Product实体的读取权限,以及关联账户的读取权限,否则子网格或Web资源会加载不出数据 - 性能:如果关联账户和订单产品数量特别多,记得给查询加分页(比如Web API用
$top=50),避免表单加载过慢 - 版本适配:如果是最新的模型驱动应用,记得用最新的Client API,别再用旧的
Xrm.Page了
内容的提问来源于stack exchange,提问作者user2316995
相关产品推荐
相关产品推荐

