Dynamics 365 Web API:保存的查询未检索相关实体的所有列
Dynamics 365 Web API: Saved Query does not retrieve related entity's all columns
在 Web API(客户端)中,尝试使用 SavedQuery(视图)检索 OpportunityProduct 实体的记录。
能够检索现有产品的名称(产品实体的查找值),但是,相同的结果不包含产品实体的所有属性,尽管它们被添加到我正在检索的视图和 值这些属性不为空.
这是用于检索 SavedQuery 的代码:
var products = [];
var req = new XMLHttpRequest();
req.open("GET", window.parent.Xrm.Page.context.getClientUrl() + "/api/data/v9.0/opportunityproducts?savedQuery=********-****-****-****-************", true);
req.setRequestHeader("OData-MaxVersion", "4.0");
req.setRequestHeader("OData-Version", "4.0");
req.setRequestHeader("Accept", "application/json");
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);
console.log(results);
for (var i = 0; i < results.value.length; i++) {
var product = {
"Number": results.value[i]["productnumber"],
"Name": results.value[i]["_productid_value@OData.Community.Display.V1.FormattedValue"],
"Unit": results.value[i]["_uomid_value@OData.Community.Display.V1.FormattedValue"],
"PricePerUnit": results.value[i]["priceperunit@OData.Community.Display.V1.FormattedValue"],
"Quantity": results.value[i]["quantity@OData.Community.Display.V1.FormattedValue"],
"Discount": results.value[i]["manualdiscountamount@OData.Community.Display.V1.FormattedValue"],
"Discount%": results.value[i]["pub_discountpercentage"],
"ExtendedAmount": results.value[i]["extendedamount@OData.Community.Display.V1.FormattedValue"]
};
console.log(product);
products.push(product);
}
} else {
window.parent.Xrm.Utility.alertDialog(this.statusText);
}
}
};
req.send();
结果如下:
"value": [
{
"producttypecode": 1,
"priceperunit": 100,
"extendedamount": 190,
"sequencenumber": 1,
"quantity": 2,
"opportunityproductid": "********-****-****-****-************",
"manualdiscountamount": 10,
"productdescription": "Test 1",
"isproductoverridden": true
}
]
在附图中,请查看突出显示的 Discount %
列,它是我尝试检索的产品实体的自定义属性。
谁能指导我如何检索相关实体的(产品)属性或视图上指定的所有列?
经过今天早上的努力,我了解到当Product
在OpporutnityProduct
中添加为Existing Product
时,您可以检索opportunityProduct
上的View的所有字段,无论它们是否属于 OpporutnityProduct
实体或其任何相关实体。
但是当 Product
添加为 Write-in Product
时,您只能检索属于 OpportunityProduct
实体的字段。
我无法找到 Product
实体的 Discount %
列,因为 Product
是使用 Write-in Product
选项添加的。
当我使用 Existing Product
选项添加 Product
时,我可以使用同一段代码检索它。
希望这会有所帮助。
在 Web API(客户端)中,尝试使用 SavedQuery(视图)检索 OpportunityProduct 实体的记录。
能够检索现有产品的名称(产品实体的查找值),但是,相同的结果不包含产品实体的所有属性,尽管它们被添加到我正在检索的视图和 值这些属性不为空.
这是用于检索 SavedQuery 的代码:
var products = [];
var req = new XMLHttpRequest();
req.open("GET", window.parent.Xrm.Page.context.getClientUrl() + "/api/data/v9.0/opportunityproducts?savedQuery=********-****-****-****-************", true);
req.setRequestHeader("OData-MaxVersion", "4.0");
req.setRequestHeader("OData-Version", "4.0");
req.setRequestHeader("Accept", "application/json");
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);
console.log(results);
for (var i = 0; i < results.value.length; i++) {
var product = {
"Number": results.value[i]["productnumber"],
"Name": results.value[i]["_productid_value@OData.Community.Display.V1.FormattedValue"],
"Unit": results.value[i]["_uomid_value@OData.Community.Display.V1.FormattedValue"],
"PricePerUnit": results.value[i]["priceperunit@OData.Community.Display.V1.FormattedValue"],
"Quantity": results.value[i]["quantity@OData.Community.Display.V1.FormattedValue"],
"Discount": results.value[i]["manualdiscountamount@OData.Community.Display.V1.FormattedValue"],
"Discount%": results.value[i]["pub_discountpercentage"],
"ExtendedAmount": results.value[i]["extendedamount@OData.Community.Display.V1.FormattedValue"]
};
console.log(product);
products.push(product);
}
} else {
window.parent.Xrm.Utility.alertDialog(this.statusText);
}
}
};
req.send();
结果如下:
"value": [
{
"producttypecode": 1,
"priceperunit": 100,
"extendedamount": 190,
"sequencenumber": 1,
"quantity": 2,
"opportunityproductid": "********-****-****-****-************",
"manualdiscountamount": 10,
"productdescription": "Test 1",
"isproductoverridden": true
}
]
在附图中,请查看突出显示的 Discount %
列,它是我尝试检索的产品实体的自定义属性。
谁能指导我如何检索相关实体的(产品)属性或视图上指定的所有列?
经过今天早上的努力,我了解到当Product
在OpporutnityProduct
中添加为Existing Product
时,您可以检索opportunityProduct
上的View的所有字段,无论它们是否属于 OpporutnityProduct
实体或其任何相关实体。
但是当 Product
添加为 Write-in Product
时,您只能检索属于 OpportunityProduct
实体的字段。
我无法找到 Product
实体的 Discount %
列,因为 Product
是使用 Write-in Product
选项添加的。
当我使用 Existing Product
选项添加 Product
时,我可以使用同一段代码检索它。
希望这会有所帮助。