2017-06-21 2 views
1

Das OnChange-Ereignis für ein Feld in meinem Opportunity-Formular wird zweimal aufgerufen, und ich versuche, die Quelle des zweiten Aufrufs zu finden. Ich habe den Ausführungskontext bereits in die onChange-Funktion übergeben, kenne aber keine Möglichkeit, die Quelle des Aufrufs von dort aus zu sehen. Jetzt frage ich mich, ob es eine Möglichkeit gibt, die ausstehenden Ereignisse für eine XRM-Seite zu sehen, weiß jemand, wo diese Informationen sind?Quellfunktion für onChange-Feldereignis in Dynamics CRM anzeigen

Mein Code ist im Grunde das, gebunden an onLoad des Gelegenheitsformulars. Es könnte ein Plugin oder eine 3rd-Party-Bibliothek geben oder etwas, das das Feld aktualisiert, aber nichts springt heraus.

function onLoad() { 
    Xrm.Page.data.process.addOnStageChange(handleStageChange); 
} 

function handleStageChange() { 
    var dateFieldName = "new_enteredstage1" 
    var dateFieldAttr = Xrm.Page.getAttribute(dateFieldName); 
    if (dateFieldAttr) { 
     dateFieldAttr.setValue(new Date()); 
    } 
} 

Wenn new_enteredstage1 null ist, wenn die Stufenwechsel erfolgt dann 2 Anrufe auf, und der Wert gesetzt wird und sofort auf null zurückgesetzt. Wenn new_enteredstage1 einen Wert hat, wird der Wert wie erwartet aktualisiert. Wieder könnte es einen Code von Dritten geben, den ich vermisse, aber ich habe keine Ahnung, wie ich ihn aufspüren soll.

UPDATE:

Dies geschieht nur auf Datumsfelder, und es geschieht auf allen Datumsfeldern. Wenn ich den Code durch ein Zahlenfeld ersetze, wird der Wert nicht auf Null zurückgesetzt.

+0

dies nie erfahren, welche Version von CRM ist es und können Sie die Event-Handler in der Frage enthalten? – Alex

+0

Die Frage wurde aktualisiert, um meinen Code hinzuzufügen. Microsoft Dynamics 365 Version 1612 (8.2.1.207) (DB 8.2.1.207) online – CamJohnson26

+0

Ich würde damit anfangen, die Funktion zu duplizieren (zB make handleStageChange, handleStageSelected), so dass Sie zwei verschiedene Handler hinzufügen, die beim Aufspüren helfen könnten. – Alex

Antwort

0

Es gibt ein bekanntes Problem (example) im Zusammenhang mit der "neuen" Formular-Rendering-Engine (Turbo Forms), die dieses Problem verursachen kann.

können Sie versuchen, die Legacy-Form-Rendering-Engine und sehen, ob es das Problem löst: enter image description here

+2

Diese Option ist veraltet und sollte nicht verwendet werden, sie "löst" nichts, sie behebt nur die Symptome. Es ist für den Kauf einiger Zeit für das Reparieren defekter Skripts beim Aktualisieren von früheren Versionen gedacht. – Alex

+1

Gute Idee, aber hat mein Problem nicht behoben. Dies ist ein Feldupdate, das bei Änderung der Verkaufsphasenstufe ausgelöst wird. Wenn das Feld null ist, wird der Wert festgelegt und sofort auf null zurückgesetzt. Wenn ein Wert vorhanden ist, wird der Wert wie erwartet aktualisiert. – CamJohnson26

+2

@Alex Ich weiß das, aber Turbo Forms haben immer noch einige Probleme und das ist der Ansatz, den MS Support mir vor ein paar Monaten vorgeschlagen hat, als das OnChange Ereignis eines Feldes dreimal ausgelöst wurde, wenn programmgesteuert (!!!) dieser Feldwert geändert wurde . Dies ist nur ein Workaround für einige spezifische Fälle (keine Skriptfehler) und es ist gut, dass dies nicht der Fall ist :). –