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

Dynamics 365点击Assign按钮触发Javascript的实现方案咨询

实现示例

可通过扩展Dynamics 365命令栏按钮的执行逻辑实现需求,以下是可直接参考的实现方案:

步骤1:修改命令栏Assign按钮配置

  • 进入Power Apps制作平台,打开对应业务表的命令栏编辑界面,选择主表单/主网格对应的Assign按钮,将按钮的默认操作修改为「执行JavaScript」。
  • 提前将自定义JS代码上传为Dynamics 365的Web资源,在按钮配置页选择该Web资源,配置调用的函数名为customAssignHandler,添加参数PrimaryControl传递上下文。

步骤2:自定义JS代码示例

function customAssignHandler(primaryControl) {
    const formContext = primaryControl;
    // 打开原生分配对话框
    Xrm.Navigation.openDialog(
        "Assign", 
        { width: 450, height: 350 },
        {
            entityId: formContext.data.entity.getId().replace(/[{}]/g, ""),
            entityTypeName: formContext.data.entity.getEntityName()
        }
    ).then(function (dialogOutput) {
        // 获取分配对话框中的「分配至用户或团队」查找控件
        const assigneeLookup = dialogOutput.getControl("ownerid");
        if (assigneeLookup) {
            // 给查找控件绑定预搜索事件,注入过滤规则
            assigneeLookup.addPreSearch(function () {
                // 示例1:过滤用户,仅显示未禁用的用户
                const userFilter = "<filter type='and'><condition attribute='isdisabled' operator='eq' value='0' /></filter>";
                assigneeLookup.addCustomFilter(userFilter, "systemuser");

                // 示例2:过滤团队,仅显示名称包含「业务组」的团队
                const teamFilter = "<filter type='and'><condition attribute='name' operator='like' value='%业务组%' /></filter>";
                assigneeLookup.addCustomFilter(teamFilter, "team");
            });
        }
    });
}

注意事项

  • 部分旧版本Dynamics 365的分配对话框查找控件ID为systemuserid,如果代码不生效可通过浏览器F12调试工具确认实际控件ID。
  • 可根据业务需求自行修改FetchXml过滤片段,支持按业务单位、用户角色、团队类型等多维度过滤。
  • 所有配置完成后需要发布自定义项,清除浏览器缓存后再测试效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 01:33:01