как получить метку optionset в crm - PullRequest
0 голосов
/ 27 июня 2018

Я использую D-CRM 2016. Я пытаюсь получить метку набора параметров на стороне клиента (js), я получаю ошибку и не могу найти причину, почему: вот мой код:

SDK.Metadata.RetrieveAttribute("myEntity", "myFieldName", null, false,
                function (result) {
                alert(result);
                for (var i = 0; i < result.OptionSet.Options.length; i++) {
                var loopText = result.OptionSet.Options[i].Label.LocalizedLabels[0].Label;
                var loopValue = result.OptionSet.Options[i].Value;

            }
   },
function (error) { }
,false);

Моя ошибка:

Uncaught TypeError: _Context(...).getServerUrl is not a function
    at _getUrl (/SDev/%7B636656731400000359%7D/WebResources/xnes_SDK.MetaData?ver=1561501807:451)
    at Object.RetrieveAttribute (/SDev/%7B636656731400000359%7D/WebResources/xnes_SDK.MetaData?ver=1561501807:323)
    at <anonymous>:1:14
    at Mscrm.CommandHandler.$Ce_1 (JsProvider.ashx:8)
    at Mscrm.CommandHandler.$Ag_1 (JsProvider.ashx:8)
    at Mscrm.CommandHandler.handleCommand (JsProvider.ashx:8)
    at Mscrm.CommandBarData.executeCommand (JsProvider.ashx:8)
    at Mscrm.ButtonControl.executeCommand (ribbon.js:1)
    at Mscrm.ButtonControl.click (ribbon.js:1)
    at Mscrm.CommandBar.onClickHandler (ribbon.js:1)

Ответы [ 2 ]

0 голосов
/ 23 июля 2018

Основная проблема связана с используемым вами SDK. Я не могу отладить это для тебя.

Однако вот рабочий образец, который возвращает метку и значение. Там можно добавить заголовок (Prefer), чтобы указать API, чтобы он также возвращал метку:

var odataEndPoint = Xrm.Page.context.getClientUrl() + '/api/data/v8.2/';

function GetDomainName(entityId) {
        var result = null;

        var req = new XMLHttpRequest();
        req.open("GET", odataEndPoint + 'systemusers(' + TrimGuid(entityId) + ')/', 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) {
                    if (this.response) {
                        result = JSON.parse(this.response);
                    }
                }
                else {
                    var parsed = JSON.parse(this.response);
                    console.error(parsed.error.message)
                }
            }
        };

        req.send();
        return result;
    };
0 голосов
/ 27 июня 2018

Каждый раз, когда вы пытаетесь сделать клиентские вызовы покоя, я всегда рекомендую Jason Lattimer CRM Rest Builder (https://github.com/jlattimer/CRMRESTBuilder). Вы можете получить доступ к текстовым меткам, используя опцию «Отформатированные значения».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...