none
Obtener datos de una entidad relacionada

    Pregunta

  • Hola buenos dias, me encuentro enfrentando un problema en crm 2011, el escenario es el siguiente, en la entidad oportunidades hay un campo lookup relacionado a la entidad contacto (v5_contactoid), sucede que deseo obtener el email de dicho contacto y con el llenar un campo en la entidad oportunidades, este es mi codigo, pero me marca un valor nulo y si existe un correo.

    function email(){

     var lookupItem = new Array;
    lookupItem = Xrm.Page.getAttribute("v5_contactoid").getValue();
    var contacto = lookupItem[0].id;

    var FXML ="<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>"+
     "<entity name='contact'>"+
        "<attribute name='emailaddress1' />"+
        "<filter type='and'>"+
        "  <condition attribute='fullname' operator='eq' value='" + contacto+ "' />"+
        "</filter>"+
     "</entity>"+
     "</fetch>";

    var XmlDoc = Fetch(FXML); 
    var results = XmlDoc.getElementsByTagName('result');   
    var cod = "";
        for (i=0;i < results.length;i++)
        {
      if(results[i].selectSingleNode('./emailaddress1') != null) 
       cod = results[i].selectSingleNode('./emailaddress1').nodeTypedValue;
        }

    function Fetch(xml)
    {
     var Xml = "<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\">"
     Xml += GenerateAuthenticationHeader()
     Xml += "<soap:Body>";
     Xml += "<Fetch xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\">";
     Xml += "<fetchXml>";
     Xml += FetchEncode(xml); // Microsoft _HtmlEncode function 
     Xml += "</fetchXml>";
     Xml += "</Fetch>";
     Xml += "</soap:Body>";
     Xml += "</soap:Envelope>";

     var XmlHttp = CreateXmlHttpObject(); // Microsot CreateXmlHttp function 
     XmlHttp.open("POST", "/mscrmservices/2007/crmservice.asmx", false); //Sync Request 
     XmlHttp.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
     XmlHttp.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/crm/2007/WebServices/Fetch");
     XmlHttp.send(Xml);

     var XmlDoc = new ActiveXObject("Msxml2.DOMDocument");
     XmlDoc.async = false;
     XmlDoc.resolveExternals = false;                   
     XmlDoc.loadXML(XmlHttp.responseXML.text);
     return XmlDoc;
    }
    function CreateXmlHttpObject() //CreateXmlHttp 
    {
     var oXmlHttp = null;
     if (window.XMLHttpRequest) {
      oXmlHttp = new XMLHttpRequest();
     }
     else {
       var arrProgIds = ["Msxml2.XMLHTTP", "Microsoft.XMLHTTP"];
       for (var iCount = 0; iCount < arrProgIds.length; iCount++) {
        try {
         oXmlHttp = new ActiveXObject(arrProgIds[iCount]);
         break;
        }
        catch (e) { }
       }
     }
     return oXmlHttp;
    }

    function FetchEncode(strInput) //_HtmlEncode 
    {
     var c;
     var HtmlEncode = '';
     if (strInput == null) {
       return null;
     }
     if (strInput == '') {
       return '';
     }
     for (var cnt = 0; cnt < strInput.length; cnt++) {
       c = strInput.charCodeAt(cnt);
       if (((c > 96) && (c < 123)) ||
      ((c > 64) && (c < 91)) ||
      (c == 32) ||
      ((c > 47) && (c < 58)) ||
      (c == 46) ||
      (c == 44) ||
      (c == 45) ||
      (c == 95)) {
        HtmlEncode = HtmlEncode + String.fromCharCode(c);
       }
       else {
        HtmlEncode = HtmlEncode + '&#' + c + ';';
      }
     }
     return HtmlEncode;
    }
    }

    Espero me puedan ayudar, por favor, se los agradecere.

    jueves, 23 de febrero de 2012 16:49

Todas las respuestas

  •  Estimado la comparacion es incorrecta esta comparando un string y un lookup 

      <condition attribute='fullname' operator='eq' value='" + contacto+ "' />

     deberia colocar algo como:

    <condition attribute='contactid' operator='eq' value='" + contacto+ "' /> para que se puede ejecutar el fetch correctamente y te traiga el e-mail que necesitas........

     


    gracias

    jueves, 23 de febrero de 2012 22:42