Показывать предупреждение (НЕ об ошибке) пользователю из плагина

В решении CRM, над которым я работаю, есть случай, когда пользователю необходимо показать предупреждающее сообщение на основе результатов выполнения плагина после отправки определенной формы. Операция все равно должна завершиться успешно, поэтому создание исключения из плагина не является хорошим решением.

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

Является ли единственным вариантом сохранить содержимое предупреждающего сообщения в настраиваемое поле некоторого объекта и использовать функцию javascript в форме, чтобы определить, когда отображать его пользователю?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
3
0
461
3

Ответы 3

  1. Реализуйте пользовательское действие рабочего процесса с бизнес-логикой, которую в настоящее время выполняет ваш плагин.

  2. Создайте и активируйте действие, которое использует это действие рабочего процесса.

  3. Закодируйте функцию JS, связанную с событием OnSave формы, которая вызывает это действие, выполняя Запрос WebApi. Наконец, после обработки действия вы можете вызвать стандартный клиентский API setFormNotification, чтобы создать собственное предупреждающее сообщение в верхней части формы.

Вы получите красивое пользовательское сообщение, подобное этому:

Спасибо за ответ. Я не уверен, будет ли практично использовать это для нас, так как это потребует переработки большого количества устоявшейся логики только для обработки незначительного пограничного случая. Я думаю, что мы могли бы просто попытаться найти другой подход для удовлетворения требований пользователя, не полагаясь на то, что эта форма возвращает предупреждающее сообщение. Хотя, возможно, это будет полезно кому-то еще.

K. Oja 19.03.2019 22:47

Вместо отображения уведомления (setFormNotification) вы можете использовать диалоговое окно подтверждения и остановить или продолжить сохранение записи в соответствии с нажатой кнопкой

Marcelo Acosta Díaz 21.03.2019 02:08

Да прямого пути нет.

Вы можете иметь фиктивное поле в той же записи объекта, установить/обновить значение этого поля из плагина в соответствии с вашими потребностями в предупреждающем сообщении, и onChange этого поля будет запущено в пользовательском интерфейсе при успешном выполнении плагина.

Вы можете отобразить сообщение пользователю из этого обработчика onChange. Подробнее

Документация говорит:

Field OnChange event

This event also occurs when data changes on the server are retrieved to update a field when the form is refreshed, such as after a record is saved.

Таким образом, вы можете успешно выполнить плагин без выбрасывания InvalidPluginExecutionException, можете избежать пользовательских объектов, пользовательских действий и т. д.

Хотя это более быстрое решение и выполняет свою работу, я с ним не согласен. Создание полей для решения подобных проблем легко приводит к раздуванию объектов с большим количеством полей, чем должно представлять их домены.

André Cavaca 20.03.2019 11:57

@AndréCavaca да, это минимальный побочный эффект... но это проще, чем изменение дизайна...

Arun Vinoth - MVP 20.03.2019 12:18

Вы добавите поле для удовлетворения бизнес-требований. В этом нет ничего раздутого.

Aron 20.03.2019 15:08

Ну, вы можете использовать Действия.

Создать действие с выходным параметром. Зарегистрируйте свой плагин в Custom Message(Action). Вызовите действие с помощью JavaScript в событии сохранения формы. Вы получите вывод действия в JavaScript, то же самое можно показать в форме.

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

Перейдите по этой ссылке для работы с действиями. https://www.magnetismsolutions.com/blog/dominicjarvis/2017/09/18/how-to-trigger-plugins-on-custom-messages-using-actions-in-dynamics-365

Другие вопросы по теме