Javascript 运行客户字段代码时未定义实体类型

Javascript 运行客户字段代码时未定义实体类型,javascript,dynamics-crm,Javascript,Dynamics Crm,我一直在写这段代码。当我运行它并且一些字段不存在时,会弹出实体类型未定义的错误。我尝试了If语句,但仍然不起作用。我已经读到它可能与货币有关,但我似乎不知道是什么。我是一个初学者,其中大部分不是我的代码。救命啊!谢谢 函数customerSelected(){ var customerID=Xrm.Page.getAttribute(“customerID”).getValue(); var custID=customerID[0].id.substr(1,36); var req=新的XMLH

我一直在写这段代码。当我运行它并且一些字段不存在时,会弹出
实体类型未定义的错误
。我尝试了If语句,但仍然不起作用。我已经读到它可能与货币有关,但我似乎不知道是什么。我是一个初学者,其中大部分不是我的代码。救命啊!谢谢

函数customerSelected(){
var customerID=Xrm.Page.getAttribute(“customerID”).getValue();
var custID=customerID[0].id.substr(1,36);
var req=新的XMLHttpRequest();
请求打开(“GET”,Xrm.Page.context.getClientUrl()+”/api/data/v8.2/accounts?$select=\u defaultpricelevelid\u值,paymenttermscode,shippingmethodcode&$filter=accountid eq“+custID+”&$orderby=name asc”,true);
请求setRequestHeader(“OData MaxVersion”,“4.0”);
请求setRequestHeader(“OData版本”、“4.0”);
请求setRequestHeader(“接受”、“应用程序/json”);
setRequestHeader(“内容类型”,“应用程序/json;字符集=utf-8”);
req.setRequestHeader(“首选”、“odata.include注释=\”*\”);
req.onreadystatechange=函数(){
if(this.readyState==4){
req.onreadystatechange=null;
如果(this.status==200){
var results=JSON.parse(this.response);
对于(var i=0;i
您的查询始终只返回一条记录,因此使用循环来迭代结果是没有意义的

条件
(“pricelevelid”!=null)
将始终为
。它可能应该是
(\u defaultpricelevelid\u value!=null)
。下面的线条也是如此

您的代码正在将
\u defaultpricelevelid\u lookupVal
分配给三个独立的属性,这是不正确的。显然,该对象应该表示引用实体
pricelevel
的查找ID值。因此,将其分配给属性
pricelevelid
才有意义
paymenttermscode
shippingmethodcode
是选项集属性,显然需要用同名变量的值填充

用以下代码替换循环的

if (results.value[0]._defaultpricelevelid_value != null) {
    var priceLevelId = [{
        id = results.value[0]._defaultpricelevelid_value,
        name = results.value[0]["_defaultpricelevelid_value@OData.Community.Display.V1.FormattedValue"],
        entityType = "pricelevel"
    }];

    Xrm.Page.getAttribute("pricelevelid").setValue(priceLevelId);
}

if (results.value[0].paymenttermscode != null) {
    Xrm.Page.getAttribute("paymenttermscode").setValue(results.value[0].paymenttermscode);
}

if (results.value[0].shippingmethodcode != null) {
    Xrm.Page.getAttribute("shippingmethodcode").setValue(results.value[0].shippingmethodcode);
}

1) 此'results.value[i][“paymenttermscode”]”可以为空,此'pricelevelid'不能为空。2) 数据模型应该是一致的,字段应该存在。但它们的值可能是空的。这就是问题所在吗?3) 代码中可能有更多的问题,但哪一行代码会抛出错误?它不会显示为脚本错误。在我的VSCode中,一切看起来都很好。为什么pricelevelid不能为空?一些潜在客户没有这些领域。因此,我试图使它至少可以得到它们所拥有的字段。1)如果它有引号,它是一个常量值,这就是你所看到的,它是“pricelevelid”。它不是空的。以及数字,如27,不是空的。但是名为pricelevelid的变量可以为null。3) 尝试单步遍历F12工具中的代码以查找损坏的行。F12调试器没有显示任何内容。我不明白你在说什么。关于它。我还对if语句进行了这些编辑。if(_defaultpricelevelid_value_formatted!=null)if(paymenttermscode_formatted!=null)if(shippingmethodcode_formatted!=null)