Microsoft Dynamics CRM 4.0 | Scriptspass mit Benutzernachrichten

 

Wie Ihr alle wisst, ist es bei Formularprüfungen, Datensatzeingaben, etc. immer von Vorteil dem User mitzuteilen, welche Art Fehler er bei der Eingabe begangen hat oder welche Informationen vorab der Speicherung des Datensatzes noch ergänzt werden sollte(n). Oftmals finde ich bei der Bearbeitung vorhandener Systemanpassungen hierfür in den Scripten entsprechende “alert ()”-Meldungen. Zugegeben, mit Hilfe des “alert ()”-Befehls lassen sich an den Nutzer verschiedenste Statusinformationen einfach übermitteln. Hat man jedoch viel mitzuteilen, ist es in der täglichen Anwendung wenig hilfreich, wenn ich alert()- für alert()-Meldung einzeln ausgegeben bekomme und diese mit einem OK beenden muss.

Auf der Suche nach einer geeigneteren Lösung bin ich auf eine Script im Original von Marco Amoedo gestoßen. Mit Hilfe seiner JavaScript-Funktion lassen sich Warnmeldungen direkt in der Kopfzeile der jeweiligen Form ausgegeben.

image

Diese Art der Benachrichtigung des Nutzers über gewisse Stati fügt sich wesentlich charmanter in die Arbeit mit Microsoft Dynamics CRM ein. Kurz darauf fand ich dann noch die Verbesserung des Scripts von Dejan Dular, der sich vermutlich ähnlich begeistert wie ich, mit dem Code auseinandergesetzt hat und wirklich sinnvoll verbessert hat.

Mit Hilfe seiner “pimped”-Version, können wir die Hinweis-/Warn- oder sonstige Stati-Informationen wesentlich leichter kontrollieren und besser an unsere Anforderungen hin anpassen.

Ein Beispiel der Nutzung möchte ich Euch aus einem Projekt von mir nachfolgend vorstellen.

Die Anforderung: Anzeige der verbleibenden Zeichen zu dem Beschreibungsfeld auf den Aktivitäten (ähnlich der Anzeige der verbleibenden Zeichen bei der Erstellung von SMS-Nachrichten).

Im Standard ist das Beschreibungsfeld auf 2.000 Zeichen hin eingeschränkt, so dass bei der Eingabe von Beschreibungstexten –  insbesondere, wenn man das Beschreibungsfeld zur Dokumentation seiner Arbeiten nutzt – schnell die Zeichen ausgehen. Besonders heikel wird es dann noch, wenn man Texte aus anderen Programmen aus der Zwischenablage heraus einfügt und die Zeichenanzahl überschreitet. Warum?

CRM schneidet bei der Speicherung des Datensatzes die Zeichen nach dem Maximum ab, gibt noch eine Hinweismeldung an den Nutzer aus, aber der unter Umständen mühsam erarbeitete Text wird pauschal gekürzt.

Daher wollte ich noch einen Schritt weiter gehen und den Text bei Überschreitung der Gesamtzeichenkapazität in jedem Fall retten. Die Lösung: Nutzung der Zwischenablage.

Zunächst also mit Hilfe des Scripts die Benachrichtigungen im OnLoad() integriert

addNotification=function(message,messageType,notificationId){
var notificationsArea=document.getElementById('Notifications')
if(notificationsArea==null){
if(messageType !=4){
alert(message)}
return}
var notificationDIV=document.getElementById('NotificationDiv_'+notificationId)
if(messageType==4){
if(notificationDIV !=null){
notificationsArea.removeChild(notificationDIV)}
return}
var notificationImage
switch(messageType){
case 1:
notificationImage='/_imgs/error/notif_icn_crit16.png'
break
case 2:
notificationImage='/_imgs/error/notif_icn_info16.png'
break
case 3:
notificationImage='/_imgs/error/notif_icn_warn16.png'
break
default:
notificationImage='/_imgs/error/notif_icn_info16.png'}
var notificationTable='<TABLE cellSpacing="0" cellPadding="0"><TBODY><TR><TD vAlign="top"><IMG class="ms-crm-Lookup-Item" alt="" src="'+notificationImage+'" /></TD><TD><SPAN>'+message+'</SPAN></TD></TR></TBODY></TABLE>'
if(notificationDIV==null){
var notificationHTML='<DIV class="Notification" ID="NotificationDiv_'+notificationId+'">'+notificationTable+'</DIV>'
notificationsArea.innerHTML+=notificationHTML
notificationsArea.style.display='block'}
else{
notificationDIV.innerHTML=notificationTable}}

Und nun kommen wir zu dem eigentlichen Zeichen-Zähler, sowie der Routine, die bei Überschreitung der Zeichenanzahl den Inhalt an die Zwischenablage übergibt:

function limitText(){
counter(crmForm.all.description.DataValue,2000,'Beschreibung',1)}
function counter(lmField,lmNum,fTitle,messageId){
var limitstring=lmField
var Field=fTitle
if(limitstring==null){
limitstring=''}
if(limitstring.length>lmNum){
var limitcounter=lmNum-limitstring.length
addNotification('Sie haben den Höchstwert von '+lmNum+' Zeichen für das Feld '+Field+' überschritten. Die überschüssigen Zeichen finden sich in der Zwischenablage.',3,messageId)
var overhead = limitstring.substring(lmNum, limitstring.length)
window.clipboardData.setData('Text',overhead)}
else{
var limitcounter=lmNum-limitstring.length
addNotification('Es sind noch '+limitcounter+' Zeichen am Feld '+Field+' übrig',2,messageId)}}
crmForm.all.description.attachEvent("onkeyup",limitText)
crmForm.all.description.attachEvent("onmouseout",limitText)

Dies soll Euch nur ein Beispiel geben, wie man mit Hilfe der Nutzer-Benachrichtigungen und ein paar Feldprüfungen die Interaktion mit dem Anwender verbessern kann. Ich wünsche viel Spass bei der Umsetzung.

 

Ein Gedanke zu “Microsoft Dynamics CRM 4.0 | Scriptspass mit Benutzernachrichten

  1. Pingback: Microsoft Dynamics CRM 2011 | Script-Migration von 4.0 « Microsoft Dynamics CRM & Co

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s