如何列出控制台中脏的所有CRM字段?

时间:2017-12-21 14:18:43

标签: javascript dynamics-crm dynamics-crm-2015 xrm

我一直在寻找一种方法来获取CRM表单中所有脏字段的列表,以确定更改内容并需要保存在浏览器控制台中。这将帮助我调试一般的javascript或其他CRM相关问题

我怎样才能实现这个目标?

2 个答案:

答案 0 :(得分:0)

您可以使用以下代码作为参考

var attribs = Xrm.Page.data.entity.attributes.get();

获取from中所有字段的列表,然后调用函数getIsDirty()作为

var filterDirty = attribs.filter(function(elem,index,attribs){   
        var name =  elem.getName();
        return (Xrm.Page.getAttribute(name).getIsDirty() === true);
});

现在filterDirty将包含所有脏字段的数组,您只需将其打印为地图

filterDirty.map(function(e){ console.log(e.getName()); });

注意:只要确保Xrm可用,就可以看到为什么在我here

上面描述的内容之前还有其他代码?

整个代码看起来像这样

// get the correct frame
for(var i=0;i<5;i++) //loop through 0 to 4
    if(frames[i].Xrm.Page.ui != undefined) //check if undefined    
    {
        Xrm = frames[i].Xrm;  //assign Xrm
        console.info("~: Xrm updated with frame " + i + " :~"); //show info
        break; //breakout the loop
    }

//Query
var attribs = Xrm.Page.data.entity.attributes.get();

//Filter
var filterDirty = attribs.filter(function(elem,index,attribs){   
        var name =  elem.getName();
        return (Xrm.Page.getAttribute(name).getIsDirty() === true);
});

//print
filterDirty.map(function(e){
  console.log(e.getName()); 
});

答案 1 :(得分:0)

打开开发人员工具(F12),选择控制台,然后输入以下内容:

Xrm.Page.data.entity.getDataXml()

如果返回错误“未捕获的TypeError:无法读取null的属性'实体'”,请尝试

frames[0].Xrm.Page.data.entity.getDataXml()

frames[1].Xrm.Page.data.entity.getDataXml()

返回的Xml将以XML形式列出脏字段及其值。例如

<contact><firstname>changed on form but not saved in db</firstname></contact>