viernes, 27 de enero de 2012

Herramientas que ayudan

Herramientas que ayudan

Hola amigos .. El día de hoy les traigo dos herramientas las cuales pueden ser de gran ayuda para todos .. Por lo menos para mí lo fueron..

La primera es una herramienta la cual nos sirve para pasar código personalizado de CRM 4.0 a CRM 2011.. Por debajo es un XML que encuentra las palabras o acciones que usábamos en CRM y las convierte en CRM 2011.



Les digo que es una muy buena herramienta la cual ahorra mucho trabajo, pero deben tener mucho cuidado, pues cuando pasa las personalizaciones, pueden ocurrir algunos errores de código, nada complicados pero que no nos dejan funcionar bien nuestras páginas y/o personalizaciones.

Acá les dejo el link de descargar la verdad es genial.




Otra de las herramientas geniales o que más me han gustado en el CRM 2011 es Sitemapeditor.

Esta herramienta como su nombre lo indica es para editar el sitemap de nuestro sitio… no se ustedes pero la verdad en CRM 4 era muy engorroso este proceso.. Bajar el XML editarlo subirlo y darnos cuenta que no era así.. Que tocaba hacer de nuevo este proceso..

Bien pues en CRM 2011 con esta herramienta es genial, pues simplemente conectamos nuestra aplicación y empezamos a editar el sitemap.. genial rápido y sin problemas.

Acá les dejo el link para su descarga.. Aprovechemos estas herramientas que de verdad son geniales.




J Y lo mejor son gratuitas. J

jueves, 26 de enero de 2012

Tabla de registros compartidos en CRM 2011

Hola amigos de.. Continuando con mi legado de chicharrones en CRM 2011 les cuento que esta vez me enfrente a conocer la tabla donde se guardan los registros que uno comparte en la aplicación.. se preguntaran como así.. Pues bien les voy a contar..

Ustedes saben y si no pues ya se darán cuenta.. Que yo por medio de la aplicación CRM 2011 o CRM 4.0 puedo compartir clientes entre usuarios nada del otro mundo.. le otorgo mis permisos y listo. Pero a nivel de base de datos.. Donde queda esto??. Pues bien prepárense que aquí les voy a mostrar desde la aplicación hasta la base de datos.

1 vamos a la entidad contactos y seleccionamos el contacto que deseamos comparir con otro usuario.


Luego de seleccionar el contacto, presionamos la opción de compartir o share en el menú superior.




Se nos abrirá una ventana como la siguiente.


En donde presionamos el botón de Add User / Team para anexar los usuarios con los que deseamos compartir este cliente.

Y así mismo le otorgamos los permisos sobre el cliente.


Luego de esto presionamos o.k y le concedemos los permisos deseados a los usuarios seleccionados.


Y presionamos O.k

Hasta aquí nada del otro mundo.. simplemente compartimos un contacto con dos usuarios del sistema..

Ahora bien a nivel de base de datos como veo eso…

Pues  les cuento que después de tanto mover cosas girar y colocar preguntas.. y no obtener respuestas.. Encontré la tabla donde se guardan estos registros..

A nivel de base de datos estos registros se guardan en la tabla PrincipalObjectAccess

La cual contiene logicamente unas columnas pero la vaina es saber en que colunmas me doy cuenta o como relacciono mis registros compartidos. Pues bien en la tabla hay dos columnas que nos permiten saber esto.

PrincipalId : esta columna es el id del usuario o usuarios al que se le compartio el registro

ObjectId : esta columna es el id del registro en nuestro caso del contacto compartido



Ya con estos datos puedo hacer un join entre las tablas: PrincipalObjectAccess, contact, systemuser y puedo obtener el nombre del o de los usuarios que comparten registros o en nuestra caso contactos y conocer el nombre de contacto compartido.

El cual sería algo como así:

select      B.FullName As Cliente,
            C.FullName AS Usuario
from  PrincipalObjectAccess A,
            Contact B,
            SystemUser C
where A.PrincipalId = C.SystemUserId
            And A.ObjectId = B.ContactId



Pues nada amigos, espero que les haya interesado este post y espero que algun dia lo puedan usar… recuerden dejar sus comentarios para que cada uno de nosotros crescamos a nivel intelectual y de conocimiento..

Y nada saludos..








martes, 3 de enero de 2012

lookup Dinamico CRM 4.0 y CRM 2011

Hola amigos como están….



El día de hoy un nuevo blog el cual muestra cómo obtener los datos de un campo lookup para hacer validaciones o llenar otro campo lookup.

Bien arranquemos, lo primero que debemos tener en cuenta es el campo del que vamos a obtener los datos.

Para obtener estos datos usamos la función get del CRM 2011.

Para este proceso voy a mostrar cómo se hacía en CRM 4.0 y como debe hacerse en CRM 2011, para dar una luz un poco más clara a lo que se requiere.

CRM 4.0

Var lookupItem  = new Array();

lookupItem   =  crmForm.all.<<Nombre del campo >>.DataValue;



if(lookupItem  [0]  != null)

{

                Alert(lookupItem  [0].name;

                Alert(lookupItem  [0].id;

                Alert(lookupItem  [0].typename;

}



CRM 2011

Var lookupItem  = new Array();

lookupItem   =  Xrm.Page.getAttribute.(<<Nombre del campo >>).getValue();



if(lookupItem  [0]  != null)

{

                Alert(lookupItem  [0].name;

                Alert(lookupItem  [0].id;

                Alert(lookupItem  [0].entityType;

}



Con el proceso anterior ya tenemos los datos o valores del lookup seleccionado en el evento change del control, los cuales los estamos mostrando en una alerta.



Ahora bien ya teniendo los datos, estos se los asignaremos a otro control del mismo tipo (cabe la pena aclarar que el lookup donde se colocara la información debe ser una relación con la misma entidad.)

Para colocar el valor se usara la propiedad set, asi como lo hice anteriormente, voy a colocar la forma en CRM 4.0 y CRM 2011.



CRM 4.0

Var lookupData  = new Array();

Var lookupItem   = new Object();



lookupItem .id = “CampoID”;

lookupItem .name  = “CampoNombre”;

lookupItem.typename = “NombreEntidad”;



lookupData[0] = lookupItem;



crmForm.all.<<Nombre del campo lookup >>.DataValue = lookupData;



CRM 2011

var lookupItem = new Array();

lookupItem = Xrm.Page.getAttribute("<<Nombre del campo actual>> ").getValue();

               

if(lookupItem[0] != null)

{



var value = new Array();

                value[0] = new Object();

                value[0].id = lookupItem[0].id;

                value[0].name = lookupItem[0].name;

                value[0].entityType = lookupItem[0].entityType;

               

                 Xrm.Page.getAttribute("<<Nombre del Nuevo campo>> ").setValue(value);

}



Y listo con esto ya podemos asignar a un lookup el valor de otro, para no generarlo por medio de un trigger en la base de datos o por medio de una regla de workflow



Amigos mil gracias y cualquier duda con gusto estoy para servirles.. saludos y espero les sirva mucho esta información.