Problem beim Aufruf von Kontakt
-
2012. április 11. 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 undefiniertAuf 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: TrueDahinter 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
Az összes válasz
-
2012. április 11. 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
-
2012. április 12. 6:53Moderátor
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- Válasznak javasolta: Andreas Buchinger 2012. május 3. 9:04
-
2012. április 12. 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
-
2012. május 3. 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
- Szerkesztette: J-Kolb 2012. május 3. 9:19