none
Obtener el valor de un campo Lookup RRS feed

  • Pregunta

  • Buenos días, estoy tratando de hacer lo siguiente:

    Tengo una entidad que son Paises por un lado. Luego tenemos la entidad de los contactos y una entidad que he creado yo que son Organizaciones.

    Entonces tanto en la entidad contacto como en la entidad organizaciones tengo en un campo Lookup a la entidad paises en cada una de ellas. Mientras que en la entidad contacto tengo un lookup a la entidad organizaciones.

    Yo quiero que si a un contacto le asigno una organización traiga el país de esa organización (campo lookup a la tabla paises) al campo país que he creado en la tabla de Contactos y que también es un lookup a la tabla paises.

    He conseguido mediante javascript y a través del id de la organización recuperar el registro de la entidad de organizaciones y he comprobado que obtengo datos correctos a través de alerts.

    El problema lo tengo cuando trato de recuperar el dato del pais de la entidad de organizaciones que al ser de tipo lookup no debe funcionar igual que un campo de texto. Este es mi código

    Se ejecuta desde el contacto y obtengo el id de la organización que han seleccionado que es un campo Lookup a la entidad de organizaciones

    var Organizacion=Xrm.Page.getAttribute("new_organizacin").getValue()[0].id;
    var retrieveRecordsReq = new XMLHttpRequest();
    //var ODataPath = Xrm.Page.context.getServerUrl() + "/XRMServices/2011/OrganizationData.svc/new_clinicasSet?$filter=new_Ciudad eq 'VALENCIA'";
    var ODataPath = Xrm.Page.context.getServerUrl() + "/XRMServices/2011/OrganizationData.svc/new_clinicasSet?$filter=new_clinicasId eq (guid'" + Organizacion + "')";
    //alert (ODataPath);
    retrieveRecordsReq.open('GET', ODataPath, false);
    retrieveRecordsReq.setRequestHeader("Accept", "application/json");
    retrieveRecordsReq.setRequestHeader("Content-Type", "application/json; charset=utf-8");
    retrieveRecordsReq.send(null);
    var records = JSON.parse(retrieveRecordsReq.responseText).d;
    //Read the first account name
    
    Xrm.Page.getAttribute("address1_city").setValue(records.results[0].new_Ciudad);
    
    alert(records.results[0].new_Ciudad);
    alert(records.results[0].new_name);
    alert(records.results[0].new_codigopais.id);

    Tengo un campo en la entidad de organizaciones que es la ciudad (new_Ciudad) y que lo actualiza bien en la tabla de Contactos "address1_city" e igual que el alert(records.results[0].new_name) lo hace correctamente.

    El problema es cuando intento obtener el valor de new_codigopais de la tabla de organizaciones que es un lookup a la tabla paises y lo quiero rellenar en el pais de contactos (lookup también a la tabla de paises).

    Si hago un alert de records.results[0].new_codigopais me devuelve [object Object] luego a partir de ahí no sé seguir. He probado cientos de combinaciones como poniendo records.results[0].new_codigopais.id ó records.results[0].new_codigopais[0].id y siempre me sale undefined.

    Por favor, agradecería cualquiera ayuda. Gracias de antemano. 



    miércoles, 25 de septiembre de 2013 12:40

Respuestas

  • Hola Javier, primero acalararte que tengas cuidado con ese código, ya que no estoy seguro si funciona tal cual en todos los navegadores, debes probar que vaya bien con chrome, IE y firefox.

    Por otro lado, te recomiendo que depures el javascript para ver ese "object Object" que te devuelve para ver como es ese objeto jSon que valores tiene.

    De todos modos, para estos temas de Javascript, podrías hacer llamadas directamente via SOAP a los web services de CRM, haciendo "fetchXML", que son sencillas con la librería: http://xrmservicetoolkit.codeplex.com

    un abrazo


    Demian Adolfo Raschkovan Blog: http://crmtoall.blogspot.com If this post answers your question, please click "Mark As Answer" on the post and "Mark as Helpful"

    • Marcado como respuesta Javier Rausell martes, 1 de octubre de 2013 5:34
    sábado, 28 de septiembre de 2013 13:50
    Moderador