Microsoft Dynamics CRM 4.0 | Standard-Ansicht für Aktivitäten & historische Aktivitäten

Mittlerweile haben einige Kollegen hier im Netz Wege aufgezeigt, wie sich die Aktivitätenansichten image durch Anpassungen beeinflussen lassen. In meinen Projekten habe ich mich mit zwei Varianten (supported) näher auseinandergesetzt. Der Methode, die Micheal Höhne (stunnware) unter http://www.stunnware.com/crm2/topic.aspx?id=js11 veröffentlicht hat bzw. dem Update des Codes für 4.0 unter http://www.stunnware.com/crm2/topic.aspx?id=JS33, den er von Jonathan Briggs zugesandt bekommen hat und einem weiteren Ansatz von Adi Katz, der unter http://mscrm4ever.blogspot.com/2008/07/changing-activity-history-default-view.html zu finden ist.

Letzteren fand ich insbesondere spannend, da in einer Routine, sowohl die Ansicht der Aktivitäten, als auch die Ansicht der historischen Aktivitäten zu beeinflussen ist. In meinen Projekten, sorgte der Einsatz jedoch für einen Script-Fehler. Und zwar immer dann, wenn ich das Register wechselte. Dies hatte zur Folge, dass beim Verlassen des Datensatzes über Abbruch ohne Speichern oder auch mit Speichern der Anwender eine unschöne Fehlermeldung erhält.

...
var _loadarea = loadArea;
loadArea = function(areaid)
{
//load the iframe 
_loadarea(areaid);
//create the iframe object 
var iframe = document.getElementById(areaid + "Frame");
//wait until the iframe is fully loaded ("complete") 
iframe.onreadystatechange = function()
{
if( iframe.readyState == "complete")
{
...

 

Nachdem ich den Code analysiert hatte, fiel mir auf, das beim Wechsel des Registers die Variable iframe mit einem NULL-Wert belegt werden könnte.
Hier also der komplette Code mit einer Fehler-Abfrage zum NULL-Wert:

   1: //Activity scheduledend options 
   2: var ActivityOptions =
   3: {
   4: Overdue :"Overdue",
   5: Today :"Today",
   6: Tomorrow :"Tomorrow",
   7: Next7Days :"NextXDays;7",
   8: Next30Days :"NextXDays;30",
   9: Next90Days :"NextXDays;90",
  10: Next6Months :"NextXMonths;6"
  11: }
  12: //Activity History actualend options 
  13: var HistoryOptions =
  14: {
  15: Today : "Today",
  16: Yesterday : "Yesterday",
  17: Last7Days : "LastXDays;7",
  18: Last30Days : "LastXDays;30",
  19: Last90Days : "LastXDays;90",
  20: Last6Months : "LastXMonths;6",
  21: Last12Months: "LastXMonths;12"
  22: }
  23:  
  24: var _loadarea = loadArea;
  25: loadArea = function(areaid)
  26: {
  27: //load the iframe 
  28: _loadarea(areaid);
  29: //create the iframe object 
  30: var iframe = document.getElementById(areaid + "Frame");
  31: // added code to avoid NULL value
  32: if( iframe != null)
  33: {
  34: //wait until the iframe is fully loaded ("complete") 
  35: iframe.onreadystatechange = function()
  36: {
  37: if( iframe.readyState == "complete")
  38: {
  39: var picklist,option;
  40: //reference to the iframe document 
  41: var iframeDoc = iframe.contentWindow.document;
  42: switch(areaid)
  43: {
  44: case "areaActivityHistory":
  45: picklist = iframeDoc.all.actualend[0];
  46: /* change to suit your needs */
  47: option = HistoryOptions.Last90Days;
  48: break;
  49: case "areaActivities":
  50: picklist = iframeDoc.all.scheduledend[0];
  51: /* change to suit your needs */
  52: option = ActivityOptions.Next7Days;
  53: break;
  54: default: return;
  55: }
  56: picklist.value = option;
  57: picklist.FireOnChange();
  58: }
  59: }
  60: }
  61: } 

 

Damit gehört der Script-Fehler der Vergangenheit an. Viel Spass !

 

2 Gedanken zu “Microsoft Dynamics CRM 4.0 | Standard-Ansicht für Aktivitäten & historische Aktivitäten

  1. Hallo,haben Sie das mal probiert, wenn die Aktivitäten in einem IFRAME im Kontaktformular angezeigt werden bzw. wissen Sie, wie der Code dann aussehen müsste?Gruß

  2. Sehr schöner und sauberer Code,allerdings hat sich auch hier ein Fehler eingeschlichen…Damit der Code auch mit Custom-Sites, die über die ISV.Config hinzugefügt werden, umgehen kann sollten die Zeilen wie folgt angepasst werden:var _loadarea = loadArea;loadArea = function(areaid, sParams, sUrl, bIsvMode, bPassParams){_loadarea(areaid, sParams, sUrl, bIsvMode, bPassParams);Das hat mich einiges an Zeit gekostet… Falls einer mal auf ein ähnliches Problem stößt, hier ist die Lösung😉

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