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 % 列,它是我尝试检索的产品实体的自定义属性。

谁能指导我如何检索相关实体的(产品)属性或视图上指定的所有列?

经过今天早上的努力,我了解到当ProductOpporutnityProduct中添加为Existing Product时,您可以检索opportunityProduct上的View的所有字段,无论它们是否属于 OpporutnityProduct 实体或其任何相关实体。

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

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

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

希望这会有所帮助。