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

Dynamics 365 v9.0 查找字段展示重复记录的实现方案咨询

Dynamics 365 9.0 重复记录筛选联动实现方案

是否需要使用自定义工作流

不需要。该需求属于表单前端实时交互场景,自定义工作流多用于后端数据逻辑的异步/同步处理,无法直接实现表单控件的实时联动效果。

具体实现步骤

1. 前置字段准备

  • 确认目标实体已创建两个自定义字段:
    • 单行文本类型的输入字段,用于用户输入Name值,逻辑名可设为new_inputname
    • 查找类型的选择字段,查找目标为当前实体本身,用于展示匹配的重复记录,逻辑名可设为new_duplicate_lookup

2. 开发前端Web资源

新建JavaScript类型的Web资源,核心实现逻辑如下:

  • 为输入字段绑定onChange触发事件
  • 事件触发后先获取用户输入的Name值,做非空校验
  • 校验通过后为查找字段绑定addPreSearch钩子,注入自定义过滤规则,仅保留name字段等于输入值的记录
  • 输入为空时清空查找字段的过滤规则与已选值

核心代码示例:

function onNameInputChange(executionContext) {
    const formContext = executionContext.getFormContext();
    const inputVal = formContext.getAttribute("new_inputname").getValue()?.trim();
    const lookupControl = formContext.getControl("new_duplicate_lookup");
    const targetEntityName = "你的目标实体逻辑名";
    
    // 先移除之前绑定的过滤规则,避免重复绑定
    lookupControl.removePreSearch(duplicateFilter);

    if (!inputVal) {
        formContext.getAttribute("new_duplicate_lookup").setValue(null);
        return;
    }

    // 绑定自定义过滤规则
    lookupControl.addPreSearch(function duplicateFilter() {
        const filterXml = `<filter type="and">
            <condition attribute="name" operator="eq" value="${inputVal}" />
        </filter>`;
        lookupControl.addCustomFilter(filterXml, targetEntityName);
    });
}

3. 表单配置

  • 打开目标实体的主表单编辑器,将上述两个字段添加到表单的可见区域
  • 选中输入字段,切换到事件配置tab,上传刚才开发的JavaScript Web资源,为onChange事件绑定onNameInputChange函数,勾选「传递执行上下文作为第一个参数」
  • 保存表单,发布所有自定义项(Web资源、实体字段、表单)

4. 功能验证

  • 打开目标实体的新建/编辑页面,在输入框中输入已存在的记录Name值,点击查找字段,下拉列表仅会展示所有同名的重复记录,可直接选择目标记录
  • 清空输入框内容后,查找字段恢复默认的全量可选范围

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:54:06