Как мне работать с кнопкой сохранения и маршрутизации Dynamics 365? - PullRequest
1 голос
/ 06 февраля 2020

Мне нужно проверить, существуют ли какие-то заметки в Dynamics 365 перед сохранением и назначением (маршрутом), проблема в том, что выборка идет асинхронно c, а сохранение идет синхронно c ... Я знаю, что сейчас Microsft рекомендует перейти asyn c, так что такое жизнеспособное решение? Сохранить можно отменить и вызвать, но как я могу отменить и вызвать кнопку сохранить и проложить маршрут? или что-то подобное, чтобы сделать это asyn c?

Я пробовал много подобных вещей, но это не работает.

Есть ли некоторые AddChange для Notes (связаны субъекту)?

1 Ответ

0 голосов
/ 07 февраля 2020

Обычно мы отменяем событие Сохранить , используя preventDefault(), выполняем необходимые шаги и переиздаем Сохранить , как , обсужденное здесь .

В вашем сценарии специальная кнопка Save & Route обеспечивает сохранение, а также действие Apply Routing Rule . В этой последовательности нет режима сохранения, чтобы использовать getSaveMode для перехвата и переиздания. Ссылка

Но вы можете попробовать пользовательскую кнопку Сохранить и маршрут , используя инструментальные средства ленты, и вызвать пользовательское действие Javascript для выполнения:

  1. Проверка вашей заметки проверка записи с использованием fetchXML / web api
  2. Сохранение записи
  3. Вызов действия ApplyRoutingRule с использованием webapi Подробнее

Не забывайте, что Xrm.WebApi всегда асинхронный, вы должны выполнять цепочку вызовов внутри успешного обратного вызова или использовать XMLHttpRequest для синхронного режима. Подробнее

Обновление : я создал этот фрагмент с помощью CRM REST Builder, попробуйте его.

var parameters = {};
var target = {};
target.incidentid = "00000000-0000-0000-0000-000000000000"; 
target["@odata.type"] = "Microsoft.Dynamics.CRM.incident";
parameters.Target = target;

var applyRoutingRuleRequest = {
    Target: parameters.Target,

    getMetadata: function() {
        return {
            boundParameter: null,
            parameterTypes: {
                "Target": {
                    "typeName": "mscrm.crmbaseentity",
                    "structuralProperty": 5
                }
            },
            operationType: 0,
            operationName: "ApplyRoutingRule"
        };
    }
};

Xrm.WebApi.online.execute(applyRoutingRuleRequest).then(
    function success(result) {
        if (result.ok) {
            //Success - No Return Data - Do Something
        }
    },
    function(error) {
        Xrm.Utility.alertDialog(error.message);
    }
);
...