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

如何在CRM中当Opportunity表的Account查找字段变更时触发插件?

解决方案

Dynamics CRM的服务器端插件(包括你注册的create/update消息插件)仅在记录提交到服务器时触发(即点击保存按钮时),前端字段变更不会自动触发服务器端操作。要实现Account字段变更即时触发插件,需结合客户端脚本与服务器端插件:

1. 调整插件注册

  • 保留update消息,执行阶段可设为Pre-Validation或Pre-Operation,筛选属性维持accountid不变。

2. 编写客户端JavaScript脚本(Web资源)

在Opportunity表单上添加Web资源JS,监听Account字段的onChange事件,当字段值变更时,主动调用Web API对当前Opportunity记录执行局部更新(仅更新accountid字段,无需保存整个表单),以此触发注册的update消息插件。

示例JS代码:

function onAccountChange(executionContext) {
    var formContext = executionContext.getFormContext();
    var opportunityId = formContext.data.entity.getId().replace("{", "").replace("}", "");
    var accountId = formContext.getAttribute("accountid").getValue();

    if (accountId) {
        // 构造更新数据
        var updateData = {
            "accountid@odata.bind": "/accounts(" + accountId[0].id + ")"
        };

        // 调用Web API执行局部更新
        Xrm.WebApi.updateRecord("opportunity", opportunityId, updateData).then(
            function success(result) {
                // 更新成功,插件已触发
            },
            function error(error) {
                console.log(error.message);
            }
        );
    }
}

3. 配置表单事件

  • 打开Opportunity表单编辑器,找到Account查找字段。
  • 在字段的事件选项卡中,添加onChange事件,关联你创建的Web资源JS,指定函数名为onAccountChange。
  • 发布表单与Web资源。

注意事项

  • 该方式会生成一条Opportunity的更新记录,需确认业务场景是否允许。
  • 可在脚本中添加判断逻辑,仅当字段值真正发生变化时才执行更新,避免重复触发。
  • 确保操作用户拥有Opportunity的更新权限,否则Web API调用会失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 03:02:23