Dynamics 365 如何为Lead记录Qualify按钮实现带搜索栏的查询弹窗
Dynamics 365 Lead Qualify按钮带Account搜索弹窗实现方案
最优方案(无需自定义HTML)
优先使用Dynamics 365 原生提供的Xrm.Navigation.lookupObjects API实现,该方案完全不需要开发HTML页面,直接调用官方封装的查找弹窗,原生支持Account检索、筛选、多选/单选控制,完全匹配你的需求。
实现步骤:
- 自定义功能区按钮:隐藏系统自带的Qualify按钮,新增一个自定义Qualify按钮,绑定自定义JS的触发方法
- 调用
Xrm.Navigation.lookupObjects弹出Account查找框,示例代码如下:
// 配置查找框参数 var lookupOptions = { entityTypes: ["account"], // 限定只搜索Account实体 allowMultiSelect: false, // 控制是否允许多选 defaultViewId: null, // 可指定默认搜索视图,填对应视图GUID即可 viewIds: [] // 可指定可供用户切换的视图列表 }; // 弹出查找框 Xrm.Navigation.lookupObjects(lookupOptions).then( function (selectedRecords) { if (selectedRecords.length > 0) { // 拿到选中的Account记录,执行你的校验逻辑 var selectedAccount = selectedRecords[0]; var accountId = selectedAccount.id; var accountName = selectedAccount.name; // 校验完成后可调用系统原生Qualify逻辑完成Lead资格认定 Xrm.WebApi.online.execute(new Sdk.QualifyLead( Xrm.Page.data.entity.getId().replace(/[{}]/g, ''), [accountId], true, false, false )).then( function (result) { // Qualify成功后的逻辑,比如刷新页面 Xrm.Page.data.refresh(); }, function (error) { Xrm.Navigation.openAlertDialog({text: "资格认定失败:" + error.message}); } ); } else { // 用户未选择Account时的逻辑,可提示必须选择账号 Xrm.Navigation.openAlertDialog({text: "请选择关联的Account记录"}); } }, function (error) { console.log(error.message); } );
- 逻辑校验适配:你可以根据业务需求调整回调逻辑,比如判断选中的Account是否符合对应规则,不符合则直接终止资格认定流程。
备选方案(需自定义HTML,仅当你需要在弹窗中添加额外自定义内容时使用)
如果你的业务需要在弹窗中除了搜索Account之外,还要展示额外的表格、自定义字段校验等内容,可以开发HTML Web资源,调用Xrm.Navigation.openWebResource方法打开弹窗,在HTML中嵌入PCF控件或者调用原生Web API实现Account搜索功能。
注意事项
Xrm.Navigation.lookupObjects是官方原生API,兼容性强,不需要额外维护前端代码,适配Dynamics 365所有在线版本和较新的本地部署版本,是你当前场景的首选实现方式- 你描述的核心需求不需要自定义HTML就能实现,无需额外开发前端页面
内容的提问来源于stack exchange,提问作者BeamerEA
相关产品推荐
相关产品推荐

