Problem beim Aufruf von Kontakt

Proposed Problem beim Aufruf von Kontakt

  • woensdag 11 april 2012 14:35
     
     

    Hallo,

    folgendes Problem habe ich derzeit beim Aufruf eines Kontaktes in CRM 2011.

    Fehlermeldung:

    Fehler im benutzerdefinierten Ereignis dieses Felds
    Feld: window
    Ereignis:onload
    Fehler: Für die Eigenschaft "getValue" kann kein Wert abgerufen werden:
    Das Objekt ist Null oder undefiniert

    Auf dem Formular liegt ein Script "Contact_main_library.js" und ist im Ereignishandler wie folgt hinterlegt

    Steuerelement: Formular
    Ereignis: Inload
    Bibliothek: Contact_main_library.js
    Fuktion: Form_onload
    Aktiviert: True

    Dahinter liegt folgendes Script:

    function Form_onload()
     {
      if((Xrm.Page.getAttribute("new_naip").getValue() == 1) || (Xrm.Page.getAttribute("new_naip").getValue() == 2))
       {Xrm.Page.ui.tabs.get(3).setVisible(true);}
     else
         {Xrm.Page.ui.tabs.get(3).setVisible(false);}
     }

    function Form_onsave()
    {
    /* Obtain the required values. */

    var sal = Xrm.Page.getAttribute("salutation").getValue();
    var firstName = Xrm.Page.getAttribute("firstname").getValue();
    var middleName = Xrm.Page.getAttribute("middlename").getValue();
    var lastName = Xrm.Page.getAttribute("lastname").getValue();
    var suf = ""; /* Xrm.Page.getAttribute("suffix").getValue(); */

    /* Check to see whether the middleName variable is null before you add a comma. */
    if(middleName != null)
    {
        middleName = middleName+",";
    }

    /* Check to see whether the lastName variable is null before you add a comma. */
    if(lastName != null)
    {
        lastName = lastName+",";
    }

    if(suf == null)
    {
        middleName = Xrm.Page.getAttribute("middlename").getValue();
    }

    /* Create a variable to store the complete full name. */
    var fullName = "";

    /* Create an array to set the order of the full name. */
    var fName = [lastName, sal, firstName, middleName, suf];

    /* Create a second array to determine whether the associated name in the
    fName array should be included in the complete full name. */
    var includeFName = [true, true, true, true, true];

    /* Create the value for the full name. */
    for(var i = 0; i<fName.length; i++)
    {
            if((fName[i] == null) || (fName[i] == ","))
            {
                fName[i] = "";
                includeFName[i] = false;  
            }
            if(includeFName[i] == true)
            {
                fullName = fullName + fName[i] + " ";
            }
    }


    /* Assign the value of the fullName variable to the custom Full Name field. */
    Xrm.Page.getAttribute("new_completefname").setValue(fullName);
    }


    function new_naip_onchange()
    {
    if ((Xrm.Page.getAttribute("new_naip").getValue() == 1) || (Xrm.Page.getAttribute("new_naip").getValue() == 2))
      {Xrm.Page.ui.tabs.get(3).setVisible(true);}
    else
        {Xrm.Page.ui.tabs.get(3).setVisible(false);}
    }


    function new_enteraleernaehrungs_onchange()
    {
    if (Xrm.Page.getAttribute("new_enteraleernaehrungs").getValue() == false) {
       crmForm.all.new_enteraleernaehrungsd.disabled = true;
    }
    if (Xrm.Page.getAttribute("new_enteraleernaehrungs").getValue() == true) {
       crmForm.all.new_enteraleernaehrungsd.disabled = false;
    }
    }

    Die Frage nun lautet, welches "getValue" hier genau gemeint? Wie komme ich da weiter ?

    Vielen Dank vorab
    J.Kolb

Alle reacties

  • woensdag 11 april 2012 15:36
     
     

    Hallo Herr Kolb,

    nutzen Sie doch den Internet Explorer Debugger (F12), wählen Sie das Skript aus, gehen Sie auf Debuggen starten, und versuchen Sie, was Ihnen angezeigt wird.

    Sollte das nicht helfen, würde ich die einzelnen getValue auskommentieren und der Reihe nach einschalten.

    Davon abgesehen würde ich an Ihrer Stelle für die getValue() Funktion immer noch eine Zwischenfunktion verwenden, die zunächst überprüft, ob es das Attribute überhaupt gibt.

    Ausserdem scheint es mir, als ob Sie in new_enteraleernaehrungs_onchange() Code von 2011 und 4.0 mischen.

    Mit freundlichen Grüßen,

    Jan Nebendahl

  • donderdag 12 april 2012 6:53
    Moderator
     
     Voorgesteld antwoord Bevat code

    Hallo,

    wie Jan schon geschrieben hat, solltet ihr erst einmal prüfen, ob das Feld überhaupt auf dem Formular vorhanden ist, z.B. mit diesem Code

    var feld1 = Xrm.Page.getAttribute('Feldname');
    var wert1;
    
    if(feld1 != null) wert1 = feld1.getValue();

    und in der von Jan angesprochenen Funktion verwendet ihr noch CRM 4.0 Code, den solltet ihr ebenfalls durch CRM 2011 Code ersetzen.

    crmForm.all.new_enteraleernaehrungsd.disabled = true;
    
    Xrm.Page.ui.controls.get('feldname').setVisible(true);
    


    Viele Grüße

    Michael Sulz
    MVP für Microsoft Dynamics CRM
    Blog
    Website

  • donderdag 12 april 2012 7:09
     
     

    Hallo J-Kolb!

    Mit alert(typeof(<object>) kannst du den Typ des Javascript-Objects anzeigen.

    Um Debuggen zu können muss du im IE unter Internetoptionen das Script-Debuggen aktivieren.
    Dann kannst du in deinem Script mit "debugger;" ein Haltepunkt setzen und mit Visual Studio debuggen.

    Zu beachten ist auch, das bei Javascript Groß- und Kleinschreibung unterschieden wird.


    Ich hoffe das bringt weiter. Andreas(a)Donaubauer.com www.crmfaq.de

  • donderdag 3 mei 2012 9:18
     
     

    Hallo,

    ich bitte um Nachsicht bzgl. der erst jetzigen Rückmeldung.

    Das Problem wurde inzwischen gelöst.
    Es lag daran, das eine Lösung eingespielt wurde welche erst nicht veröffentlich wurde, und der Fehler dann bei Veröffentlichung auftrat.
    Hierbei wurden die JAVA Scripts verändert, bzw. auch das Formular selbst verändert, was dazu führte das die Felder nicht mehr da waren.

    Viele Grüße


    • Bewerkt door J-Kolb donderdag 3 mei 2012 9:19
    •