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..








No hay comentarios:

Publicar un comentario