[gelöst]Auf Basis eines Lookupfeldes andere felder ausfüllen

16. Dezember 2009 18:36

Hallo,
aktuell geht es um die Kampagnenreaktion,

dort kann man eine Person aussuchen, wir brauchen zu dieser Person aber noch Zusatzinformationen die im CRM hinterlegt sind.
Ich würde mir wünschen, das wenn wir die Person, welche ein Lookupfeld ist, ausgewählt haben, automatisch sich Felder füllen, wie zugehörige Firma, Emailadr. usw.
Außerdem soll dann eine entsprechende, wenn es geht dynamische, Exceltabelle raus fallen. Worauf auf diese Funktion nicht unbedingt eine Prio ist.

wenn das irgendwie geht wäre toll.
Danke
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von Tomiliy am 7. Januar 2010 17:42, insgesamt 1-mal geändert.

Re: Auf Basis eines Lookupfeldes andere felder ausfüllen lassen

17. Dezember 2009 10:36

Hallo,

das geht über FetchXML und einer entsprechenden SOAP-Message, um auf die Daten der Firma im Lookup zugreifen zu können.

Anbei ein paar Seiten mit entsprechenden Beispielen:
http://blog.customereffective.com/blog/ ... e-crm.html
http://jianwang.blogspot.com/2008/05/my ... p-iii.html
http://mscrm4ever.blogspot.com/2009/03/ ... ntity.html
http://blog.customereffective.com/blog/ ... ipt-t.html
http://mscrm4ever.blogspot.com/2008/09/ ... ields.html

Re: Auf Basis eines Lookupfeldes andere felder ausfüllen lassen

17. Dezember 2009 12:43

Hallo,

ich hab jetzt zwar die Beiträge die du gepostet hast durchgelesen, aber das bezieht sich doch alles nicht auf mein Problem.
Kannst du mir einen Beispielcode hier posten wie ich, wenn ich die Person in dem Lookupfeld auswähle, sich automatisch das Feld mit der Firma füllt.
ich werde das dann auf alle anderen Felder adaptieren.

Danke schön.
gruß
Thomas

Re: Auf Basis eines Lookupfeldes andere felder ausfüllen lassen

17. Dezember 2009 20:25

Hallo Thomas,

alle zusammen bilden schon dein Anforderung zu 100% ab.
Ich habe dir hier mal ein Beispiel gepostet, wie du die Firmennummer und Telephon1 aus der übergeordneten Firma eines Kontaktes ermitteln kannst.
Code:
// Ermittelt die Firmennummer und Telephone1 der übergeordneten Firma im Kontakt

if (crmForm.all.parentcustomerid.DataValue != null)
{
   var myAccountId = crmForm.all.parentcustomerid.DataValue[0].id;

   // Define the SOAP XML to access Microsoft Dynamics CRM Web service.
   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\">" +
   GenerateAuthenticationHeader()+
   "  <soap:Body>" +
   "    <RetrieveMultiple xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\">" +
   "      <query xmlns:q1=\"http://schemas.microsoft.com/crm/2006/Query\" xsi:type=\"q1:QueryExpression\">" +
   "        <q1:EntityName>account</q1:EntityName>" +
   "        <q1:ColumnSet xsi:type=\"q1:ColumnSet\">" +
   "          <q1:Attributes>" +
   "            <q1:Attribute>accountnumber</q1:Attribute>" +
   "            <q1:Attribute>telephone1</q1:Attribute>" +
   "          </q1:Attributes>" +
   "        </q1:ColumnSet>" +
   "        <q1:Distinct>false</q1:Distinct>" +
   "        <q1:Criteria>" +
   "          <q1:FilterOperator>And</q1:FilterOperator>" +
   "          <q1:Conditions>" +
   "            <q1:Condition>" +
   "              <q1:AttributeName>accountid</q1:AttributeName>" +
   "              <q1:Operator>Equal</q1:Operator>" +
   "              <q1:Values>" +
   "                <q1:Value xsi:type=\"xsd:string\">myAccountId</q1:Value>" +
   "              </q1:Values>" +
   "            </q1:Condition>" +
   "          </q1:Conditions>" +
   "        </q1:Criteria>" +
   "      </query>" +
   "    </RetrieveMultiple>" +
   "  </soap:Body>" +
   "</soap:Envelope>";
   
   // Create an instance of an XMLHTTP object.
   var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
   
   // Configure the XMLHttp object for the
   // Microsoft CRM Web services.
   xmlHttpRequest.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
   xmlHttpRequest.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2007/WebServices/Retrieve");
   xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
   xmlHttpRequest.setRequestHeader("Content-Length", xml.length);
   
   // Send the XMLHttp request.
   xmlHttpRequest.send(xml);
   
   if(xmlHttpRequest.status == 200)
   {
      // Capture the XMLHttp response in XML format.
      var resultXml = xmlHttpRequest.responseXML;

      var nodeNumber = resultXml.selectNodes("//q1:accountnumber");
      if (nodeNumber.length == 1)
      {
         crmForm.all.Field1.DataValue = parseFloat(nodeNumber[0].text);
      }
      
      var nodeTelephone = resultXml.selectNodes("//q1:telephone1");
      if (nodeTelephone.length == 1)
      {
         crmForm.all.Field2.DataValue = parseFloat(nodeTelephone[0].text);
      }
   }
}

Re: Auf Basis eines Lookupfeldes andere felder ausfüllen lassen

22. Dezember 2009 00:51

Hallo und vielen Dank für dein Script.
Allerdings hab ich da leichte Adaptionsschwierigkeiten, weil dein Script auf die "parentcustomerid" zielt. Die gibt es aber leider in der Maske Kampagnenreaktion gar nicht. Sondern den einzigen Anhaltspunkt den die Maske Kampagenreaktion bietet ist das Feld "Customer".

Ich verstehe einige dinge nicht:
1. Woher kommt das Feld: "crmForm.all.ParentCustomerId.DataValue"
Und welchen Bezug hat das?
2. Ist diese Script so eine Art SQL Abfrage, richtig?
Aber ich glaube mir fehlt indem Feld so der richtige Einsprung. Wie gesagt, ich habe das Feld Customer, in dem ich einen "Person" eingebe. Dioes ist ein lookupfeld, und von dort aus muss er eine Abfrage auf die Contact Tabelle im SQL machen und checken in welcher Firma der Kollege ist Und dann gewünbschte Felder wie Telefonnummer, Firmenname usw. zurück geben.

So sieht mein Script aus:
Code:
// Ermittelt die Firmennummer und Telephone1 der übergeordneten Firma im Kontakt

    if (crmForm.all.customer.DataValue != null)
    {
       var myAccountId = crmForm.all.customer.DataValue[0].id;

       // Define the SOAP XML to access Microsoft Dynamics CRM Web service.
       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\">" +
       GenerateAuthenticationHeader()+
       "  <soap:Body>" +
       "    <RetrieveMultiple xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\">" +
       "      <query xmlns:q1=\"http://schemas.microsoft.com/crm/2006/Query\" xsi:type=\"q1:QueryExpression\">" +
       "        <q1:EntityName>contact</q1:EntityName>" +
       "        <q1:ColumnSet xsi:type=\"q1:ColumnSet\">" +
       "          <q1:Attributes>" +
       "            <q1:Attribute>accountidname</q1:Attribute>" +
       "            <q1:Attribute>telephone1</q1:Attribute>" +
       "          </q1:Attributes>" +
       "        </q1:ColumnSet>" +
       "        <q1:Distinct>false</q1:Distinct>" +
       "        <q1:Criteria>" +
       "          <q1:FilterOperator>And</q1:FilterOperator>" +
       "          <q1:Conditions>" +
       "            <q1:Condition>" +
       "              <q1:AttributeName>accountid</q1:AttributeName>" +
       "              <q1:Operator>Equal</q1:Operator>" +
       "              <q1:Values>" +
       "                <q1:Value xsi:type=\"xsd:string\">myAccountId</q1:Value>" +
       "              </q1:Values>" +
       "            </q1:Condition>" +
       "          </q1:Conditions>" +
       "        </q1:Criteria>" +
       "      </query>" +
       "    </RetrieveMultiple>" +
       "  </soap:Body>" +
       "</soap:Envelope>";
alert(myAccountId);       
       // Create an instance of an XMLHTTP object.
       var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
alert(xmlHttpRequest);
       
       // Configure the XMLHttp object for the
       // Microsoft CRM Web services.
       xmlHttpRequest.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
       xmlHttpRequest.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2007/WebServices/Retrieve");
       xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
       xmlHttpRequest.setRequestHeader("Content-Length", xml.length);
       
       // Send the XMLHttp request.
       xmlHttpRequest.send(xml);
   
       if(xmlHttpRequest.status == 200)
       {
          // Capture the XMLHttp response in XML format.
          var resultXml = xmlHttpRequest.responseXML;

          var nodeNumber = resultXml.selectNodes("//q1:accountidname");
          if (nodeNumber.length == 1)
          {
             crmForm.all.companyname.DataValue = parseFloat(nodeNumber[0].text);
          }
       
          var nodeTelephone = resultXml.selectNodes("//q1:telephone1");
          if (nodeTelephone.length == 1)
          {
             crmForm.all.telephone.DataValue = parseFloat(nodeTelephone[0].text);
          }
       }
    }

Allerdings werden die beiden betreffenden Felder Firmenname und Telefon NICHT ausgefüllt. Ein alert auf die beiden Felder ergibt ein "NULL"
Ich hab mal alerts gesetzt und die Ergebnisse gepostet

Kann ich dein Script in irgendeiner Form dahingehend anpassen?


Danke schön.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: Auf Basis eines Lookupfeldes andere felder ausfüllen lassen

22. Dezember 2009 10:39

Hallo Thomas,

Tomily hat geschrieben:1. Woher kommt das Feld: "crmForm.all.ParentCustomerId.DataValue"
Und welchen Bezug hat das?

Damit hole ich die GUID der übergeordneten Firma aus dem Kontakt. ParentCustomerId ist der Name des Lookup Feldes der übergeordneten Firma im Kontaktformular.

Tomily hat geschrieben:2. Ist diese Script so eine Art SQL Abfrage, richtig?

Richtig, nennt sich FetchXML.

Tomily hat geschrieben:Aber ich glaube mir fehlt indem Feld so der richtige Einsprung. Wie gesagt, ich habe das Feld Customer, in dem ich einen "Person" eingebe. Dioes ist ein lookupfeld, und von dort aus muss er eine Abfrage auf die Contact Tabelle im SQL machen und checken in welcher Firma der Kollege ist Und dann gewünbschte Felder wie Telefonnummer, Firmenname usw. zurück geben.

Wenn du die Werte aus der Kampangenreaktion ermitteln möchtest, musst du zuerst die GUID des ausgewählten Kontaktes ermitteln, mit dieser dann die übergeordnete Firma und dann aus der übergeordneten Firma deine Felder.

An die GUID des Kontaktes kommt du ganz leicht mit crmForm.all.customer.DataValue. Mein Beispiel bildet bereits den 2. Teil deiner Abfrage ab, die Daten aus der übergeordneten Firma zu ermitteln. Du musst jetzt nur noch den ersten Teil nachbauen, die GUID der übergeordneten Firma aus dem Kontakt zu ermitteln.

Re: Auf Basis eines Lookupfeldes andere felder ausfüllen lassen

23. Dezember 2009 02:34

Hallo,

ich bin ja CRM Neuling,

aber ist dieses FetchXML nicht durch die Brust ins Auge geschossen? Das CRM WEIß doch um alle Daten, warum muss ich denn so überaus ätzende Clientscripte bauen?
Kann man der Datenbank nicht sagen, ich benötige an dieser stelle Daten, da und da her? Ist doch ätzend wenn der Client die erledigen muss. Kann das nicht auch der server?

Na ja, diese Spekulative Frage, wollte ich mal in den Raum werfen.

Ihc versuche jetzt mal den 1. teil zu bauen.
das mit dem all.customer wusste ich bereits, das hab ich auch schon versucht, wie du in dem Script sieht und ich bekomme ja auch die GUID des Kontaktes UND wenn ich eine SQL abfrage auf contact mit dieser GUID mache, bekomme ich auch die Firma angezeigt. Ich weiß aber leider nicht wie ich das hier machen soll.

Kann man denn sowas wie nen Join bauen?

Gibt es im CRM keine Funktion, die auf Basis eines Feldinhaltes alle relevanten Daten anzeigt?
tut mir leid, wenn ich diese blöden Fragen stelle, aber EIGENTLICH weiß die Datenbank ja alles. Das CRM kann sie nur nicht einfach dar stellen.

So, wie bekomme ich jetzt Teil 1. hin?
ebenfalls mit so einem FetchXML und diesen soaps?
Gibt es verschiedene soaps?

Wel dein Script, welches ich angepasst habe basiert ja auf: crmForm.all.customer.DataValue
Leider liefern die Soaps nix zurück.

Gruß
Thomas

Re: Auf Basis eines Lookupfeldes andere felder ausfüllen lassen

23. Dezember 2009 09:22

Hallo Thomas,

tomily hat geschrieben:Gibt es im CRM keine Funktion, die auf Basis eines Feldinhaltes alle relevanten Daten anzeigt?
tut mir leid, wenn ich diese blöden Fragen stelle, aber EIGENTLICH weiß die Datenbank ja alles. Das CRM kann sie nur nicht einfach dar stellen.

natürlich weiß das CRM bzw. der Server alles und stellt diese Informationen über einen Webservice zur Verfügungn. Jetzt muss der Client den Webservice seine Frage stellen und bekommt die entsprechende Antwort geliefert, und das geschieht eben über SOAP. Das direkte nutzen von SQL zum zugreifen auf die Datenbank oder um Daten zu ändern ist nicht supportet und wird offiziell nicht unterstützt.

tomily hat geschrieben:So, wie bekomme ich jetzt Teil 1. hin?
ebenfalls mit so einem FetchXML und diesen soaps?
Gibt es verschiedene soaps?

Wel dein Script, welches ich angepasst habe basiert ja auf: crmForm.all.customer.DataValue
Leider liefern die Soaps nix zurück.

Nein, es gibt nur ein SOAP. SOAP ist die Abkürzung für Simple Object Access Protocol, siehe dazu auch SOAP, und steht für die Technik, mit der du in diesem Fall vom Client auf den Server zugreifst.
Das Script greift dann über den Webservice unter Beachtung deiner Sicherheitsrollen im CRM auf die Datenbank zu und ermittelt die Daten.
Das Erstellen der Scripte ist gar nicht so kompliziert, wenn man die entsprechenden Hilfsmittel kennt :-). Ich verwende zum erstellen der FetchXML-Abfrage immer die Stunware Tools, die es auch in einer Freeware Version gibt, die für Fetch XML völlig ausreichend ist. Sie mal unter Stunnware Tools for Microsoft Dynamics CRM 4.0 nach, dort findest du den entsprechenden Link. Aus diesem FetchXML erstelle ich dann mithilfe dieses Tool Using CRM web services in client-side JavaScript die entsprechende SOAP Abfrage. Hört sich erst kompliziert an, ist aber nach einer kurzen Eingewöhnungszeit sehr komfortabel und schnell zu implementieren.

tomily hat geschrieben:Kann man denn sowas wie nen Join bauen?

Ja, natürlich. Lade dir mal das Tool von Stunware herunter, der Rest ist eigentlich selbsterklärend.

Re: Auf Basis eines Lookupfeldes andere felder ausfüllen lassen

26. Dezember 2009 04:16

Hallo,
es mag an der Uhrzeit liegen, aber das Tool "Using CRM web services in client-side JavaScript " schnall ich nicht.
Wird das im CRM implementiert? oder was mach ich damit? Ich hab da auf die schnelle auch keine Beschreibung gefunden, wie ich das Programm ans laufen bekomme.

Ich hab mittlerweile mit dem Stunnware eine Fetch Abfrage, die wohl das meiste erschlägt, aber wie bekomme ich die jetzt umgewandelt in SOAP?
Die sieht so aus:
<fetch mapping="logical" count="50" version="1.0">
<entity name="contact">
<attribute name="accountid" />
<attribute name="fullname" />
<attribute name="gendercode" />
<attribute name="telephone1" />
<link-entity name="account" from="accountid" to="parentcustomerid">
<attribute name="name" />
</link-entity>
</entity>
</fetch>

Danke

Re: Auf Basis eines Lookupfeldes andere felder ausfüllen lassen

28. Dezember 2009 15:58

Gibt es eigentlich auch ein Programm welches das direkt macht, also Fetchabfragen für CRM4 bauen, ohne das ich 2 Programme bemühen muss?
Kannst du mir nochmal bei diesem "Client Side scripting" Programm helfen?

Danke

Re: Auf Basis eines Lookupfeldes andere felder ausfüllen lassen

28. Dezember 2009 21:24

Hallo Thomas,

das 2. Tool ist ein Visual Studio Projekt, in dem du die Query hineinkopieren musst. Das Ergebniss ist dann die fertige Soap-Abfrage.

Es gibt ein Programm von Stunware, das diese Aufgabe direkt erfüllt, allerdings ist dieses kostenpflichtig. Ein Kostenfreies Tool dafür kenne ich nicht.

Re: Auf Basis eines Lookupfeldes andere felder ausfüllen lassen

28. Dezember 2009 21:52

Hallo und danke für die späte Antwort.

ich habe das hier gefunden und teste das grade.
http://jamesdowney.net/blog/page/Request-FetchXML-Builder-Key.aspx

Brauche ich denn für dieses "Client Side Scripting" eine Visual Studio developer Umgebung???

gruß
Thomas

Re: Auf Basis eines Lookupfeldes andere felder ausfüllen lassen

29. Dezember 2009 16:01

Hallo Thomas,

tomily hat geschrieben:ich habe das hier gefunden und teste das grade.
http://jamesdowney.net/blog/page/Reques ... r-Key.aspx

das Tool erstellt dir aber auch nur das Fetch XML, das kann das kostenlose Tool von Stunnware ebenfalls. Du möchtest aber eine Soap-Message benutzen und musst deshalb das Fetch XML in Soap umwandeln, und dafür ist das 2. Tool, das ich beschrieben habe.

tomily hat geschrieben:Brauche ich denn für dieses "Client Side Scripting" eine Visual Studio developer Umgebung???

Nein, für das Scriptiung benötigst du kein VS, auch wenn es das scripten deutlich vereinfacht. Du benötigst aber für das zweite von mir beschriebene Tool VS, um aus Fetch XML die Soap-Abfrage zu erzeugen.

Re: Auf Basis eines Lookupfeldes andere felder ausfüllen lassen

29. Dezember 2009 22:48

Hallo,
ja, das stimmt.

Aber ich komm mit diesem blöden Client side scripting nicht weiter:
ich hab das jetzt mit 2003 & 2008 versucht.
immer kommt: <siehe Bild>

Kannst du mir mal einen Tipp geben wie ich das Programm benutze?

Ich hab jetzt Visual Studio 2003 & 2008 versucht. Bei beiden kommt eine Identische Meldung.
Und was von diesem Programm muss ich eigentlich starten, Visual Studio zeigt mir zu allem irgendwas startbares an. Aber oft kommt nur x-Zeilen Code.

Ich muss dazu sagenb, ichbin kein Programmierer. Und ich habe demzufolge keine Developer Umgebung.
Was für Komponenten benötigt man denn um dieses "Client Side scripting" zu starten.

Danke
gruß
Thomas
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: Auf Basis eines Lookupfeldes andere felder ausfüllen lassen

30. Dezember 2009 00:14

Ich muss nochmal was fragen.
Die Abfrage klappt nicht, ich weiß nicht wieso.
Das ist die von dir übernommene und geänderte Abfrage:
Code:
// Ermittelt die Firmennummer und Telephone1 der übergeordneten Firma im Kontakt
    if (crmForm.all.customer.DataValue != null)
    {
       var myAccountId = crmForm.all.customer.DataValue[0].id;
// Define the SOAP XML to access Microsoft Dynamics CRM Web service.
       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\">" +
       GenerateAuthenticationHeader()+
       "  <soap:Body>" +
       "    <RetrieveMultiple xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\">" +
       "      <query xmlns:q1=\"http://schemas.microsoft.com/crm/2006/Query\" xsi:type=\"q1:QueryExpression\">" +
       "        <q1:EntityName>contact</q1:EntityName>                      " +
       "        <q1:ColumnSet xsi:type=\"q1:ColumnSet\">                    " +
       "          <q1:Attributes>                                           " +
       "            <q1:Attribute>fullname</q1:Attribute>                   " +
       "          </q1:Attributes>                                          " +
       "        </q1:ColumnSet>                                             " +
       "        <q1:Distinct>false</q1:Distinct>                            " +
       "        <q1:Criteria>                                               " +
       "          <q1:FilterOperator>And</q1:FilterOperator>                " +
       "          <q1:Conditions>                                           " +
       "            <q1:Condition>                                          " +
       "              <q1:AttributeName>customerid</q1:AttributeName>       " +
       "              <q1:Operator>Equal</q1:Operator>                      " +
       "              <q1:Values>                                           " +
       "                <q1:Value xsi:type=\"xsd:string\">myAccountId</q1:Value>" +
       "              </q1:Values>                                          " +
       "            </q1:Condition>                                         " +
       "          </q1:Conditions>                                          " +
       "        </q1:Criteria>                                              " +
       "      </query>                                                      " +
       "    </RetrieveMultiple>                                             " +
       "  </soap:Body>                                                      " +
       "</soap:Envelope>                                                    ";
       
       // Create an instance of an XMLHTTP object.
       var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
       
       // Configure the XMLHttp object for the
       // Microsoft CRM Web services.
       xmlHttpRequest.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
       xmlHttpRequest.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2007/WebServices/Retrieve");
       xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
       xmlHttpRequest.setRequestHeader("Content-Length", xml.length);
       
       // Send the XMLHttp request.
       xmlHttpRequest.send(xml);
       if(xmlHttpRequest.status == 200)
       {
          // Capture the XMLHttp response in XML format.
          var resultXml = xmlHttpRequest.responseXML;

          var nodeFullname = resultXml.selectNodes("//q1:fullname");
          if (nodeFullname.length == 1)
          {
             crmForm.all.emailaddress.DataValue = parseFloat(nodeFullname[0].text);
          }
       }
    }

Und das sind die dazu pasenden Debugmeldungen (F12 im IE)
ie-debug1.JPG

ie-debug1.JPG


Und das ist der Inhalt der xml Abfrage:
Code:
"<?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"><soap:Header><CrmAuthenticationToken xmlns="http&#58;&#47;&#47;schemas.microsoft.com&#47;crm&#47;2007&#47;WebServices"><AuthenticationType xmlns="http&#58;&#47;&#47;schemas.microsoft.com&#47;crm&#47;2007&#47;CoreTypes">0</AuthenticationType><CrmTicket xmlns="http&#58;&#47;&#47;schemas.microsoft.com&#47;crm&#47;2007&#47;CoreTypes"></CrmTicket><OrganizationName xmlns="http&#58;&#47;&#47;schemas.microsoft.com&#47;crm&#47;2007&#47;CoreTypes">e-Spirit</OrganizationName><CallerId xmlns="http&#58;&#47;&#47;schemas.microsoft.com&#47;crm&#47;2007&#47;CoreTypes">00000000-0000-0000-0000-000000000000</CallerId></CrmAuthenticationToken></soap:Header>  <soap:Body>    <RetrieveMultiple xmlns="http://schemas.microsoft.com/crm/2007/WebServices">      <query xmlns:q1="http://schemas.microsoft.com/crm/2006/Query" xsi:type="q1:QueryExpression">        <q1:EntityName>contact</q1:EntityName>                              <q1:ColumnSet xsi:type="q1:ColumnSet">                              <q1:Attributes>                                                       <q1:Attribute>fullname</q1:Attribute>                             </q1:Attributes>                                                  </q1:ColumnSet>                                                     <q1:Distinct>false</q1:Distinct>                                    <q1:Criteria>                                                         <q1:FilterOperator>And</q1:FilterOperator>                          <q1:Conditions>                                                       <q1:Condition>                                                        <q1:AttributeName>customerid</q1:AttributeName>                     <q1:Operator>Equal</q1:Operator>                                    <q1:Values>                                                           <q1:Value xsi:type="xsd:string">myAccountId</q1:Value>              </q1:Values>                                                      </q1:Condition>                                                   </q1:Conditions>                                                  </q1:Criteria>                                                    </query>                                                          </RetrieveMultiple>                                               </soap:Body>                                                      </soap:Envelope>                                                    "


Irgendwas geht doch da schief.

PS: ich brauch immer noch Hilfe bei dem Soap Programm..
Danke
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: Auf Basis eines Lookupfeldes andere felder ausfüllen lassen

4. Januar 2010 11:02

Frohes neues Jahr,

Hast du eine Idee, warum das bei mir nicht klappt?

Gruß
Thomas

Re: Auf Basis eines Lookupfeldes andere felder ausfüllen lassen

4. Januar 2010 11:07

Hallo Thomas,

ja, ich habe allerdings aktuell keine Zeit, da ich bei einem Kunden ein Problem habe. Ich schreibe dir dazu heute abend mal eine Zusammenfassung.

Re: Auf Basis eines Lookupfeldes andere felder ausfüllen lassen

4. Januar 2010 11:28

Danke schön.
Das wäre toll.

Re: Auf Basis eines Lookupfeldes andere felder ausfüllen lassen

4. Januar 2010 19:08

Hallo Thomas,

ich habe mir dein Script einmal genauer angesehen.

Was sofort auffällt ist, das die ID eines Kontaktes in der Datenbank im Feld contactid steht, du aber in dem Feld customerid suchst.
Dann tausche mal im unteren Teil folgenden Code aus:
alter Code:
Code:
       // Send the XMLHttp request.
       xmlHttpRequest.send(xml);
       if(xmlHttpRequest.status == 200)
       {
          // Capture the XMLHttp response in XML format.
          var resultXml = xmlHttpRequest.responseXML;

          var nodeFullname = resultXml.selectNodes("//q1:fullname");
          if (nodeFullname.length == 1)
          {
             crmForm.all.emailaddress.DataValue = parseFloat(nodeFullname[0].text);
          }
       }

neuer Code:
Code:
       // Send the XMLHttp request.
       xmlHttpRequest.send(xml);
       if(xmlHttpRequest.status == 200)
       {
           // Capture the XMLHttp response in XML format.
           var resultXml = xmlHttpRequest.responseXML;

    var entityNodes = resultXml.selectNodes("//RetrieveMultipleResult/BusinessEntities/BusinessEntity");

         for (var i = 0; i < entityNodes.length; i++)
         {
            var entityNode = entityNodes[i];

            var fullnameNode = entityNode.selectSingleNode("q1:fullname");
            var fullnameText = (fullnameNode == null) ? null : fullnameNode.text;
            
            alert(fullnameText);
         }
       }


Das solltest du als erstes ändern und es dann erneut versuchen.



Wenn das noch nicht hilft, beschreibe einmal, wie und vor allem wo du das Script in das CRM eingebaut hast.

Ich verwende dieses Script ständig und bin sicher, das es funktioniert, dann sollten wir das bei dir doch auch hinbekommen :-)

Re: Auf Basis eines Lookupfeldes andere felder ausfüllen lassen

4. Januar 2010 20:07

Hallöchen,

Danke für das neue Script, aber da passiert genau nix.
Ich trage das Script bei dem Feld "Person" wie du ganz oben in der Grafik siehst, ein. Und zwar als "OnChange".
Ich bin in einer aktiven Kampanienreaktion.

Dort sollen sich alle Felder automatisch ausfüllen.
Und der Betreff soll automatisch mit Zu oder abgesagt + Firmenname + Name erscheinen.
Magst du vielleicht mal per Teamviewer gucken?
Vielleicht vergesse ich ja auch was Grundlegendes.

PS:ändere ich die Suche auf "Parentcustoimerid" kommt die Fehlermeldung im Bild
ie-debug3.JPG


Danke

Ergänzung:
Ich habe den Code jetzt in OnSave gestellt mit 3 alerts, plus deinen (Deiner wird aber komischerweise nie erreicht)
Das ist der Code:
Code:
// Ermittelt die Firmennummer und Telephone1 der übergeordneten Firma im Kontakt
    if (crmForm.all.customer.DataValue != null)
    {
alert(crmForm.all.customer.DataValue);
       var myAccountId = crmForm.all.customer.DataValue[0].id;
// Define the SOAP XML to access Microsoft Dynamics CRM Web service.
       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\">" +
       GenerateAuthenticationHeader()+
       "  <soap:Body>" +
       "    <RetrieveMultiple xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\">" +
       "      <query xmlns:q1=\"http://schemas.microsoft.com/crm/2006/Query\" xsi:type=\"q1:QueryExpression\">" +
       "        <q1:EntityName>contact</q1:EntityName>                      " +
       "        <q1:ColumnSet xsi:type=\"q1:ColumnSet\">                    " +
       "          <q1:Attributes>                                           " +
       "            <q1:Attribute>fullname</q1:Attribute>                   " +
       "          </q1:Attributes>                                          " +
       "        </q1:ColumnSet>                                             " +
       "        <q1:Distinct>false</q1:Distinct>                            " +
       "        <q1:Criteria>                                               " +
       "          <q1:FilterOperator>And</q1:FilterOperator>                " +
       "          <q1:Conditions>                                           " +
       "            <q1:Condition>                                          " +
       "              <q1:AttributeName>customerid</q1:AttributeName>       " +
       "              <q1:Operator>Equal</q1:Operator>                      " +
       "              <q1:Values>                                           " +
       "                <q1:Value xsi:type=\"xsd:string\">myAccountId</q1:Value>" +
       "              </q1:Values>                                          " +
       "            </q1:Condition>                                         " +
       "          </q1:Conditions>                                          " +
       "        </q1:Criteria>                                              " +
       "      </query>                                                      " +
       "    </RetrieveMultiple>                                             " +
       "  </soap:Body>                                                      " +
       "</soap:Envelope>                                                    ";
       
       // Create an instance of an XMLHTTP object.
       var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
  alert(xmlHttpRequest)     
       // Configure the XMLHttp object for the
       // Microsoft CRM Web services.
       xmlHttpRequest.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
       xmlHttpRequest.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2007/WebServices/Retrieve");
       xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
       xmlHttpRequest.setRequestHeader("Content-Length", xml.length);
       
       // Send the XMLHttp request.
             // Send the XMLHttp request.
       xmlHttpRequest.send(xml);
alert(xmlHttpRequest.status);
       if(xmlHttpRequest.status == 200)
       {
           // Capture the XMLHttp response in XML format.
           var resultXml = xmlHttpRequest.responseXML;
alert(resultXml);
    var entityNodes = resultXml.selectNodes("//RetrieveMultipleResult/BusinessEntities/BusinessEntity");
alert(entityNodes);
         for (var i = 0; i < entityNodes.length; i++)
         {
            var entityNode = entityNodes[i];

            var fullnameNode = entityNode.selectSingleNode("q1:fullname");
            var fullnameText = (fullnameNode == null) ? null : fullnameNode.text;
           
            alert(fullnameText);
         }
       }
    }


und hier das Ergebnis:
alert1.JPG
alert2.JPG
alert3.JPG



Erweiterung2:
Nach einigem ausprobieren muss ich sagen, das wohl die Soapanfrage falsch ist:
Kannst du die mal umwandeln:
Code:
<fetch count='10' mapping='logical'>
   <entity name='contact'>
      <attribute name='accountid'/>
      <attribute name='gendercode'/>
      <attribute name='fullname'/>
      <attribute name='telephone1'/>
      <filter type='and'>
         <condition attribute='accountid' operator='not-null'/>
         <condition attribute='fullname' operator='not-null'/>
         <condition attribute='gendercode' operator='not-null'/>
         <condition attribute='telephone1' operator='not-null'/>
      </filter>
      <link-entity name='account' from='accountid' to='accountid' alias='Firmenname' link-type='natural'>
         <attribute name='name'/>
      </link-entity>
   </entity>
</fetch>


weil ich diesen Web Service Client nicht starten kann. Da müsstest du mir bitte auch mal nen Tipp geben. Blödes teil.

Ich habe jetzt nochmal den Code neu gestaltet:
Das sollte funktionieren, tut es aber auch nicht:
Ich könnt heulen....
Code:
if (crmForm.all.customer.DataValue != null)
    {
       var myAccountId = crmForm.all.customer.DataValue[0].id;
alert(myAccountId);   
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\">" +
GenerateAuthenticationHeader() +
" <soap:Body>" +
"     <RetrieveMultiple xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\">" +
"        <query xmlns:q1=\"http://schemas.microsoft.com/crm/2006/Query\" xsi:type=\"q1:QueryExpression\">" +
"         <q1:EntityName>contact</q1:EntityName>" +
"          <q1:ColumnSet xsi:type=\"q1:ColumnSet\">" +
"           <q1:Attributes>" +
"            <q1:Attribute>parentcontactidname</q1:Attribute>" +
"            <q1:Attribute>telephone1</q1:Attribute>" +
"            <q1:Attribute>emailaddress1</q1:Attribute>" +
"            <q1:Attribute>imp_mailsalutation</q1:Attribute>" +
"           </q1:Attributes>" +
"         </q1:ColumnSet>" +
"       <q1:Distinct>false</q1:Distinct>" +
"     <q1:Criteria>" +
"       <q1:FilterOperator>And</q1:FilterOperator>" +
"       <q1:Conditions>" +
"        <q1:Condition>" +
"          <q1:AttributeName>ContactId</q1:AttributeName>" +
"           <q1:Operator>Equal</q1:Operator>" +
"              <q1:Values>                                           " +
"                <q1:Value xsi:type=\"xsd:string\">myAccountId</q1:Value>" +
"              </q1:Values>                                          " +
"       </q1:Condition>" +
"       </q1:Conditions>" +
"     </q1:Criteria>" +
"    </query>" +
"   </RetrieveMultiple>" +
" </soap:Body>" +
"</soap:Envelope>" +
"";
     
var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");

xmlHttpRequest.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
xmlHttpRequest.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/crm/2007/WebServices/RetrieveMultiple");
xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
xmlHttpRequest.setRequestHeader("Content-Length", xml.length);
xmlHttpRequest.send(xml);

var resultXml = xmlHttpRequest.responseXML;
var entityNode = resultXml.selectSingleNode("//RetrieveMultipleResult/BusinessEntities/BusinessEntity");

var FirmennameNode = entityNode.selectSingleNode("q1:parentcontactidname");
var telephone1Node = entityNode.selectSingleNode("q1:telephone1");
var emailaddress1Node = entityNode.selectSingleNode("q1:emailaddress1");
var gendercodeNode = entityNode.selectSingleNode("q1:imp_mailsalutation");

crmForm.all.companyname.DataValue = (FirmennameNode == null) ? null : FirmennameNode.text;
crmForm.all.telephone.DataValue = (telephone1Node == null) ? null : telephone1Node.text;
crmForm.all.emailaddress.DataValue = (emailaddress1Node == null) ? null : emailaddress1Node.text;
crmForm.all.espirit_briefanrede.DataValue = (gendercodeNode == null) ? null : gendercodeNode.text;

}




der Fehler liegt hier:
Code:
var resultXml = xmlHttpRequest.responseXML;
var entityNode = resultXml.selectSingleNode("//RetrieveMultipleResult/BusinessEntities/BusinessEntity");

alert(resultXml);
alert(entityNode);


ich weiß nur nicht wieso.
Als erstes kommt"Objekt" und beim 2. alert kommt null.
Er kann also irgendwas nicht finden. ich weiß nicht wieso
H I L F E !!


Nach ein bisschen rumdebuggen, stieß ich (F12 im IE) auf folgende Meldung:
"soap:ServerServer was unable to process request. 0x80041103 'Contact' entity doesn't contain attribute with Name = 'ContactId'. Platform"


was will er denn damit sagen?
Natürlich gibts in der Datenbanksicht "Contact"die ContactID.

Nachdem ich dann die Großbuchstaben in kleine verwandelt habe kommt diese Meldung:
Code:
"<?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"><soap:Body><soap:Fault><faultcode>soap:Server</faultcode><faultstring>Server was unable to process request.</faultstring><detail><error>
  <code>0x80040203</code>
  <description>An exception System.FormatException was thrown while trying to convert input value 'myAccountId' to attribute 'contact.contactid'. Expected type of attribute value: System.Guid. Exception raised: GUID muss 32 Ziffern mit 4 Bindestrichen enthalten (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).</description>
  <type>Platform</type>
</error></detail></soap:Fault></soap:Body></soap:Envelope>"

Zu genau diesem Zeitpunkt ist aber die myAccountId="{DB0FAB9C-C139-DC11-A3A7-00E0812F6412}"
Oder stören Ihne die Anführungszeichen, oder die geschweiften Klammern?

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Neuer Erkenntnis:
Die Variable myAccountId liefert die Anfrage mit geschweiften Klammern. In der Datenbank stehen die Werte aber OHNE Klammern, deswegen findet er nix.
Trägt man die GUID direkt ein, ohne Klammern, funktioniert die Abfrage.

Frage: Wie bekomme ich jetzt die Klammern weg?

PK;. Klammern wurden entfernt mit:
Code:
 var myAccountId = crmForm.all.customer.DataValue[0].id;
       var trim_myaccountId = myAccountId.substring(1, myaccountId.length -1);


Trotzdem erkennt er die neuen Daten nicht. Es scheint einen Unterschied zu geben zwischen der rein geposteten Nr. und der aus der Variablen. Obwohl laut alert kein Unterschied bestehen sollte.
Außerdem bleibt noch das Problem der Identifikation des Firmennamens.
Das ist die neue, funktionierende Soap anfrage, wenn man statt der Variablen eine feste GUID einträgt.
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\">" +
GenerateAuthenticationHeader() +
"<soap:Body>" +
"<RetrieveMultiple xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\">" +
"<query xmlns:q1=\"http://schemas.microsoft.com/crm/2006/Query\" xsi:type=\"q1:QueryExpression\">" +
"<q1:EntityName>contact</q1:EntityName>" +
"<q1:ColumnSet xsi:type=\"q1:ColumnSet\">" +
"<q1:Attributes>" +
"<q1:Attribute>parentcustomerid</q1:Attribute>" +
"<q1:Attribute>telephone1</q1:Attribute>" +
"<q1:Attribute>emailaddress1</q1:Attribute>" +
"<q1:Attribute>imp_mailsalutation</q1:Attribute>" +
"</q1:Attributes>" +
"</q1:ColumnSet>" +
"<q1:Distinct>false</q1:Distinct>" +
"<q1:Criteria>" +
"<q1:FilterOperator>And</q1:FilterOperator>" +
"<q1:Conditions>" +
"<q1:Condition>" +
"<q1:AttributeName>contactid</q1:AttributeName>" +
"<q1:Operator>Equal</q1:Operator>" +
"<q1:Values>                                           " +
"<q1:Value xsi:type=\"xsd:string\">trim_myaccountId</q1:Value>" +
"</q1:Values>                                          " +
"</q1:Condition>" +
"</q1:Conditions>" +
"</q1:Criteria>" +
"</query>" +
"</RetrieveMultiple>" +
"</soap:Body>" +
"</soap:Envelope>" +
"";
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: Auf Basis eines Lookupfeldes andere felder ausfüllen lassen

5. Januar 2010 20:32

Hallo THomas,

ich habe mir das ganze jetzt noch einmal in Ruhe angesehen und auf meinem Testsystem nachgestellt. Den Code habe ich noch ein bisschen angepasst , damit die GUID auch richtig gelesen wird und im Alert wird mir dann auch der Nachname des ausgewählten Kontaktes angezeigt, dieser Code funktioniert also :-)
Du findest den Code am Ende dieses Artikels.

Beim Feld Customer in der Kampagnenreaktion musst du aufpassen. Das Feld Customer ist kein "normales" Lookup sondern kann nicht nur die Datensätze einer Entität sondern Datensätze der Entitäten Firma, Kontakt und Lead enthalten, wobei im Standard die Firma ausgewählt ist.

Daher kann z.B. deine Fehlermeldung kommen, das es das Feld contactid nicht gibt. Du must also am Anfang des JavaScriptes prüfen, was für ein Eintrag ausgewählt wurde und dann die entsprechende Query ausführen oder die Auswahl auf Kontakte beschränken.

Viel Erfolg beim Imlementieren und bei Fragen einfach wieder hier melden :-)

Code:
 var myContactId = crmForm.all.customer.DataValue[0].id;
 
 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\">" +
   GenerateAuthenticationHeader() +
"  <soap:Body>" +
"    <RetrieveMultiple xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\">" +
"      <query xmlns:q1=\"http://schemas.microsoft.com/crm/2006/Query\" xsi:type=\"q1:QueryExpression\">" +
"        <q1:EntityName>contact</q1:EntityName>" +
"        <q1:ColumnSet xsi:type=\"q1:ColumnSet\">" +
"          <q1:Attributes>" +
"            <q1:Attribute>fullname</q1:Attribute>" +
"          </q1:Attributes>" +
"        </q1:ColumnSet>" +
"        <q1:Distinct>false</q1:Distinct>" +
"        <q1:Criteria>" +
"          <q1:FilterOperator>And</q1:FilterOperator>" +
"          <q1:Conditions>" +
"            <q1:Condition>" +
"              <q1:AttributeName>contactid</q1:AttributeName>" +
"              <q1:Operator>Equal</q1:Operator>" +
"              <q1:Values>" +
"                <q1:Value xmlns:q2=\"http://microsoft.com/wsdl/types/\" xsi:type=\"q2:guid\">" + myContactId + "</q1:Value>" +
"              </q1:Values>" +
"            </q1:Condition>" +
"          </q1:Conditions>" +
"        </q1:Criteria>" +
"      </query>" +
"    </RetrieveMultiple>" +
"  </soap:Body>" +
   "</soap:Envelope>" +
   "";

    var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");

    xmlHttpRequest.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
    xmlHttpRequest.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/crm/2007/WebServices/RetrieveMultiple");
    xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
    xmlHttpRequest.setRequestHeader("Content-Length", xml.length);
    xmlHttpRequest.send(xml);

    var resultXml = xmlHttpRequest.responseXML;

    var entityNodes = resultXml.selectNodes("//RetrieveMultipleResult/BusinessEntities/BusinessEntity");

    for (var i = 0; i < entityNodes.length; i++) {

        var entityNode = entityNodes[i];

        var fullnameNode = entityNode.selectSingleNode("q1:fullname");
        var fullname = (fullnameNode == null) ? null : fullnameNode.text;
    }

    alert(fullname);

Re: Auf Basis eines Lookupfeldes andere felder ausfüllen lassen

6. Januar 2010 01:31

Super, danke.
So ähnlich sieht mein Code auch aus.
Frage: Wie prüfe ich denn ob wirklich "Person" ausgewählt ist?
Und kann ich NUR hier vor auswählen das Person eingestellt ist anstatt Firma?

Danke

Re: Auf Basis eines Lookupfeldes andere felder ausfüllen lassen

6. Januar 2010 01:32

Und kannst du mir bitte mal erklären wie ich dieses bekloppte Client side scripting ans laufen bekomme. Es gibts nirgends ne Erklärung und ich schnall das nicht.
Danke

Re: Auf Basis eines Lookupfeldes andere felder ausfüllen lassen

6. Januar 2010 09:11

Hallo Thomas,

du kannst deinen urspünglichen Beitrag editieren und musst nicht kurz hintereinander 2 Beiträger zum gleichen Thema posten, das wird in Communities nicht gerne gesehen und verstößt auch gegen unseren Community-Knigge.

Tomiliy hat geschrieben:Frage: Wie prüfe ich denn ob wirklich "Person" ausgewählt ist?

Sie dir dazu einmal diesen Artikel an, da wird direkt am Anfang erklärt, wie du an den Typ des ausgewählten Eintrages in einem Lookup kommst.

Tomiliy hat geschrieben:Und kann ich NUR hier vor auswählen das Person eingestellt ist anstatt Firma?

Das kannst du über ein kleines JavaScript erreichen, siehe dazu ebenfalls diesen Artikel, diemal den Bereich "Ein Lookup mit einem Standardwert füllen".

Tomiliy hat geschrieben:Und kannst du mir bitte mal erklären wie ich dieses bekloppte Client side scripting ans laufen bekomme. Es gibts nirgends ne Erklärung und ich schnall das nicht.

Da verstehe ich jetzt nicht ganz, was du meinst. Wenn du das von mir gepostete Script in das OnChange des Feldes Customer stellst, wird es funktionieren. Was funktioniert bei dir denn nicht?

Re: Auf Basis eines Lookupfeldes andere felder ausfüllen lassen

7. Januar 2010 17:17

Hallo

Tomiliy hat geschrieben: Tomiliy hat geschrieben:Und kannst du mir bitte mal erklären wie ich dieses bekloppte Client side scripting ans laufen bekomme. Es gibts nirgends ne Erklärung und ich schnall das nicht.


Da verstehe ich jetzt nicht ganz, was du meinst. Wenn du das von mir gepostete Script in das OnChange des Feldes Customer stellst, wird es funktionieren. Was funktioniert bei dir denn nicht?


Nein bei dem script bin ich fertig. ich muss nur noch vorauswählen das dort "Person" steht.
Du hast mir ja in einem Link ein Hinweis auf das "Programm "Client Side Scripting" gegeben, mit dem du deine FetchXML ins SOAPS umwandelst.
das dingen bekomme ich nicht ans laufen.
Mir ist schleierhaft wie man das startet und aus den Hilfedateien werd ich auch nicht schlau.
Warum gibts da keine exe und gut? Oder läuft das im CRM? Oder hab ich da was falsch verstanden?

Gruß
Thomas