Dynamics 365 Web API:已保存的查询无法检索相关实体的所有列

时间:2018-01-02 13:29:19

标签: client-side-scripting dynamics-365

在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
    }
]

Shows columns available in View

在附加图片中,请参阅突出显示的Discount %列,该列是我尝试检索的产品实体的自定义属性。

任何人都可以指导我如何检索相关实体的(产品)属性或View上指定的所有列?

1 个答案:

答案 0 :(得分:1)

在今天早上做了一些努力之后,我了解到ProductExisting Product中添加OpporutnityProduct时,您可以在opportunityProduct上检索所有视图字段,无论如何是否属于OpporutnityProduct实体或其任何相关实体。

但是当Product添加为Write-in Product时,您可以检索仅属于OpportunityProduct实体的字段。

我无法找到Discount %实体的Product列,因为使用Product选项添加了Write-in Product

当我使用Product选项添加Existing Product时,我可以使用相同的代码检索它。

希望这会有所帮助。