Dynamics Crm 2016 онлайн: создание записи на стороне клиента предотвращает неработоспособность

#javascript #dynamics-crm-2016

#javascript #dynamics-crm-2016

Вопрос:

Я пытаюсь предотвратить создание записи на прием, если выполняются некоторые условия, но строка Xrm.Page.context.getEventArgs().preventDefault(); не работает, и запись создается. Вот весь код, вызов синхронный:

 var req = new XMLHttpRequest();
req.open("GET", Xrm.Page.context.getClientUrl()   "/api/data/v8.0/appointments?$select=activityidamp;$filter=<my filter>", 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="OData.Community.Display.V1.FormattedValue"");
req.onreadystatechange = function () {
    if (this.readyState === 4) {
        req.onreadystatechange = null;
        if (this.status === 200) {
            var results = JSON.parse(this.response);
            if(results.value.length > 0)
            {
                Xrm.Utility.alertDialog('It is impossible to create the appointment.');
                Xrm.Page.context.getEventArgs().preventDefault();
            }
        }
        else {
            alert(this.statusText);
        }
    }
};
req.send();
  

Ответ №1:

В вашем коде должна быть ошибка по адресу Xrm.Page.context.getEventArgs() , в объекте контекста страницы нет свойства для аргумента события.

Вы должны передать контекст выполнения при сохранении, а затем использовать аргументы события контекста выполнения, чтобы остановить сохранение.

Настройка формы:

введите описание изображения здесь

Обработчик:

 function onSave(executionContext) {
  if(results.value.length > 0)
  {
    Xrm.Utility.alertDialog('It is impossible to create the appointment.');
    executionContext.getEventArgs().preventDefault();
  }
}