Добро пожаловать в мой блог! Изначально он не задумывался как блог 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



