在Web API(客户端)中,尝试使用SavedQuery(view)检索OpportunityProduct实体的记录。
能够检索现有产品的名称(产品实体的查找值),但是,相同的结果不包含Product实体的所有属性,尽管它们被添加到View I' m检索并且这些属性的值不为空。
这是代码,用于检索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 %
列,该列是我尝试检索的产品实体的自定义属性。
任何人都可以指导我如何检索相关实体的(产品)属性或View上指定的所有列?
答案 0 :(得分:1)
在今天早上做了一些努力之后,我了解到Product
在Existing Product
中添加OpporutnityProduct
时,您可以在opportunityProduct
上检索所有视图字段,无论如何是否属于OpporutnityProduct
实体或其任何相关实体。
但是当Product
添加为Write-in Product
时,您可以检索仅属于OpportunityProduct
实体的字段。
我无法找到Discount %
实体的Product
列,因为使用Product
选项添加了Write-in Product
。
当我使用Product
选项添加Existing Product
时,我可以使用相同的代码检索它。
希望这会有所帮助。