Dynamics CRM 365:如何基于关联记录打开筛选视图
嘿,这个需求其实在Dynamics 365(看实体命名大概率是这类CRM系统)里有几种挺实用的实现方案,我给你拆解下:
可行方案梳理
方案一:无代码/低代码实现(推荐新手)
如果你不想写代码,直接用表单编辑器的命令按钮就能搞定:
- 打开Account实体的表单编辑器,找到你想加按钮的位置(比如顶部命令栏或者表单内的按钮组)
- 点击「添加按钮」,选择「新建命令」
- 在命令设置面板里,动作类型选「打开视图」,然后选中你要展示的Followups实体视图
- 关键的筛选配置:在「传递参数」区域,设置筛选条件为
accountid eq {PrimaryEntityId}—— 这里的{PrimaryEntityId}会自动替换成当前打开的Account记录ID,确保只加载关联的Followups - 保存并发布表单,点击按钮测试,就能看到只属于当前客户的Followups记录啦
方案二:自定义JavaScript实现(适合复杂场景)
如果需要加一些自定义逻辑(比如判断权限、额外筛选条件),可以用JS脚本实现:
- 先在表单编辑器里添加一个自定义按钮,动作类型选「运行JavaScript」
- 编写如下JS函数(记得替换成你自己的视图ID):
function openFilteredFollowups(primaryControl) { // 获取当前Account的ID(去掉大括号) const accountId = primaryControl.data.entity.getId().replace(/[{}]/g, ""); // 替换成你的Followups视图ID const targetViewId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"; const entityName = "followups"; // 构建筛选条件XML const filterXml = `<filter type='and'><condition attribute='accountid' operator='eq' value='${accountId}'/></filter>`; // 打开筛选后的视图 Xrm.Navigation.openGridView({ entityName: entityName, viewId: targetViewId, viewType: "savedquery", filters: filterXml }); }
- 把这个脚本上传到CRM的Web资源里,关联到刚才的自定义按钮,保存发布后就能用了
注意事项
- 确保Followups实体和Account实体已经建立了正确的N:1关联(也就是Followups里有一个
accountid字段关联到Account实体) - 要保证当前用户对目标Followups视图有访问权限,不然会报错
- 有些环境里无代码方案的参数可能需要用
{!Entity.Id}替代{PrimaryEntityId},如果第一个方案不行可以试试这个替换
内容的提问来源于stack exchange,提问作者rafaetti
相关产品推荐
相关产品推荐

