[Gelöst] Überprüfen ob Feld vorhanden ist

20. Mai 2010 15:47

Hallo,

wir haben folgenden Codeausschnitt

Code:
switch (oParentCrmForm.ObjectTypeCode)
            {
             case ENTITY_TYPE_INCIDENT: if (document.all['descriptionIFrame'].readyState==4 ||document.all['descriptionIFrame'].readyState=="complete")
                                 {      
                                    setSignature();
                                    setSender();
                                    setSubject();
                  
                                 }
             case ENTITY_TYPE_EMAIL:    if (document.all['descriptionIFrame'].readyState==4 ||document.all['descriptionIFrame'].readyState=="complete")
                                 {   
                                    var lookupItem = oParentCrmForm.regardingobjectid.DataValue;
                                                               
                                    if(lookupItem)
                                    {
                                       if(lookupItem[0].type == ENTITY_TYPE_INCIDENT)
                                       {                                       
                                          setSignature();
                                          setSender();
                                          setSubject();
                                       }
                                    }
                                 }


Das Gesamte Script überprüft eigentlich beim laden einer E-Mail aus welchem Kontext sie geöffnet wurde. Wurde sie aus einer Anfrage geöffnet, dann soll Signatur usw. gesetzt werden. Wird eine neue E-Mail aus einer E-Mail -> also als Antwort - geöffnet, die einen Bezug zu einer Anfrage hat, dann soll das gleiche geschehen. in allen anderen Fällen nicht.

An der Stelle "var lookupItem = oParentCrmForm.regardingobjectid.DataValue;" bekomme ich aber einen Fehler, wenn ich von einer Anfrage aus starte. Ich bekomme die Fehlermeldung das das Object nicht vorhanden ist. klar... ist es ja auch nicht.

Deshalb hab ich 2 fragen:

1. Warum kommt das Script überhaupt an diese Stelle? Der Typ, der zurückgegeben wird ist 112, also Anfrage und nicht E-Mail. Warum komme ich mit dem Switch dann trotzdem an die Stelle!?

2. Wie kann ich im Vorfeld pfüfen, ob es das Feld überhaupt gibt und den Fehler dann verhindern?


Viele Grüße
Pascal
Zuletzt geändert von pallinio am 21. Mai 2010 08:20, insgesamt 1-mal geändert.

Re: Überprüfen ob Feld vorhanden ist

20. Mai 2010 16:49

Hallo Pascal,

du hast die Variable ENTITY_TYPE_INCIDENT mit 112 definiert, nehme ich an.

Dann lass dir doch einfach mal mit einem Alert den übergebenen EntityType ausgeben. Oder du implementierst kurz das debuggen, dann kannst du dir im Detail ansehen, warum er in diesen Zweig geht.

Was mir auffällt ist, das du in beiden Case-Zweigen die gleiche If-Bedingung implementiert hast. Wenn das für alle Case-Zweige gillt, würde ich das natürlich vorher testen.

Re: Überprüfen ob Feld vorhanden ist

20. Mai 2010 21:15

pallinio hat geschrieben:1. Warum kommt das Script überhaupt an diese Stelle? Der Typ, der zurückgegeben wird ist 112, also Anfrage und nicht E-Mail. Warum komme ich mit dem Switch dann trotzdem an die Stelle!?

Weil du break; vergessen hast ;) Ohne werden alle cases nach dem Ersten zutreffenden case durchlaufen.

Code:
switch(foo)
{
  case bar: alert('bar');
                break;
  case blub: alert('blub');
                break;
  ...
 
}

Re: Überprüfen ob Feld vorhanden ist

20. Mai 2010 21:25

stimmt, das war jetzt zu einfach :-)

Re: Überprüfen ob Feld vorhanden ist

21. Mai 2010 08:19

Genau das wars... manchmal sieht man den Wald vor lauter Bäumen nicht :-(

[Gelöst]: Klar, immer, aber nicht so schnell, wenn die Antwort um 21:15 kommt und deine Aufforderung um halb 8. Da hatte ich das noch nicht mal gelesen. bzw. war nicht mal in der nähe eines Computers :wink:
Zuletzt geändert von Natalie am 24. Mai 2010 10:38, insgesamt 1-mal geändert.
Grund: [Gelöst]-Hinweis entfernt, um nicht in Suchlichste zu erscheinen