gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 21:12:50 27 4
gpt4 key购买 nike

我一直在研究这段代码。当我运行它并且某些字段不存在时,会弹出 Entity Type not defined 的错误。我尝试了 If 语句,但它仍然无法正常工作。我读过它可能与货币有关,但我似乎无法弄清楚是什么。我是初学者,其中大部分不是我的代码。帮助!谢谢。

function customerSelected() {
var customerID = Xrm.Page.getAttribute("customerid").getValue();
var custID = customerID[0].id.substr(1, 36);

var req = new XMLHttpRequest();
req.open("GET", Xrm.Page.context.getClientUrl() + "/api/data/v8.2/accounts?$select=_defaultpricelevelid_value,paymenttermscode,shippingmethodcode&$filter=accountid eq " + custID + "&$orderby=name asc", true);
req.setRequestHeader("OData-MaxVersion", "4.0");
req.setRequestHeader("OData-Version", "4.0");
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
req.setRequestHeader("Prefer", "odata.include-annotations=\"*\"");
req.onreadystatechange = function () {
if (this.readyState === 4) {
req.onreadystatechange = null;
if (this.status === 200) {
var results = JSON.parse(this.response);
for (var i = 0; i < results.value.length; i++) {
var _defaultpricelevelid_value = results.value[i]["_defaultpricelevelid_value"];
var _defaultpricelevelid_value_formatted = results.value[i]["_defaultpricelevelid_value@OData.Community.Display.V1.FormattedValue"];
var _defaultpricelevelid_value_lookuplogicalname = results.value[i]["_defaultpricelevelid_value@Microsoft.Dynamics.CRM.lookuplogicalname"];
var paymenttermscode = results.value[i]["paymenttermscode"];
var paymenttermscode_formatted = results.value[i]["paymenttermscode@OData.Community.Display.V1.FormattedValue"];
var shippingmethodcode = results.value[i]["shippingmethodcode"];
var shippingmethodcode_formatted = results.value[i]["shippingmethodcode@OData.Community.Display.V1.FormattedValue"];

var _defaultpricelevelid_lookupVal = new Array();
_defaultpricelevelid_lookupVal[0] = new Object();
_defaultpricelevelid_lookupVal[0].id = _defaultpricelevelid_value;
_defaultpricelevelid_lookupVal[0].name = _defaultpricelevelid_value_formatted;
_defaultpricelevelid_lookupVal[0].entityType = _defaultpricelevelid_value_lookuplogicalname;


if ("pricelevelid" != null)
{
Xrm.Page.getAttribute("pricelevelid").setValue(_defaultpricelevelid_lookupVal);
}


if ("paymenttermscode" != null)
{
Xrm.Page.getAttribute("paymenttermscode").setValue(_defaultpricelevelid_lookupVal);
}

if ("shippingmethodcode" != null)
{
Xrm.Page.getAttribute("shippingmethodcode").setValue(_defaultpricelevelid_lookupVal);
}
}
} else {
Xrm.Utility.alertDialog(this.statusText);
}
}
};
req.send();
};

最佳答案

您的查询将始终只返回一条记录,因此使用循环迭代结果没有意义。

条件 ("pricelevelid"!= null) 将始终为 true。它可能应该是 (_defaultpricelevelid_value != null)。下面的行也是如此。

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

用这段代码替换 for 循环:

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);
}

关于javascript - 运行客户字段代码时未定义实体类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45963396/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com