lunes, 28 de mayo de 2012

Herramientas que ayudan 2


Hola amigos seguidores de mi foro....

hoy les traigo otras herramientas excelentes para la edicion del menu ribon y el sitemap del CRM 2011 espero les sirva..

Site Map Editor

Editor de Mapa del sitio de Microsoft Dynamics CRM 2011 ayuda a los desarrolladores y personalizadores para configurar el mapa del sitio de una manera gráfica.

Usted ya no tendrá que crear una solución, agregar el componente, la exportación, XML y la solución de actualización de la reimportación de actualizar el sitemap.





esta es el link de descarga por si la quieren probar
http://sitemapeditor.codeplex.com/

Ribbon Editor

Editor Visual de la cinta es una herramienta para Microsoft Dynamics CRM 2011 que le permite editar las cintas de CRM. Este editor de la cinta muestra una vista previa de la cinta de CRM a medida que se está editando y te permite modificar fácilmente la cinta sin necesidad de entender por completo el esquema XML subyacente.


esta es el link de descarga por si la quieren probar
http://crmvisualribbonedit.codeplex.com/

Espero sean de gran interes para ustedes.. pues a mi me ha sacado de unas..........
bueno cualquier comentario con gusto estoy par ayudarlos..

saludos desde cali Colombia la Sucursal del Cielo ;-)

Aparece el mensaje de Error "El texto expecificado supera la longitud máxima"




Estimados seguidores, aquí les dejo un problema que tuve en la versión CRM 4.0, espero que les sea de gran utilidad.

Problema:
Cuando desde el cliente de Outlook se pincha en el botón de "Seguimiento en CRM" para subir un Correo electrónico al CRM, es posible que nos aparezca el error: "El texto expecificado supera la longitud máxima".

Solucion:
hay 2 posibles caminos:
1) Puede deberse al atributo "messageid", que almacena el id que contiene la cabecera de los emails. Este atributo solo se utiliza para los correos electrónicos entrantes. Si fuese este atributo, simplemente debemos ampliar el tamaño de dicho atributo a 200 por ejemplo y solucionado.
2) Puede deberse tambien al tamaño del atributo "subject" de la entidad email. Debemos revisar el tamaño del mismo y simplemente ampliarlo en consecuencia.
Hasta la próxima entrega.
Saludos!!

martes, 17 de abril de 2012

Trabajos del sistema: importación de datos o workflow marca “Esperando recursos”

Estimados seguidores del blog, esta semana voy a compartirles un problema que tuve en CRM 4.0, cuando quería realizar una importación de datos a través de la herramienta o cuando disparaba un flujo de trabajo. El problema era que cuando iba a Configuración –> Trabajos del sistema, dichos procesos estaban detenidos con el estado En espera o Esperando recursos.

Puesto que la importación de registros se procesa como un trabajo en segundo plano, esta requiere del servicio de procesamiento asincrónico de Microsoft CRM en el servidor. Si este servicio no se inicia, verá el error mencionado anteriormente, con estado En espera o Esperando recursos para la importación.

Para comprobar si se ha iniciado el servicio de procesamiento asincrónico de Microsoft CRM:

  • Ir a Inicio -> Herramientas administrativas -> Servicios.

  • Verificar si el servicio Microsoft CRM “Asynchronous Process” está iniciado. Si no está en ejecución, haga doble clic en el servicio, seleccione Inicio y, a continuación, haga clic en Aceptar.

  • Reanudar proceso de importación en Dynamics CRM.

Tengan en cuenta que la comprobación y el reinicio de un servicio sólo puede ser realizada por el Administrador en el servidor.


Espero que les sea de utilidad.

Saludos.

--

Mauro D. Gioino

lunes, 27 de febrero de 2012

Realizar relación lógica entre 2 campos

Hola amigos de este foro..
hoy no voy a colocar un blog o algun error que me ha salido, hoy voy a colocar un instructivo que me envio un amigo de Argentina (Mauro :-)), el cual le he ayudado a que expanda un poco mas si conocimiento en CRM 4.0 de la mejor manera..

espero esto les sirva es muy interesante, y recuerden pueden enviarme sus errores, articulos, etc que con gusto los publicare, para ayudar a muchos amigos  mas con los errores que nos han salido.

bueno auqi esta el articulo.


Instructivo para Realizar relación lógica entre 2 campos

El objetivo del presente documento es explicar cómo crear una relación entre 2 campos tipo Lookup de

una entidad X del sistema, a partir de la creación de 2 entidades personalizadas y la relación entre ellas.

El instructivo explica el procedimiento a partir del ejemplo que he realizado vinculando Países y

Provincias:

1. Crear las 2 entidades personalizadas necesarias. Para el caso del ejemplo: País y Provincia.

a. Ir a Settings -> Customization -> Customize Entities -> New.  


b. Especificar en los campos: 

i. Display Name: el nombre correspondiente.

ii. Plural Name: el nombre correspondiente.

iii. Ownership: seleccionar User u Organization, en base a los permisos de

seguridad que se le van a asignar.

iv. Por último, tildar la opción Settings, para que aparezca en este módulo. 


c. En la pestana Primary Attribute, especificar el nombre del campo que va a aparecer en

el formulario en Display Name y modificar el campo Name.



d. Save and Close -> Actions -> Publish -> Save and Close.

e. Repetir los puntos anteriores para la entidad faltante.

Nota: si al querer guardar aparece un mensaje de error informando que el nombre del atributo ya

existe, cambiar el campo Name o Display Name y volver a intentar guardar.

2. Crear una relación 1:N en la entidad primaria. Para el ejemplo, en País.

a. Ir a Settings -> Customization -> Customize Entities -> Doble click sobre la entidad

correspondiente.

b. Seleccionar del menú izquierdo 1:N Relationships -> New 1-to-Many Relationship.


c. Seleccionar de la lista del campo Related Entity la entidad secundaria. Para mi caso es

Provincia. Especificar el nombre del campo, para mi caso País (ya que es el va a aparecer

en el formulario de Provincia), o el que corresponda para este caso. Modificar el campo

Name con el nombre deseado y dejar las demás opciones por defecto -> Save and Close

-> Actions -> Publish -> Save and Close.


3. Agregar el campo lookup, para mi caso País, en la entidad relacionada o secundaria, Provincia.

a. Ir a Settings -> Customization -> Customize Entities -> Doble click sobre la entidad

correspondiente. En mi caso la secundaria es Provincia.

b. Seleccionar del menú izquierdo Form -> Doble click sobre Form.

c. Seleccionar del menú derecho Add field -> Tildar el campo País (para mi caso) o el que

corresponda -> OK -> Save and Close -> Actions -> Publish -> Save and Close.









Nota: hasta aquí se han creado las 2 entidades personalizadas y la relación entre las mismas. Con los

puntos siguientes se añade la relación a la entidad que contendrá los 2 campos lookup y el script

necesario para crear el filtro. 

4. Ingresar a la entidad principal y crear una relación N:1 para las 2 entidades que van a ser los

nuevos campos de dicho form.

a. Ir a Settings -> Customization -> Customize Entities -> Doble click sobre la entidad

correspondiente. Por ejemplo, Accounts.

b. Seleccionar del menú izquierdo N:1 Relationships -> New Many-to-1 Relationship.






c. Seleccionar de la lista del campo Primary Entity la entidad secundaria. Especificar el

nombre del campo que va a aparecer en el formulario en: Display Name y modificar el

campo Name si es necesario. Dejar las demás opciones por defecto -> Save and Close ->

Actions -> Publish -> Save and Close.






d. Repetir el punto c para la entidad faltante.

5. Configurar la vista Lookup de la entidad secundaria para que pueda buscar por la entidad

primaria.

a. <Nombre_Entidad> Lookup View






b. Seleccionar del menú derecho Add Find Columns -> Tildar los campos por los que voy a

desear filtrar para los campos lookup -> OK -> Save and Close.






6. Ingresar a la entidad principal donde quiero utilizar estos datos y agregar estos 2 campos tipo

lookup. Luego agregar el script correspondiente en el evento OnChange.

a. Ir a Settings -> Customization -> Customize Entities -> Doble click sobre la entidad

correspondiente. En mi caso la secundaria es Provincia.

b. Seleccionar del menú izquierdo Form -> Doble click sobre Form.

c. Seleccionar del menú derecho Add field -> Tildar los 2 campos que correspondan -> OK -

> Save and Close -> Actions -> Publish.

d. Doble click sobre el campo, para mi caso Pais -> Pestana Events -> Edit -> Tildar Event is

Enabled y copiar en el cuadro de texto:

var searchVal = crmForm.all.<nombre_campo1>.DataValue[0].name;

if(searchVal != null)

{

crmForm.all. <nombre_campo2>.Disabled = false;

crmForm.all. <nombre_campo2>.additionalparams = "search=" + searchVal;

}











e. -> OK -> OK -> Save -> Preview -> Create Form (para probar el funcionamiento) -> Save

and Close -> Actions -> Publish.











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.