none
Buscar el telefono de la cuenta desde la pantalla de oportunidades. RRS feed

  • Pregunta

  • Hola, soy nuevo con el CRM y tengo que escribir un codigo que no se como hacer y os agradeceria a alguno que me inidicaseis como hacerlo. La cuestión es que en Oportunidades tengo varias creadas. Cuando abro una oportunidad y le digo que voy a hacer una nueva activdad, llamada de teléfono, no me aparece el teléfono de la cuenta y quiero hacer un código que me consulte el teléfono de la cuenta y lo ponga en el campo correspondiente. Para mayor información el CRM está en un servidor local dentro del dominio. Os agradeceria me indicaseis los pasos y si me pudieseis dejar algún ejemplo mejor.

    Gracias.

    miércoles, 18 de mayo de 2011 11:09

Respuestas

  • Este ejemplo desde mi punto de vista puede servirte:

     

    http://msdn.microsoft.com/en-us/library/cc677066.aspx

     

    saludos,

    PP


    Microsoft MVP Dynamics CRM | My Twitter: http://twitter.com/pabloperalta | My blog: http://weblogs.asp.net/pabloperalta | Blog en Español: http://wwww.elblogdedynamicscrm.com
    miércoles, 18 de mayo de 2011 17:49
  • Amigos,

    Podemos ayudarnos de JavaScript como dice Pablito, lo que deberíamos de hacer es llamar a los webservices de CRM y usar el método RetrieveMultiple, te dejo un ejemplo de como hacerlo:

    http://msdn.microsoft.com/en-us/library/cc677077.aspx

     

    Nos comentas como te fue. :D Un abrazo.

     


    [MVP]-Microsoft Dynamics CRM | My blog: http://jimmylarrauri.blogspot.com | My twitter: http://twitter.com/jimlarrauri
    miércoles, 18 de mayo de 2011 20:31
    Moderador
  • Hola,

    Mira el siguiente ejemplo:

    Así se llamaría al nombre de un campo lookup en crm 4:

    var lookupItem = new Array;
    
    // This gets the lookup for the attribute primarycontactid on the Account form.
    lookupItem = crmForm.all.to.DataValue;
    
    // If there is data in the field, show it in a series of alerts.
    if (lookupItem[0] != null)
    {
      // The text value of the lookup.
      alert(lookupItem[0].name);
    
      // The GUID of the lookup.
      alert(lookupItem[0].id);
    
      // The entity type name.
      alert(lookupItem[0].typename);
    
    }
    
    

     

    Así se llamaría al nombre de un campo en crm 2011:

    var lookupItem = new Array;
    
    // This gets the lookup for the attribute primarycontactid on the Account form.
    lookupItem = Xrm.Page.getAttribute("to").getValue();
    
    // If there is data in the field, show it in a series of alerts.
    if (lookupItem[0] != null)
    {
      // The text value of the lookup.
      alert(lookupItem[0].name);
    
      // The GUID of the lookup.
      alert(lookupItem[0].id);
    
      // The entity type name.
      alert(lookupItem[0].typename);
    
    }
    
    

     

    Espero haberte ayudado.

     


    [MVP]-Microsoft Dynamics CRM | My blog: http://jimmylarrauri.blogspot.com | My twitter: http://twitter.com/jimlarrauri
    viernes, 20 de mayo de 2011 15:58
    Moderador

Todas las respuestas

  • Hola,

    Lo que sucede es que la entidad Oportundiades utiliza un campo especial para elegir el cliente, que es un campo solo utilizado a nivel de CRM que permite elegir tanto un Contacto como una Cuenta.

    Lo que vas a precisar allí es poner código javascript en el OnLoad de la actividad que verifique si está relacionada con una oportunidad y a partir de allí ir invocar a los WS desde javascript para ir a buscar el dato del teléfono.

    Te adelanto que no es sencillo si recién comienzas con CRM. Yo honestamente no tengo ningún código a mano de eso y lo que te sugeriría es ir a buscar en el SDK de CRM.

    Estás trabajando sobre 2011 o 4.0?

     

    espero te sirva, saludos,

    PP


    Microsoft MVP Dynamics CRM | My Twitter: http://twitter.com/pabloperalta | My blog: http://weblogs.asp.net/pabloperalta | Blog en Español: http://wwww.elblogdedynamicscrm.com
    miércoles, 18 de mayo de 2011 17:45
  • Este ejemplo desde mi punto de vista puede servirte:

     

    http://msdn.microsoft.com/en-us/library/cc677066.aspx

     

    saludos,

    PP


    Microsoft MVP Dynamics CRM | My Twitter: http://twitter.com/pabloperalta | My blog: http://weblogs.asp.net/pabloperalta | Blog en Español: http://wwww.elblogdedynamicscrm.com
    miércoles, 18 de mayo de 2011 17:49
  • Amigos,

    Podemos ayudarnos de JavaScript como dice Pablito, lo que deberíamos de hacer es llamar a los webservices de CRM y usar el método RetrieveMultiple, te dejo un ejemplo de como hacerlo:

    http://msdn.microsoft.com/en-us/library/cc677077.aspx

     

    Nos comentas como te fue. :D Un abrazo.

     


    [MVP]-Microsoft Dynamics CRM | My blog: http://jimmylarrauri.blogspot.com | My twitter: http://twitter.com/jimlarrauri
    miércoles, 18 de mayo de 2011 20:31
    Moderador
  • Hola amigos, gracias por vuestras respuestas, estoy trabajando sobre el 2011 pablo. La cuestion es que estoy teniendo problemas para cojer el valor del destinatario. Tengo hecho un pequeño fichero js con una funcion que cargo en el OnLoad del formulario de la entidad llamadas, pero me da error y no consigo que me funcione. Os muestro el pequeño codigo que he hecho para obtener el destinatario:

    fichero prueba.js   // libreria que cargo en el formulario

    //funcion que pongo en el Onload.

    function cogeDesti(){

       var txtDestinatario = Xrm.Page.getAttribute("to").getValue();
       alert("el valor es:"+txtDestinatario);
    }

    Lo unico que intento hacer es coger el valor del destinatario y mostrarlo por la pantalla pero no se porque no funciona. Haber si me podeis hechar una mano, gracias.



    viernes, 20 de mayo de 2011 15:48
  • Hola,

    Mira el siguiente ejemplo:

    Así se llamaría al nombre de un campo lookup en crm 4:

    var lookupItem = new Array;
    
    // This gets the lookup for the attribute primarycontactid on the Account form.
    lookupItem = crmForm.all.to.DataValue;
    
    // If there is data in the field, show it in a series of alerts.
    if (lookupItem[0] != null)
    {
      // The text value of the lookup.
      alert(lookupItem[0].name);
    
      // The GUID of the lookup.
      alert(lookupItem[0].id);
    
      // The entity type name.
      alert(lookupItem[0].typename);
    
    }
    
    

     

    Así se llamaría al nombre de un campo en crm 2011:

    var lookupItem = new Array;
    
    // This gets the lookup for the attribute primarycontactid on the Account form.
    lookupItem = Xrm.Page.getAttribute("to").getValue();
    
    // If there is data in the field, show it in a series of alerts.
    if (lookupItem[0] != null)
    {
      // The text value of the lookup.
      alert(lookupItem[0].name);
    
      // The GUID of the lookup.
      alert(lookupItem[0].id);
    
      // The entity type name.
      alert(lookupItem[0].typename);
    
    }
    
    

     

    Espero haberte ayudado.

     


    [MVP]-Microsoft Dynamics CRM | My blog: http://jimmylarrauri.blogspot.com | My twitter: http://twitter.com/jimlarrauri
    viernes, 20 de mayo de 2011 15:58
    Moderador
  • Gracias Jimmy tu ayuda me está siendo muy util. Con lo que tu me has explicado he generado un fichero llamado por ejemplo Libreria.js en el cual he metido 2 funciones que el codigo seria:

    // funcion llamada en el Onload del formulario

    function cogeId(){

          var lookupItem = new Array;
          // This gets the lookup for the attribute primarycontactid on the Account form.
          lookupItem = Xrm.Page.getAttribute("to").getValue();

           // If there is data in the field, show it in a series of alerts.
           if (lookupItem[0] != null)
           {
                // The GUID of the lookup.
                var xID = lookupItem[0].id;
               dameDato('account',xID,'Telephone1')
           }
    }

    // funcion que hace la consulta

    function dameDato(entityName, searchValue, returnColumn){

         var authenticationHeader = GenerateAuthenticationHeader();

         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 http://schemas.microsoft.com/crm/2007/WebServices'>"+

        "<entityName>"+entityName+"</entityName>"+

        "<id>"+searchValue+"</id>"+

       "<columnSet xmlns:q1='http://schemas.microsoft.com/crm/2006/Query' xsi:type='q1:ColumnSet'>"+

       "<q1:Attributes>"+ "<q1:Attribute>"+returnColumn+"</q1:Attribute>"+ "</q1:Attributes>"+

       "</columnSet>"+

       "</Retrieve>"+

       "</soap:Body>"+

       "</soap:Envelope>";

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

       xHReq.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);

       xHReq.setRequestHeader("SOAPAction",http://schemas.microsoft.com/crm/2007/WebServices/Retrieve);

       xHReq.setRequestHeader("Content-Type", "text/xml; charset=utf-8");

       xHReq.setRequestHeader("Content-Length", xml.length);

       xHReq.send(xml);

       // Capture the result. var resultXml = xHReq.responseXML;

       alert(resultXml.selectSingleNode("//q1:"+returnColumn).nodeTypedValue);

    }

    Bueno pues dado este fichero js cuando entra en el Onload, la primera funcion se que la hace bien pues si cambio la llamada a la segunda poniendo un alert para ver el xID me lo enseña bien, pero en cuanto llamo a la segunda funcion me da el error: El valor de la propiedad cogeID es nulo o no esta definido, no es un objeto de funcion. La verdad es que como no he tocado antes el javascript y no veo manera de depurar, estoy un poco perdido. Dime si puedes donde estoy haciendo algo mal pues seguro que será alguna tonteria de novato.

    Gracias.

    lunes, 23 de mayo de 2011 15:16
  • Parece que ya me funciona, parece ser que el problema son los espacios que pongo que en codigo para dejarlo mas legible. ¿Puede ser esta la razón? Los he quitado y ya me funciona correctamente.

    Gracias

    lunes, 23 de mayo de 2011 16:36