Добро пожаловать в мой блог! Изначально он не задумывался как блог CRM разработчика, но жизнь сама внесла нужные коррективы. Тут я публикою все свои наблюдения относительно обозначенных в заголовке систем. Если Вы найдете в нем что-то интересное для Вас, как для заказчика, то буду рад сотрудничать с Вами! В моей компетенции 100% задач по MS CRM 3.0/4.0/2011:
MVP 2010, 2011
- Консалтинг
- Проектирование
- Разработка
- Обучение
MVP 2010, 2011
Уведомления в стиле CRM
Запись от Артем Enot Грунин размещена 03.11.2009 в 13:31
Теги java script, notifications, unsupport
Бытует мнение, что при разработке пользовательского интерфейса не следует злоупотреблять модальными, диалоговыми и всплывающими и окнами. Я полностью его разделяю, так как все эти типы окошек являются непростительно навязчивыми. В качестве альтернативы можно использовать области уведомлений или подсказки ("воздушные шарики"). Даже в MS CRM некоторые типы уведомлений показываются не как "алерты", а в виде панели информации вверху формы. Недавно блог бот принес на форум статью как можно имитировать подобный функционал из JavaScript кода: Show custom notifications on Microsoft Dynamics CRM. Данный пост, как и цитированный в нем первоисточник, используют странный, на мой взгляд, подход: копирование готового кода MS вместо того, чтобы его переиспользовать! Почему бы не сэкономить строки кода? Вот мой вариант:
Данный код можно поместить на OnLoad формы или любой другой обработчик. В нем напрямую используются функции описанные в CRMWeb\_static\_controls\notifications\NotificationList.htc, так что решение, разумеется, не поддерживаемое. Плюс данного подхода: меньше кода и больше функций - код MS проводит проверку на уникальность уведомлений, а так же сортирует их по типу при добавлении.
p.s. Уведомления работают на пользовательских объектах.
p.p.s. Уведомлениями тоже не стоит злоупотреблять, так как они меняют размер формы.
Код:
// Тип иконки уведомления: параметр iSeverity: var ERROR = 1; var WARNING = 2; var INFORMATION = 3; // sId - уникальное имя метки (с одним именем две метки не добавятся) // iSeverity - ERROR, WARNING или INFORMATION // sText - текст сообщения function AddNotification(sId, iSeverity, sText) { var oNotifications = crmForm.all.Notifications; oNotifications.AddNotification(sId, iSeverity, "notused", sText); } // sId - уникальное имя метки // iSeverity - ERROR, WARNING или INFORMATION // sText - текст сообщения function EditNotification(sId, iSeverity, sText) { var oNotifications = crmForm.all.Notifications; var oNotificationsSet = oNotifications.GetNotifications(); var oNewSet = new Array(oNotificationsSet.length); for (var i = 0; i < oNotificationsSet.length; i++) { var oNotification = oNotificationsSet[i]; if (oNotification.Id == sId) { oNotification.Text = sText; oNotification.Severity = iSeverity; } oNewSet[i] = oNotification; } oNotifications.SetNotifications(oNewSet, "notused"); } // sId - уникальное имя метки function DeleteNotification(sId) { var oNotifications = crmForm.all.Notifications; var oNotificationsSet = oNotifications.GetNotifications(); var oNewSet = new Array(); for (var i = 0; i < oNotificationsSet.length; i++) { var oNotification = oNotificationsSet[i]; if (oNotification.Id != sId) { oNewSet.push(oNotification); } } oNotifications.SetNotifications(oNewSet, "notused"); } // Пример использования // Добавляем уведомления AddNotification("err", ERROR, "just added"); AddNotification("war", WARNING, "to be changed"); AddNotification("info", INFORMATION, "to be deleted"); // Среднее уведомление будет переименовано через 3 секунды // Нижнее уведомление будет удалено через 6 секунд window.setTimeout("do_ren()", 3000); window.setTimeout("do_del()", 6000); do_ren = function() { EditNotification("war", INFORMATION, 'was changed'); } do_del = function() { DeleteNotification("info"); }
p.s. Уведомления работают на пользовательских объектах.
p.p.s. Уведомлениями тоже не стоит злоупотреблять, так как они меняют размер формы.
Всего комментариев 0