Tips para campos Lookup en Microsoft CRM

Después de una semanita en la que no he tenido prácticamente tiempo para poner ningún post en el blog, hoy voy a dejar aquí una recopilación de algunos «tips» que he ido apuntando sobre cosas interesantes de los campos lookup de Microsoft Dynamics CRM 3.0. Espero que os resulte útil.


Fijar la entidad por defecto en un campo Lookup


A veces resulta un poco molesto tener que estar seleccionando el tipo de entidad adecuado cuando queremos seleccionar un registro en un campo de lookup que acepta varios tipos de entidades. Por ejemplo, imaginad que en la empresa os dicen que todos los incidentes de servicio se relacionarán con contactos y no con cuentas, pues puede resultar un poco molesto para la persona que está registrando incidentes tener que estar seleccionando el tipo de entidad relacionada cada vez que quiera relacionar el incidente con un cliente.


Bueno pues esto tiene solución. En el evento form OnLoad() podemos poner una línea de Java Script que cambie el tipo de entidad por defecto de un campo Lookup.


//Establecer tipo de entidad por defecto
crmForm.all.regardingobjectid.defaulttype = «2»;


Como véis no hay más que indicar el EntityTypeCode de la entidad deseada y listo.


Limitar los tipos de entidades que se pueden seleccionar en un Lookup


Siguiendo con el ejemplo anterior. ¿Cómo hacemos para que en el lookup «cliente» de la ficha de casos sólo se puedan seleccionar contactos y no cuentas? Pues, de nuevo utilizando Java Script lo podemos conseguir, aunque esta vez ya se complica un poquito más.


//Establecer solo contactos como tipos de entidad
crmForm.all.regardingobjectid.lookuptypes = «2»;

//Poner el icono a mostrar en los registros
crmForm.all.regardingobjectid.lookuptypeIcons = «/_imgs/ico_16_2.gif»;


No os olvidéis de incluir siempre la segunda línea para establecer el icono que se muestra delante del nombre del registro en el campo de Lookup.


Filtrar los registros disponibles en el Lookup


Y finalmente un «tip» que me encanta, cómo filtrar los registros que aparecen en el cuadro de diálogo del Lookup. Imaginad que tenéis miles de contactos en el CRM, y que queréis establecer el contacto principal de una cuenta mediante el campo disponible a tal efecto en el formulario. Resultaría más cómodo que en el listado de selección del cuadro de diálogo sólo se mostrasen aquellos contactos que se encuentren relacionados con esa cuenta ¿no? Bueno, pues otra vez el Java Script nos va a ayudar.


crmForm.all.primarycontactid.lookupbrowse = 1;
crmForm.all.primarycontactid.additionalparams = «fetchXml=<fetch mapping=’logical’><entity name=’contact’><all-attributes /><filter type=’and’><condition attribute=’parentcustomerid’ operator=’eq’ value='» + crmForm.ObjectId + «‘/></filter></entity></fetch>»;


En la primera línea fijamos el campo lookupbrowse a 1 para indicar que se van a filtrar los resultados a mostrar en el cuadro de diálogo. Mientras que en la segunda línea debemos proporcionar la consulta que utilizaremos para obtener los registro a mostrar, propocionando el FetchXML que la describe.


En este caso el FetchXML simplemente selecciona aquellos contactos que tengan como «parentaccount» (cuenta principal) la cuenta que estamos visualizando en el formulario, de ahí la concatenación del ObjectID en el medio de la consulta.


Sin embargo, hacer este filtrado tiene un efecto colateral que hay que destacar. El botón de crear un nuevo registro en el cuadro de diálogo del Lookup dejará de funcionar, si lo pulsamos mostrará un error. Es lo que tiene utilizar personalizaciones no soportadas.


Bueno, espero que os resulten de interés estos truquillos sobre los campos de Lookup. La semana que viene más.


Un saludo,


Marco Amoedo


PD: Estas personalizaciones no están soportadas, por lo tanto úsalas bajo tu propia responsabilidad y ten en cuenta que pueden provocar problemas a la hora de futuras actualizaciones y/o recibir soporte técnico.

12 comentarios sobre “Tips para campos Lookup en Microsoft CRM”

  1. Lo he probado por que es muy interesante ya que siempre me ha costado creer que esto no estuviera contemplado, un contacto principal normalmente va a ser un contacto que previamente esta como contacto de la cuenta. Además puese ser interesante para realizar filtros ante otras entidades.
    Habrá que trabajar para que el botón Nuevo deje de funcionar.

    Comentar, por otra parte, que me parece muy interesante tu blog, es más, todas las semanas lo consulto para novedades siempre de mi interés.
    Sirva esto para animarte a seguir informándonos.

    Un cordial saludo

  2. cheka esto

    selObjects=1024&findValue=1″;

    solucionas el error del boton «nuevo», ademas me he percatado, que esas paginas heredan todo los eventos de la pagina padre no ? es decir hereda los eventos del singlelookup.aspx…. estoy en lo correcto …

  3. Hola….para serte sincero tengo una gran curiosidad…. el momento de hacer new contactos, etc… como puedo hacer para pasarle , al cuenta que estoy consultando? …. o creo que ya esty un pooc trastornado con esto del CRM :S … bueno saludos y gracias por la ayuda de antemano …

  4. Que tal colega.

    =)

    Visité tu blog y me pareció interesante (por eso te escribo).

    Propongo dos cosas:
    1.- Compartamos un links dentro de nuestros propios blogs (será un placer estar en el tuyo). Te dejo mis datos por si deseas estar en comunicación.

    2.- Si lo crees prudente, asignarnos un voto de confianza =) en el concurso de 20minutos.es.
    En la categoría de TECNOLOGÍA.

    Este es mi blog:
    http://www.miguelflores.com.mx/blog/

    Aquí puedes votarme desde 20minutos.:
    http://www.20minutos.es/premios_20_blogs/busqueda/to+bit+o+no+to+bit/

    Un abrazo desde México. Colega.!
    =)

  5. Saludos

    Marco, se puede asignar un valor predeterminado para que salga en el campo lookup? Programarle en el evento OnChange para no tener que escoger nada en la ventana de diálogo del lookup sino que aparezca en el formulario.

  6. Hola!! tengo una duda… se puede añadir un campo lookup a una entidad?? me explico… yo he creado una tabla de propietarios y ahora quisiera, en la entidad Oportunidad, añadir un campo de tipo lookup pero que me extrayera los datos de esta nueva tabla que yo he creado. Esto es posible?? Muchísimas gracias y un 10 por tu blog.
    Saludines!!

  7. Hola!!

    una consulta respecto a «Filtrar los registros disponibles en el Lookup»… no es posible el realizar el filtro en la entidad Respuesta de Campaña para que solo muestre los integrantes de la lista de destino que tiene configurada una campaña?…

    agradecere tu respuesta…

    Saludos y de antemano gracias.

  8. Estoy iniciando en esto del CRM 4.0 y tengo una duda.
    Cuando selecciono un registro mediante el Lookup, necesito que me aparezca un valor de ese lookup en otro campo me explico con un ejemplo: selecciono una cuenta y me debe de colorcar aparte de la cuenta seleccionada el numero de la cuenta en otro campo

    gracias

    Miguel Cruz

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *