Ошибка отображения Microsoft Dynamics CRM, возвращенная из плагина через javascript

#dynamics-crm-2011 #dynamics-crm #dynamics-crm-online #dynamics-crm-2013

#dynamics-crm-2011 #dynamics-crm #dynamics-crm-online #dynamics-crm-2013

Вопрос:

Я использую Microsoft Dynamics CRM (вне помещения)

Microsoft Dynamics® CRM Online Spring ’14 (6.1.0.575)

Через javascript SDK выполнение вызова для создания объекта, который запускает плагин. Мы выполняем наши пользовательские проверки в плагине в режиме предварительной проверки.

Пример создания вызова Javascript отсюда -> http://msdn.microsoft.com/en-us/library/gg334427.aspx

 //Create the Account
SDK.REST.createRecord(
  account,
  "Account",
  function (account) {
    writeMessage("The account named ""   account.Name   "" was created with the AccountId : ""   account.AccountId   "".");
    writeMessage("Retrieving account with the AccountId: ""   account.AccountId   "".");
    retrieveAccount(account.AccountId)
  },
  errorHandler
);
 

И затем я могу обработать ошибку, используя эту функцию ErrorHandler, например:

 function errorHandler(error) {
   writeMessage(error.message);
}
 

Тем не менее, я пытаюсь отобразить ошибку в диалоговом окне ошибки CRM из InvalidPluginExecutionException . Он отображает его, когда я создаю объект из формы, но когда я выполняю вызов через javascript, я, похоже, не могу заставить его отображаться в диалоговом окне ошибки CRM. Я хочу сохранить тему CRM, не использовать alert () в javascript, и чтобы пользователи могли загружать полное исключение, которое мы отправляем обратно.

Можно ли вызвать страницу dlg_error.aspx в CRM и заполнить ее нашим сообщением об ошибке? Сейчас я хватаюсь за соломинку, все, что угодно, очень помогло бы. Спасибо!

Комментарии:

1. Разве вы не можете использовать пользовательский рабочий процесс или плагин для создания записи объекта вместо использования JavaScript!

2. Javascript запускает наш плагин, то же самое нужно сделать с рабочим процессом. Таким образом, плагины запускаются действием для объекта, такого как create, update или delete . Вот как можно запустить рабочий процесс msdn.microsoft.com/en-us/library/bb955335.aspx Возможно, есть способ запустить рабочий процесс, но это все равно должно быть сделано с помощью javascript, насколько я знаю, спасибо за ваш ответ!

3. Нет, вам не нужен JavaScript для запуска рабочего процесса. Создайте рабочий процесс «Запуск по требованию». На ленте у вас будет возможность запустить рабочий процесс. Я не знаю, при каком действии вы запускаете Javascript (при загрузке, сохранении, изменении или нажатии кнопки ленты). Не могли бы вы объяснить, чтобы я мог понять, чего вы пытаетесь достичь. С уважением

4. Это может сработать, я попробую. Конечная цель состоит в том, чтобы мой плагин отображал исключение в диалоговом окне ошибки CRM с кнопкой загрузки для файла трассировки. Я запускаю свой плагин с созданием объекта, и в настоящее время я создаю этот объект в javascript. Но я попробую идею рабочего процесса и сообщу вам, как это происходит. Спасибо!

5. Worflow не будет отображать ошибку точно так, как выдает плагин. Вы должны перейти к процессу, чтобы получить сведения об ошибке.

Ответ №1:

Если вы используете CRM 2013, я бы посоветовал вам использовать Workflow вместо JavaScript для создания записи.

  1. Создайте новый рабочий процесс и снимите флажок «Запустить этот рабочий процесс в фоновом режиме (рекомендуется)».

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

  1. Создайте запись из вновь созданного рабочего процесса.
  2. Сохраните и опубликуйте запись.
  3. Теперь перейдите на ленту и выберите «Запустить рабочий процесс».
  4. Выберите только что созданный рабочий процесс и нажмите «Добавить».
  5. Если плагин выдает ошибку, она будет отображаться в стандартном диалоговом окне CRM Error, которое позволит вам загрузить файл журнала.

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

Ответ №2:

Вы можете попробовать выполнить синхронный метод jQuery ajax без перехвата ошибки и посмотреть, что произойдет. Создавая запись из JScript, вы используете RESTful endpoint службы CRM, я не уверен, будет ли ошибка продвигаться таким же образом. Попробуйте использовать Fiddler, если вы хотите попробовать открыть диалоговое окно с ошибкой самостоятельно. Использование новой функции синхронного рабочего процесса также может помочь.