none
Berechnungen im Formular RRS feed

  • Frage

  • Hallo Gemeinde,

    Wir nutzen CRM 2011 seit januar in unserem Unternehmen. Ich probiere auf einem Testmandanten nun was alles so möglich ist ohne unseren Dienstleister zu bemühen um das System an unsere Bedürfnisse anzupassen! Gerade bei u.g. Kleinigkeiten halte ich das für überzogen.

    So, da ich aber Anfänger bin und auch sonst wenig Ahnung habe und die gefundenen Ergebnisse im Forum mich auch nicht weiterbringen muss ich also fragen. Meine Try & Error Versuche mit gefundenen Codeschnipseln enden stets mit ERROR. Da ich aber der Meinung bin, dass eine klitzekleine Berechnung kein Hexenwerk sein kann, ist hier meine Frage:

    Ich möchte in einem Formular (bsp. Verkaufschancenentität) ein weiteres Feld einfügen in dem eine einfache Berechnung statt findet. Die Berechnung bezieht sich auf ein anderes Feld in dieser Entität und ich will einfach nur eine Summe Bilden. Es wird also ein fixer Wert hinzu gerechnet. Zum Verständnis reicht mir das.

    Ich hab nun also das Feld eingefügt und in die Formularbibliothek folgenden Code eingegeben:

    crmForm.all.new_feldb.DataValue = crmForm.all.freightamount.DataValue + 100

    nach Recherche hab ich dann herausgefunden, dass CRM 2011 ein "anderes Jscript" verwendet und dass es einen tollen Konvertierer gibt

    Xrm.Page.getAttribute("new_feldb").getValue() = Xrm.Page.getAttribute("freightamount").getValue() + 100

    Den Bibliothekseintrag habe ich dann im OnChange Ereignis des Feldes zugewiesen. (Ich habe keine Ahnung ob das auch nur ansatzweise richtig war)

    Erwartungsgemäß funktioniert das alles nicht und ich bekomme folgende Meldung:

    Fehler im benutzerdefinierten Ereignis dieses Feldes
    Feld: freightamount
    Ereignis. onchange
    Fehler: Objekt erwartet

    Nun ich hatte in meinem jugendlichen Leichtsinn auf ein Spontanerfolgserlebnis gehofft, dass nun aber ausbleibt. Ich habe auch keine Ahnung von Objekten/Javaskript und sonstiger Programmierung. Aber so eine kleine berechnung sollte doch möglich sein und ich hoffe nun hier auf Hilfe.

    Was mache ich falsch? Was muss in dem OnChange Ereignis stehen und warum?

    Ich hoffe es kann mir jemand helfen.

    Viele Grüße

    Dienstag, 21. August 2012 11:34

Antworten

  • Hallo,

    dann gib dir doch einfach mal mit alert aus, was denn gerechnet wird.

    function calculate() 
    { 
    var value = Xrm.Page.getAttribute('freightamount').getValue() + 100; 
    alert(value); 
    Xrm.Page.getAttribute('new_feldb').setValue(value); 
    }
    

    Und natürlich hat RBecker recht, Werte werden mit setValue gesetzt.


    Viele Grüße

    Michael Sulz
    MVP für Microsoft Dynamics CRM
    Blog
    Website XING LinkedIn Facebook Twitter

    Dienstag, 21. August 2012 14:40
  • Hallo,

    du musst das JavaScript im OnChange des Feldes freightamount eintragen, nicht im Feld feldb.


    Viele Grüße

    Michael Sulz
    MVP für Microsoft Dynamics CRM
    Blog
    Website XING LinkedIn Facebook Twitter

    Mittwoch, 22. August 2012 06:16
  • Hallo Michael,

    anders als bei CRM 4.0 werden in CRM 2011 die JavaScripte in Bibliotheken gespeichert. Du kannst also nicht mehr direkt den Code in das Feld schreiben, sondern musst erst eine Funktion definieren und diese Funktion dann aufrufen. In deinem Beispiel würde das bedeuten, dass du eine JavaScript Bibliothek erstellst und diese dem Formular zuordnest.

    In die Bibliothek fügst du folgenden Code ein:

    function calculate()
    {
    Xrm.Page.getAttribute('new_feldb').getValue() = Xrm.Page.getAttribute('freightamount').getValue() + 100;
    }
    Im OnChange deines Feldes rufst du jetzt die Funktion calculate auf, und schon wird dein Feld berechnet.

    Viele Grüße

    Michael Sulz
    MVP für Microsoft Dynamics CRM
    Blog
    Website XING LinkedIn Facebook Twitter

    • Als Antwort markiert Michael Sulz Mittwoch, 28. September 2016 11:25
    Dienstag, 21. August 2012 11:49

Alle Antworten

  • Hallo Michael,

    anders als bei CRM 4.0 werden in CRM 2011 die JavaScripte in Bibliotheken gespeichert. Du kannst also nicht mehr direkt den Code in das Feld schreiben, sondern musst erst eine Funktion definieren und diese Funktion dann aufrufen. In deinem Beispiel würde das bedeuten, dass du eine JavaScript Bibliothek erstellst und diese dem Formular zuordnest.

    In die Bibliothek fügst du folgenden Code ein:

    function calculate()
    {
    Xrm.Page.getAttribute('new_feldb').getValue() = Xrm.Page.getAttribute('freightamount').getValue() + 100;
    }
    Im OnChange deines Feldes rufst du jetzt die Funktion calculate auf, und schon wird dein Feld berechnet.

    Viele Grüße

    Michael Sulz
    MVP für Microsoft Dynamics CRM
    Blog
    Website XING LinkedIn Facebook Twitter

    • Als Antwort markiert Michael Sulz Mittwoch, 28. September 2016 11:25
    Dienstag, 21. August 2012 11:49
  • Hallo Michael,

    danke für die schnelle Antwort. Ich bekomme jetzt zumindest keine Fehlermeldung; eine Berechnung findet aber auch nicht statt.

    Hab mal versucht einen Screenshot zu machen. Vielleicht kann man da erkennen, was noch verquer ist??

    Dienstag, 21. August 2012 12:36
  • Achtung! Es muß heißen:

    function calculate()
    {
    Xrm.Page.getAttribute('new_feldb').setValue(Xrm.Page.getAttribute('freightamount').getValue() + 100);
    }


    • Bearbeitet RBecker Dienstag, 21. August 2012 12:38
    Dienstag, 21. August 2012 12:38
  • Also auch das funktioniert hier bei mir nicht. Ich kann in dem "berechneten" Feld etwas eingeben und das Bezugsfeld wird dann leer...

    ..das ist alles was passiert.

    Dienstag, 21. August 2012 13:07
  • Hallo,

    dann gib dir doch einfach mal mit alert aus, was denn gerechnet wird.

    function calculate() 
    { 
    var value = Xrm.Page.getAttribute('freightamount').getValue() + 100; 
    alert(value); 
    Xrm.Page.getAttribute('new_feldb').setValue(value); 
    }
    

    Und natürlich hat RBecker recht, Werte werden mit setValue gesetzt.


    Viele Grüße

    Michael Sulz
    MVP für Microsoft Dynamics CRM
    Blog
    Website XING LinkedIn Facebook Twitter

    Dienstag, 21. August 2012 14:40
  • Aha,

    also jetzt wird gerechnet.

    Allerdings erfolgt die Berechnung nur "halbautomatisch". Wenn ich also einen Wert bei "freightamount" eingebe passiert zunächst nichts. Speichern, Klicken..keine Funktion. Wenn ich dann aber in "feldb" einen beliebigen Wert eingebe, wird gerechnet und der richtige Wert auch gesetzt.

    Dienstag, 21. August 2012 16:07
  • Hallo,

    du musst das JavaScript im OnChange des Feldes freightamount eintragen, nicht im Feld feldb.


    Viele Grüße

    Michael Sulz
    MVP für Microsoft Dynamics CRM
    Blog
    Website XING LinkedIn Facebook Twitter

    Mittwoch, 22. August 2012 06:16