Spiga

Actualizacion Microsoft CRM SDK Ver. 4.0.4

Ya esta disponible una nueva versión del SDK. La versión 4.0.4.

 

Les pueden descargar de Aquí..

 

Saludos!

Deshabilitar todos los campos de un tab (pestañas) en Microsoft CRM

Hola a todos!,

Me quede pensando en la entrada anterior en la que les contaba Como ocultar tabs (pestañas) en Microsoft CRM con JavaScript. y decidí ir un poco mas allá con este tema.

En esta ocasión voy a comentarles como deshabilitar todos los campos de un tab.

A diferencia de lo explicado anteriormente esto nos va a permitir visualizar todos estos datos.

Bien manos a la obra,

Lo primero que tenemos que hacer es copiar esta función en el evento onload de javascript del formulario de la entidad donde queremos implementar esta funcionalidad.

function SetAllFieldsDisabled(sTab)
{
var iLen = sTab.all.length;
for (i = 0; i < iLen; i++)
{
o = sTab.all[i];
switch (o.tagName)
{
case "INPUT":
case "SELECT":
case "TEXTAREA":
case "TABLE":
case "DIV":
case "SPAN":
case "IMG":
case "IFRAME":
if (!IsNull(o.id) && (o.id != ""))
{
o.Disabled=true;
}
break;
}
}
}

Luego lo que tenemos que hacer es hacer uso de esa función de la siguiente forma:

SetAllFieldsDisabled(crmForm.all.tab1);

Como ven la función recibe como parámetro un referencia al tab el cual queremos que deshabilite sus campos.

Presten particular atención a que la forma de referenciar al tab es distinta a como lo hacíamos en el post anterior.

En este caso hacemos referencia como crmForm.all.<tab_id (tab#)> donde # es el numero de tab comenzando de 0.

Bueno eso es todo

Saludos!

Utilizando el teclado en Microsoft CRM 4.0 (HotKeys)

Realmente sería un poco difícil poder utilizar Microsoft CRM sin la ayuda de un mouse.

Mas de uno me diría que CRM la posibilidad de desplazarme por los distintos menús de la aplicación con la tecla TAB. Pero la realidad es que el sistema se hace bastante tedioso e inoperante.

Sin embargo, hay ciertas teclas que nos pueden facilitar las cosas cuando usamos CRM todo los días. (Esta entrada va para los usuarios finales!!!.).

 

Bien, dentro de cualquier formulario de cualquier entidad:

  • ESC : cierra la ventana
  • Ctrl + Shift + F: Abre/Cierra asistente de formulario
  • Shift + F12: Guarda el formulario.
  • Ctrl + Shift + S: Guardar/Nuevo. Guarda el formulario y abre otro nuevo (Siempre y cuando el usuario tenga permisos de creación sobre la entidad, si no los tiene solo guarda el formulario).
  • Alt + Shift + S: Guardar/Cerrar Guarda y cierra el formulario.
  • Ctrl + S: Guarda el formulario.
  • Ctrl + Shift + D: Elimina el registro (Siempre que el usuario disponga de permisos para realizar esta acción)

 

Otro ayudita pero con las grillas!

 

  • Para ordenar cualquiera de las vistas (Grillas) en CRM por varias columnas lo que tenemos que hacer es utilizar la techa Shift y hacer click en las distintas columnas. Tengan en cuenta que la grilla se ordena según como vayamos haciendo click. Es decir. si en una vista de contactos ordenamos primero pro nombre y luego por apellido, obtendremos primero todos los contactos cuyos nombres empiezan por ejemplo con la letra "A" y dentro estos, ordenado por apellido.

 

Muchos de estos atajos también se pueden utilizar en la versión 3.0!!!

 

Saludos

Como ocultar tabs (pestañas) en Microsoft CRM con JavaScript

Algunos lectores del blog me han consultado por correo electrónico como ocultar tabs en Microsoft CRM con JavaScript.

La realidad es, que generalmente este tipo de cosas están por todos lados, y por lo tanto evito ponerlas en este blog. Con una simple búsqueda en google obtenemos mas de 100 resultados, pero después me pregunté el porqué no hacerlo aunque estén en todos lados??.. así que ... en fin.. acá esta.

El script es simple y no tiene muchas vueltas:

Para ocultar un tab se utiliza:

crmForm.all.tab5Tab.style.display="none";

Para que se vuelva visible otra vez:

crmForm.all.tab5Tab.style.display="";

Lo importante en el script es el objeto "tab#Tab". Donde # es el numero de tab que queremos acultar o mostrar.

Otra cosa a tener en cuenta es que al primer tab o pestaña le corresponde el numero 0.

Ej:

Si queremos acultar la primer pestaña:
crmForm.all.tab0Tab.style.display="none";

Si queremos hacer visible la 2da pestaña:
crmForm.all.tab3Tab.style.display="";

Esto se puede utilizar tanto en la versión 3.0 como en la 4.0 de CRM.

Saludos

Error al crear una nueva entidad en Microsoft Dynamics CRM 3.0 /4.0 - Parte 2

Cumpliendo con lo prometido en la entrada anterior (Error al crear una nueva entidad en Microsoft Dynamics CRM 3.0 /4.0 - Parte 1), les voy a contar como solucionar de forma manual el problema que ocurre al eliminar los roles de sistema en Microsoft Dynamics CRM 4.0.

 

Solución 1:

 

Microsoft CRM 4.0 nos da la posibilidad de importar e exportar roles de seguridad como si fuese una entidad cualquiera.

 

Por lo cual si contamos con otra instalación de CRM (No hace falta que sea instalación basada en la que tenemos el problema, es decir, puede ser una totalmente nueva). Podemos exportar los roles de sistema e importarlos en nuestro CRM.

Publicar todo y problema resuelto.

 

Solución 2:

 

Si no contamos con otra instalación lo debemos hacer manualmente (Este es el procedimiento que se realizaba en la versión 3.0 antes de que saliera el rollup 3.)

 

Para comenzar vamos a la instancia de SQL Server donde esta instalado nuestro CRM.

Si abrimos la tabla RoleTemplateBase. Vamos a ver que siguen existiendo las plantillas de los roles de sistema.

 

roles1

 

Lo que debemos hacer es en CRM crear nuevos roles (a través de la aplicación) y luego por SQL copiar el RolTempleteId correspondiente y pegarlo en la tabla RoleBase

 

roles2

 

Saludos

Error al crear una nueva entidad en Microsoft Dynamics CRM 3.0 /4.0 - Parte 1

Una de las ultimas cosas que se realizan cuando uno esta finalizando una implementacion de CRM es generalmente el ajuste de los roles de seguridad.

Creamos y copiamos roles modificando los permisos sobre las entidades y sus acciones según nuestras necesidades.

 

Una de las cosas que se explican en los libros de CRM desde la versión 1.2 es el evitar borrar los roles de sistema, es decir, esos roles que se crean al instalar la aplicación.

 

Ahora bien, en contraposición a lo anterior el CRM nos permite borrar los roles de sistema!!!!.. Entonces por que no hacerlo???...y acá comienzan los problemas...

 

Un motivo ya se lo están imaginando por el título de esta entrada... y si, efectivamente, al borrar los roles de sistema CRM nos da un error al crear una nueva entidad.

 

Como siempre el error que vamos a obtener es:

Se ha producido un error, consulte con el administrador.

 

Pero si hacemos un trace:

>Crm Exception: Message: roleId, ErrorCode: -2147220989, InnerException: System.ArgumentException: roleId
[2008-03-12 15:35:39.6] Process: w3wp |Organization:c21461e1-7398-4eef-893a-1dc10cfd626a |Thread:    9 |Category: Platform.Metadata |User: 00000000-0000-0000-0000-000000000000 |Level: Error | EntityService.Create
>EntityService.Create caught exception: Microsoft.Crm.CrmArgumentException: roleId ---> System.ArgumentException: roleId
   --- End of inner exception stack trace ---
   at Microsoft.Crm.Exceptions.ThrowIfGuidEmpty(Guid parameter, String name)
   at Microsoft.Crm.ObjectModel.RoleServiceInternal`1.AddPrivileges(Guid roleId, RolePrivilege[] privileges, ExecutionContext context)
   at Microsoft.Crm.Metadata.SecurityHelper.AddPrivilegesToUserRole(RolePrivilege[] privileges, Guid[] roleTemplates, ExecutionContext context)
   at Microsoft.Crm.Metadata.SecurityHelper.CreateEntityHelper(IEntityDescription entityDescription, OwnershipTypes ownershipTypeMask, ExecutionContext context)
   at Microsoft.Crm.Metadata.EntityService.CreateInternal(EntityCreateInfo entityInfo, ExecutionContext context)
   at Microsoft.Crm.Metadata.EntityService.Create(EntityCreateInfo entityInfo, ExecutionContext context)
[2008-03-12 15:35:39.6] Process: w3wp |Organization:c21461e1-7398-4eef-893a-1dc10cfd626a |Thread:    9 |Category: Application |User: 00000000-0000-0000-0000-000000000000 |Level: Error | ErrorInformation.LogError
>MSCRM Error Report:
--------------------------------------------------------------------------------------------------------
Error: roleId

Error Number: 0x80040203

Error Message: roleId

Error Details: roleId

Source File: Not available

Line Number: Not available

Request URL: http://crmserver:5555/COR/AppWebServices/SystemCustomization.asmx

Stack Trace Info: [ArgumentException: roleId]

[CrmArgumentException: roleId]
   at Microsoft.Crm.Exceptions.ThrowIfGuidEmpty(Guid parameter, String name)
   at Microsoft.Crm.ObjectModel.RoleServiceInternal`1.AddPrivileges(Guid roleId, RolePrivilege[] privileges, ExecutionContext context)
   at Microsoft.Crm.Metadata.SecurityHelper.AddPrivilegesToUserRole(RolePrivilege[] privileges, Guid[] roleTemplates, ExecutionContext context)
   at Microsoft.Crm.Metadata.SecurityHelper.CreateEntityHelper(IEntityDescription entityDescription, OwnershipTypes ownershipTypeMask, ExecutionContext context)
   at Microsoft.Crm.Metadata.EntityService.CreateInternal(EntityCreateInfo entityInfo, ExecutionContext context)
   at Microsoft.Crm.Metadata.EntityService.Create(EntityCreateInfo entityInfo, ExecutionContext context)
   at Microsoft.Crm.Metadata.EntityService.Create(EntityCreateInfo entityInfo)
   at Microsoft.Crm.Application.WebServices.SystemCustomization.EntityCreate.Execute(IUser user, ParameterBag paramBag)
   at Microsoft.Crm.Application.WebServices.SystemCustomization.SystemCustomization.CreateEntity(XmlNode data)

 

Si prestamos atención al trace, (donde esta en azul), vamos a ver que el problema esta efectivamente en los roles de seguridad.

 

Este problema se da por que CRM al crear una nueva entidad, automáticamente le intenta dar permisos al rol de personalización (System Customizer) sobre la nueva entidad a crear. Si llegado el caso se nos ocurrió borrar ese rol de seguridad vamos a recibir el error arriba mencionado.

 

En Microsoft CRM 3.0 eso ya esta solucionado con el Rollup 3. (Paquete acumulativo de actualizaciones 3 para Microsoft Dynamics CRM 3.0 (KB 935364))

 

En Dynamics CRM 4.0 tenemos el mismo problema y hasta la fecha no hay un fix que lo solucione.

 

En la próxima entrada les voy a explicar como solucionar de forma manual este problema en la versión 4.0

 

Hasta la próxima!!