Форматированное значение поля поиска из Web API в Microsoft Dynamics CRM не определено (невозможно получить форматированное значение) - PullRequest
1 голос
/ 01 апреля 2019

Я использую http-запрос для получения значения поля поиска и не могу его отформатировать result["_log_postalcode_value"] - показывает "ff4c33be-5139-e211-bd26-e41f13be0af4", но result["_log_postalcode_value@OData.Community.Display.V1.FormattedValue"] - не определено.Я изо всех сил пытался выяснить, что не так в моем коде, также пытался гуглить, но без ответов.Может быть, кто-нибудь может мне помочь.

var req = new XMLHttpRequest();

req.open("GET", window.parent.Xrm.Page.context.getClientUrl() + "/api/data/v8.2/accounts(" + guid + ")?$select=_log_postalcode_value", false);
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
req.setRequestHeader("OData-MaxVersion", "4.0");
req.setRequestHeader("OData-Version", "4.0");
req.setRequestHeader("Prefer", "odata.include-annotations=OData.Community.Display.V1.FormattedValue"); 
req.onreadystatechange = function () {
    if (this.readyState == 4) {          
        req.onreadystatechange = null;   
        if (this.status == 200) {
            var result = JSON.parse(this.response);             
            console.log(result["_log_postalcode_value"]);//shows "ff4c33be-5139-e211-bd26-e41f13be0af4"
            console.log(result["_log_postalcode_value@OData.Community.Display.V1.FormattedValue"]); // shows undefined

1 Ответ

0 голосов
/ 05 апреля 2019

Не могли бы вы попробовать CRM Rest Builder и посмотреть, какой вывод вы получите. Я только что попробовал ваш вариант использования в одном из моих экземпляров Trail, и он сработал для меня

var req = new XMLHttpRequest();
req.open("GET", Xrm.Page.context.getClientUrl() + "/api/data/v8.2/accounts(DC86C293-CA4F-E911-A82F-000D3A385A1C)?$select=accountid,_crmp_languagecode_value", false);
req.setRequestHeader("OData-MaxVersion", "4.0");
req.setRequestHeader("OData-Version", "4.0");
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
req.setRequestHeader("Prefer", "odata.include-annotations=\"*\"");
req.onreadystatechange = function() {
    if (this.readyState === 4) {
        req.onreadystatechange = null;
        if (this.status === 200) {
            var result = JSON.parse(this.response);
            var accountid = result["accountid"];
            var _crmp_languagecode_value = result["_crmp_languagecode_value"];
            var _crmp_languagecode_value_formatted = result["_crmp_languagecode_value@OData.Community.Display.V1.FormattedValue"];
            var _crmp_languagecode_value_lookuplogicalname = result["_crmp_languagecode_value@Microsoft.Dynamics.CRM.lookuplogicalname"];
        } else {
            Xrm.Utility.alertDialog(this.statusText);
        }
    }
};
req.send();

и вот результат, который я получил

{

    @odata.context:"[ORGURL]/api/data/v8.2/$metadata#accounts(accountid,_crmp_languagecode_value)/$entity",
    @odata.etag:"W/"3139254"",
    accountid:"dc86c293-ca4f-e911-a82f-000d3a385a1c",
    _crmp_languagecode_value@OData.Community.Display.V1.FormattedValue:"FR",
    _crmp_languagecode_value@Microsoft.Dynamics.CRM.associatednavigationproperty:"crmp_languagecode",
    _crmp_languagecode_value@Microsoft.Dynamics.CRM.lookuplogicalname:"crmp_languagecode",
    _crmp_languagecode_value:"78a6bb04-88db-e811-a961-000d3ab42b3b"

}
...