Dynamics 365 CRM: Показать / Скрыть в формах на основе статуса от другой сущности - PullRequest
0 голосов
/ 27 ноября 2018

Я работаю в CRM и создал два новых квалификационных статуса для выигрыша.Первый статус - «Назначение выполнено», а второй - «Аппаратное обеспечение».Когда вы выбираете один из них и квалифицируете потенциальную возможность, ее статус изменяется на выбранную вами опцию.

В формах возможностей у меня есть вкладка с разделом и полями, в которые входят поля дляиспользуется, если выбрано «Назначение выполнено» и то же самое для «Аппаратного цитирования».

Мне нужна помощь с кодом JavaScript, который, я надеюсь, можно вставить в событие в свойствах формы / поля, чтобы скрыть другую вкладку, если она была выбрана изначально.

Вот примерный код, над которым я работал:

function showHideTabAndSection() {
    var statuscode = $("#statuscode").val();
    var showTab = false;
    var showSection = false;

    if (statuscode = 100000004) {
        showTab = true;
        showSection = true;
    }
    Xrm.Page.ui.tabs.get("TestTab1").setVisible(showTab);
    Xrm.Page.ui.tabs.get("TestTab1").sections.get("TestSection1").setVisible(showSection);
}

Кто-нибудь может помочь?Благодаря.

Ответы [ 3 ]

0 голосов
/ 27 ноября 2018

При загрузке формы возможности получите значение поля originatingleadid из текущей записи возможности и используйте его для получения statuscode для управления видимостью вкладки / раздела.

Рекомендую использовать CRMREST Builder & Я сгенерировал оттуда этот код ниже.Если вы в V9, вы можете использовать веб-API , чтобы сделать то же самое.

var req = new XMLHttpRequest();
req.open("GET", Xrm.Page.context.getClientUrl() + "/api/data/v8.2/leads(<<originatingleadid of opportunity>>)?$select=statecode,statuscode", true);
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 statecode = result["statecode"];
            var statecode_formatted = result["statecode@OData.Community.Display.V1.FormattedValue"];
            var statuscode = result["statuscode"];
        } else {
            Xrm.Utility.alertDialog(this.statusText);
        }
    }
};
req.send();
0 голосов
/ 28 ноября 2018

Допустим, Назначение сделано имеет значение 1, Аппаратное обеспечение имеет значение 2.

function showHideTabAndSection() {
    var statuscode = Xrm.Page.getAttribute("statuscode").getValue();
    switch (statuscode) {
        case 1:
            Xrm.Page.ui.tabs.get("appointMadeTab").setVisible(true);
            Xrm.Page.ui.tabs.get("hardwareQuotedTab").setVisible(false);
            break;
        case 2:
            Xrm.Page.ui.tabs.get("appointMadeTab").setVisible(false);
            Xrm.Page.ui.tabs.get("hardwareQuotedTab").setVisible(true);
            break;
    }
}

Надеюсь, это поможет.

0 голосов
/ 27 ноября 2018

убедитесь, что «statuscode» в той же форме, что и «TestTab1» или в другой форме.если они были в разных формах, вы должны получить их значение.

См. это: JavaScript - Запрос OData

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