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

如何在Dynamics CRM中获取表单级通知及字段级原生错误消息?

Dynamics CRM 获取表单级与字段级通知方法

一、获取表单级通知

直接调用formContext.ui.getFormNotifications()方法,该方法会返回所有表单级通知的数组,每个通知对象包含id、message、level(可选值:ERROR/WARNING/INFO)等核心属性。示例代码:

// 获取全部表单级通知
const formNotifications = formContext.ui.getFormNotifications();
// 遍历输出通知详情
formNotifications.forEach(notification => {
    console.log(`通知ID: ${notification.id}, 消息内容: ${notification.message}, 级别: ${notification.level}`);
});

二、获取字段级通知(含微软原生错误)

Dynamics CRM客户端脚本确实没有提供getNotification()这类直接获取字段级通知的官方方法,但可以通过以下两种方式解决:

1. 提取原生错误的DOM元素内容

微软原生抛出的字段错误,会渲染在对应字段控件的DOM节点附近,可通过DOM选择器定位并读取错误文本:

// 获取目标字段控件
const fieldControl = formContext.getControl("fieldname");
// 获取控件对应的DOM元素
const domElement = fieldControl.getDomElement();
// 查找原生错误提示元素(不同UI版本可能需要调整选择器)
const errorElement = domElement.parentNode.querySelector(".ms-crm-Field-Error");
if (errorElement) {
    console.log("字段原生错误消息: " + errorElement.textContent.trim());
}

注意:DOM选择器可能随Dynamics CRM(Dataverse)的UI版本变化,需根据实际页面结构微调。

2. 自定义存储字段通知记录

如果是自己通过脚本设置的字段级通知,可以在调用setNotification()时,同步将通知信息存储在全局对象中,后续直接读取该对象即可:

// 全局对象存储自定义字段通知
window.customFieldNotifications = {};

// 设置字段通知并同步存储
function setCustomFieldNotification(controlName, message, uniqueId) {
    const control = formContext.getControl(controlName);
    control.setNotification(message, uniqueId);
    // 记录通知信息
    window.customFieldNotifications[controlName] = {
        message: message,
        notificationId: uniqueId
    };
}

// 获取自定义设置的字段通知
function getCustomFieldNotification(controlName) {
    return window.customFieldNotifications[controlName] || null;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 09:21:01