#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 для создания записи.
- Создайте новый рабочий процесс и снимите флажок «Запустить этот рабочий процесс в фоновом режиме (рекомендуется)».
- Создайте запись из вновь созданного рабочего процесса.
- Сохраните и опубликуйте запись.
- Теперь перейдите на ленту и выберите «Запустить рабочий процесс».
- Выберите только что созданный рабочий процесс и нажмите «Добавить».
- Если плагин выдает ошибку, она будет отображаться в стандартном диалоговом окне CRM Error, которое позволит вам загрузить файл журнала.
Ответ №2:
Вы можете попробовать выполнить синхронный метод jQuery ajax без перехвата ошибки и посмотреть, что произойдет. Создавая запись из JScript, вы используете RESTful endpoint службы CRM, я не уверен, будет ли ошибка продвигаться таким же образом. Попробуйте использовать Fiddler, если вы хотите попробовать открыть диалоговое окно с ошибкой самостоятельно. Использование новой функции синхронного рабочего процесса также может помочь.