[gelöst] customer type ermitteln

12. Oktober 2010 15:33

Hallo zusammen!

Folgende Situation: Ich habe eine eigene Entität erstellt, die ein n:1-Beziehung zur Anfrage hat. Ich möchte jetzt in einem Ereignis-Script abfragen, ob bei einer zugeordneten Anfrage der Customertype = 'account' oder 'contact' ist. Leider weiß ich nicht, wie man auf den customertype zugreift. Ich weiß, dass ich z.B. mit
Code:
crmForm.all.new_serviceanfrageid.DataValue[0].id
auf die GUID der zugeordneten Anfrage zugreifen kann, aber wie komme ich an den Customertype der Anfrage? Kann ich mir irgendwie das zugeordnete Customer-Objekt schnappen und da den Type auslesen?

Viele Grüße,
Daniel
Zuletzt geändert von DanP am 18. Oktober 2010 12:20, insgesamt 1-mal geändert.

Re: customer type ermitteln

13. Oktober 2010 11:30

Hallo Daniel,

wie du diesem Artikel entnehmen kannst, ist der Wert ".typename".

Re: customer type ermitteln

13. Oktober 2010 13:34

Hallo Michael,

danke für Deine Antwort. Dass ich über ".typename" grundsätzlich den Typ auslesen kann, ist mir bewusst. Mein Problem besteht vielmehr darin, dass ich das quasi "um zwei Ecken herum" machen muss:
Ich bin auf dem Formular meiner neuen Entität, die z.B. "Projekt" heißt. Diese hat eine Beziehung zur Entität Anfrage (man kann im Projekt eine Anfrage per lookup zuordnen). Ich möchte jetzt beispielsweise im onChange-Code des Anfrage-Lookupfeldes den Customertype des Kunden der gewählten Anfrage ermitteln. Hier weiß ich leider nicht, wie ich vorgehen soll. Ich komme über crmForm.all.new_serviceanfrageid.DataValue[0] an id und Namen der Anfrage ran, aber nicht an die Daten des zugehörigen Kunden. Ich bräuchte etwas in der Art crmForm.all.new_serviceanfrageid.DataValue[0].customerid.typename, aber so funktioniert das ja nicht.
Irgendwelche Hinweise/Ideen?

Viele Grüße,
Daniel

Re: customer type ermitteln

13. Oktober 2010 14:36

Hallo Daniel,

in diesem Fall must du dir über den Webservice die Daten der Anfrage holen und dann den Typecode des Customer-Lookups auslesen.

Re: customer type ermitteln

13. Oktober 2010 14:54

Hallo Michael,

das habe ich versucht, bin aber gescheitert. Kannst Du mir sagen, wie der Wert heißt, den ich da abfragen muss? Ich habe bereits erfolglos folgendes probiert:

Code:
 var xml = "<?xml version='1.0' encoding='utf-8'?>" +
         "<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'" +
            " xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'" +
            " xmlns:xsd='http://www.w3.org/2001/XMLSchema'>" +
            authenticationHeader +
            "<soap:Body>" +
               "<Retrieve xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>" +
                  "<entityName>incident</entityName>" +
                  "<id>" + incidentIdValue + "</id>" +
                  "<columnSet xmlns:q1='http://schemas.microsoft.com/crm/2006/Query' xsi:type='q1:ColumnSet'>" +
                     "<q1:Attributes>" +
                        "<q1:Attribute>customeridtype</q1:Attribute>" +
                     "</q1:Attributes>" +
                  "</columnSet>" +
               "</Retrieve>" +
            "</soap:Body>" +
         "</soap:Envelope>";


Gruß,
Daniel

Re: customer type ermitteln

15. Oktober 2010 10:36

Hallo Daniel,

so aus dem Stehgreif kenne ich den Wert auch nicht. Es ist gut möglich, das der Type nicht direkt in der Anfrage steht, sondern du tatsächlich auf den zugeordneten Datensatz der Anfrage gehen musst, um den Typ von dort zu ermitteln.

Re: customer type ermitteln

15. Oktober 2010 11:31

Hallo Michael,

sowas in der Art habe ich mir schon gedacht. Leider weiß ich nicht, wie ich aus dem Ereigniscode einer Entität direkt auf den Datensatz der zugeordneten Anfrage zugreife, um diese Info auszulesen. Hast Du dazu einen Tipp, wie das geht oder wo ich das nachlesen kann?

Viele Grüße,
Daniel

Re: customer type ermitteln

15. Oktober 2010 11:43

Hallo Daniel,

du kannst mit Fetch XML auch auf die weiteren Datenstrukturen im CRM zugreifen, du musst nur deine Abfrage entsprechend erstellen.
Wie hast du denn die bestehnde Fertch XML Abfrage erstellt?

Ich empfehle immer dieses Tool: Stunnware Tools for Microsoft Dynamics CRM 4.0

Re: customer type ermitteln

15. Oktober 2010 12:02

Hallo Michael,

meine Abfrage habe ich anhand von Vorlagen hier aus dem Forum selbst erstellt. Habe auch schon versucht, direkt auf den Customer-Datensatz zu kommen, aber eine Customer Entität gibt es wohl nicht (zumindest kann ich nicht über XML darauf zugreifen) und um auf die entsprechenden Daten in der Anfrage zugreifen zu können, müsste ich halt den Attributnamen kennen.
Vielleicht fehlt mir auch einfach ein Stück Javascript-Wissen: Wenn ich in einem Anfrage-Formular wäre, könnte ich ja über
Code:
crmForm.all.customerid.DataValue[0].typename
auf die gewünschte Info zugreifen. crmForm.all verweist bei mir ja auf nunmal nicht auf einen Anfragedatensatz. Gibt es eine Möglichkeit, sich ein entsprechendes Objekt im Javascript zu bauen?

Gruß,
Daniel

Re: customer type ermitteln

16. Oktober 2010 18:34

Hallo Daniel,

das Lookuo vom Typ Customer ist hartgecodet im CRM durch Microsoft und verhält sich nicht so wie "normale" Lookups.

Wenn es nicht über den Webservice geht, was ich vermute, dann wäre ein Lösungsmöglichkeit, ein verstecktes Feld hinzuzufügen und dieses per JavaScript beim OnChange und/oder Onsave der Anfrage mit dem Typecode des Eintrages in dem Lookup zu füllen. Ist vielleicht nicht die eleganteste Lösung, aber sie wird funktionieren.

Re: customer type ermitteln

18. Oktober 2010 12:19

Hallo Michael,

diese ganzen hartgecodeten Ausnahmen sind ein bisschen nervig. Ich hoffe mal, dass das in CRM 2011 etwas besser gelöst sein wird?! Das mit dem versteckten Feld wäre natürlich ein möglicher Workaround. Ich habe mir nun aber etwas anders geholfen: Ich gehe beim Fetch-XML erstmal davon aus, dass die GUID zu einem Kontakt gehört. Wenn ich dann einen Fehler mit den Worten "Does Not Exist" zurück bekomme, dann ändere ich den Typ auf Firma. Ist auch nicht wirklich schön... :( Vielleicht ändere ich das noch auf Deinen Vorschlag. Vielen Dank auf jeden Fall für die Unterstützung!

Viele Grüße,
Daniel