[gelöst]Weitere Felder aus verknüpfter Entität anzeigen

17. Februar 2010 16:06

Mal eine grundlegende Frage.
Ich habe in der Anfrage eine n:1 Beziehung zu einer benutzerdefinierten Entität "Serviceartikel".
Somit wird die Nummer des Serviceartikels in der Anfrage angezeigt.
Ich würde aber gerne auch das Feld Bezeichnung aus der Entität "Serviceartikel" anzeigen.
Geht so was?
Zuletzt geändert von Smeagul am 18. Februar 2010 17:09, insgesamt 1-mal geändert.

Re: Weitere Felder aus verknüpfter Entität anzeigen

17. Februar 2010 16:18

Hallo,

ja, so etwas geht indem du mit JavaScript über den Webservice auf die übergeordnete Entität zugreifst.
Siehe JavaScript - Webservice in CRM 4.0 nutzen

Re: Weitere Felder aus verknüpfter Entität anzeigen

18. Februar 2010 14:22

.... und wie bekomme ich das entsprechende Feld in das Formular?

Re: Weitere Felder aus verknüpfter Entität anzeigen

18. Februar 2010 14:36

Du musst in der Entität Anfrage ein zusätzliches Feld Bezeichnung machen.
Per JavaScript frägst du nun das Ursprungsfeld Bezeichnung deiner eigenen Entität Serviceartikel ab und fügst es ein.

Hier ein Beispiel von mir, ich frage sogar über mehrere Verknüfungen ab. Dir müsste eine Abfrage reichen:
Code:
if (crmForm.all.new_parentcustomerid.DataValue != null)
{
var myAccountId = crmForm.all.new_parentcustomerid.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>account</q1:EntityName>" +
   "        <q1:ColumnSet xsi:type=\"q1:ColumnSet\">" +
   "          <q1:Attributes>" +
   "            <q1:Attribute>new_parentagentid</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>";

    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;

if(xmlHttpRequest.status == 200)
   {
      // Capture the XMLHttp response in XML format.
      var resultXml = xmlHttpRequest.responseXML;

      var nodeNumber = resultXml.selectNodes("//q1:new_parentagentid");
      if (nodeNumber.length == 1)
      {
         var myParentAgentID = nodeNumber[0].text;
         //alert(myParentAgentID);
      }
   }



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>emailaddress1</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\">" + myParentAgentID + "</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;

if(xmlHttpRequest.status == 200)
   {
      // Capture the XMLHttp response in XML format.
      var resultXml = xmlHttpRequest.responseXML;

      var nodeNumber = resultXml.selectNodes("//q1:emailaddress1");
      if (nodeNumber.length == 1)
      {
         var myEmailaddress = nodeNumber[0].text;
         //alert(myEmailaddress);
        crmForm.all.new_vertreteremail.DataValue = myEmailaddress;
      }
   }

Re: Weitere Felder aus verknüpfter Entität anzeigen

18. Februar 2010 17:09

Super, danke!
Funktiniert!