Dynamics 365 Web API: сохраненный запрос не получает все столбцы связанных объектов

В веб-API(на стороне клиента) пытается извлечь записи сущности OpportunityProduct с помощью SavedQuery(просмотр).

Возможность извлечь имя существующего продукта (значения поиска сущности Product), однако, тот же результат не содержит все атрибуты сущности Product, хотя они добавляются в извлекаемое представление View, а значения этих атрибутов не пусты.

Вот код, используемый для получения 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, который я пытаюсь получить.

Кто-нибудь может подсказать мне, как я могу получить атрибуты связанной сущности (продукта) или все столбцы, указанные в представлении?

1 ответ

Решение

Приложив некоторые усилия сегодня утром, я узнал, что когда Product добавляется как Existing Product в OpporutnityProduct, тогда вы можете получить все поля просмотра на opportunityProductнезависимо от того, принадлежит ли он OpporutnityProduct юридическое лицо или любой из его связанных лиц.

Но когда Product добавляется как Write-in Product, то вы можете получить поля, которые принадлежат OpportunityProduct только сущность.

Я не смог найти Discount % столбец Product сущность, потому что Product был добавлен с помощью Write-in Product вариант.

Когда я добавил Product с помощью Existing Product вариант, я мог бы получить его, используя тот же кусок кода.

Надеюсь, это будет полезно.

Другие вопросы по тегам