dynamische Feldzuweisung Primärer Kontakt zu Firma

2. Juli 2010 15:37

Hallo,

Leider blieb meine bisherige Suche nach einer Lösung aus bzw. gestaltet sich immer uneffektiver, deshalb:

Ich will im Datensatz Firma die Felder E-Mail und Telefon 2 automatisch und dynamisch an den Primären Kontakt koppeln, d.h. wenn ich den PriKo ändere, sollen diese Werte auch geändert werden / sein!

Wie gehe ich vor? bzw. wo kann ich diese Zuweisungen einstellen / bzw. die Felder verknüpfen?

Danke für die Hilfe

mfg

Alex

Re: dynamische Feldzuweisung Primärer Kontakt zu Firma

2. Juli 2010 17:06

Hallo Alex!

Das machst Du am besten über ein bisschen Javascript im Onchange-Ereignis des Feldes "primärer Kontakt": Die Daten aus dem zugehörigen Kontakt-Datensatz auslesen und in die entsprechenden Felder der Firma eintragen.

Viele Grüße,
Daniel

Re: dynamische Feldzuweisung Primärer Kontakt zu Firma

9. Juli 2010 14:11

Mittlerweile bin ich bis zum OnChange-Feld vorgedrungen, leider nicht beim Primären Kontakt, geschweige denn dass ich von Java eine Ahnung habe!
Da ich auch meine formulare schon etwas angepasst habe, sind da auch andere Verknüpfungen, die eingestellt werden sollen.
Wer kann mir einen genauen Pfad für Einstellungen bezüglich Verbindungen zwischen dem Kontakt (Primärer Kontakt) einer Firma und der zugeordneten Firma geben?
Auf welche Java-Befehle muss ich achten?
Danke
Schönes WE

Re: dynamische Feldzuweisung Primärer Kontakt zu Firma

10. Juli 2010 12:48

Hallo Alexander,

du must im Formular FIrma im OnChange des Feldes Primärer Kontakt deinen JavaScript Code hinterlegen. Die benötigten Werte kannst du dort mit dem Aufruf des Webservices ermitteln und dann deinem Feld zuweisen.
Mit folgendem Code ermittelst du z.B. die Firmennummer und die Telefonummer der übergeordneten Firma aus einem Kontakt. DU musst das jetzt nur auf deine Logik umstellen, fertig :-)
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: dynamische Feldzuweisung Primärer Kontakt zu Firma

23. Juli 2010 16:52

Hallo

Danke für die bisherigen Hilfestellungen.
Hier nochmal meine Parameter die geholt werden sollen:
Aus dem Formular Kontakt: --> Telefon1 (telephone1)
--> e-Mail (emailadress1)
--> bevorzugte Zeit (preferredappointmenttimecode)
Diese sollen an folgende Felder der Entität Firma übergeben werden, wenn sich der Primäre Kontakt ändert!
In das Formular Firma: --> Telefon 2 (telephone2)
--> E-Mail (emailadress1)
--> bevorzugte Zeit (preferredappointmenttimecode)

Jetzt brauche ich noch die Bezeichnungen für Firma --> accountid
und Kontakt --> also hier der Primäre Kontakt -->primarycontactid
Ist das bis hier her richtig?
DanP hat ja den Vorgang schon richtig beschrieben.

Danach gehe ich in das Formular Firma, wähle da den primären Kontakt aus und navigiere mich über "Eigenschaften ändern" und "Ereignisse" ins OnChange. Dort dann auf bearbeiten und den Skript hinterlegen!?

Jetzt fehlt mir nur noch der genaue JavaSkript! Ich habe dazu noch eine Sicherheitsfrage bezüglich der Nummern und Mails. Leider habe ich die innere Befürchtung, dass diese alle einfach mal verschwinden wenn was nicht klappt. Wie hoch ist die Wahrscheinlichkeit für dieses Ereignis?

mfg und schönes Wochenende

alex