lunes, 8 de noviembre de 2010

Nuevas opciones para la gestión de entidades en CRM 2011

En CRM 2011, han añadido ciertas funcionalidades nuevas en lo que respecta a  la personalización de Entidades.
En realidad, lo que se ha añadido es en parte nuevas funcionalidades, y en otra parte, funcionalidades existentes ya en CRM 4.0, hacerla genéricas y administrables desde las personalizaciones.
Esta es una imagen de un formulario de personalización de CRM 2011:
CRM 2011 - Personalización de entidades

Como allí se ve, entre las nuevas posibilidades se destacan:
  • La posibilidad de definir cualquier entidad como una "Actividad".
  • Enviar correos electrónicos
  • Añadir a colas (enrutamiento)
  • Habilitar la posibilidad de añadir conexiones
  • Habilitar la gestión de documentos con Sharepoint
  • Posibilidad de habilitar auditorías
Un saludo,

miércoles, 3 de noviembre de 2010

Han publicado una nueva SDK (4.0.13)

Pues sí, a pesar que Microsoft está centrando los "tiros" en la nueva versión 2011, no se olvidan de la actual y ahn publicado una nueva versión de la SDK (la 4.0.13).
Pueden descargársela de aquí:
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=82E632A7-FAF9-41E0-8EC1-A2662AAE9DFB&displaylang=en

 
En las cosas que hay actualizadas destacan:
  • Actualización de las librerías de la carpeta SDK\bin
  • Actualizados los ejemplos y documentos de SDK\Microsoft.xRM
  • Actualización de ejemplos de LINQ
  • Información sobre como utilizar la Cookie de paginación (Paging Cookie)
  • Etc.
 La verdad no hay cambios muy importantes, pero para los que trabajan con CRM 4.0 es bueno saber que seguimos teniendo "updates".

un saludo

martes, 19 de octubre de 2010

Datos de ejemplo en CRM 2011

Una funcionalidad muy útil que he encontrado para CRM 2011, es el de la creación masiva de datos de ejemplo.
Esto puede ser muy útil a la hora de hacer demos, y poder enseñar las funcionalidades estándar de CRM 2011, sin tener que "perder" tiempo creando datos de ejemplo.
En la SDK, hay un programa de consola, con el código explicando como crear estos datos.
La carpeta es: \SampleCode\CS\GeneralProgramming\Other\ImportOrRemoveSampleData.cs
CRM 2011 tiene simplemente un Mensaje para que se instalen o desinstalen los datos de ejemplo.
El código para realizar esta llamada es muy simple:

// Prompt user to install/uninstall sample data.
Console.WriteLine("Would you like to:");
Console.WriteLine("1) Install sample data for Microsoft Dynamics CRM?");
Console.WriteLine("2) Uninstall sample data for Microsoft Dynamics CRM?");
Console.Write("Press [1] to Install, [2] to Uninstall: ");
String answer = Console.ReadLine();

// Update the sample data based on the user's response.
switch (answer)
{
   case "1":
      Console.WriteLine("Installing sample data...");
      InstallSampleDataRequest request =new InstallSampleDataRequest();
      InstallSampleDataResponse response =(InstallSampleDataResponse)_serviceProxy.Execute(request);
      Console.WriteLine("Sample data successfully installed.");
      break;
   case "2":
      Console.WriteLine("Uninstalling sample data...");
      UninstallSampleDataRequest request2 = new UninstallSampleDataRequest();
      UninstallSampleDataResponse response2 = (UninstallSampleDataResponse)_serviceProxy.Execute(request2);
      Console.WriteLine("Sample data successfully uninstalled.");
      break;
   default:
      Console.WriteLine("Neither option was selected. No changes have been made to your records.");
      break;
   }


Esto crea datos de ejemplo de Cuentas, Contactos, Leads, Oportunidades, etc.

un saludo

viernes, 15 de octubre de 2010

Nuevos Javascripts en formularios de CRM 2011

Siguiendo revisando la SDK, me encontré que la forma de interactuar con los formularios a través de los Javascripts han cambiado un poco. Bueno en realidad, por completo.
Según dice la SDK: "Scripts using crmForm will continue to work in Microsoft Dynamics CRM 2011". Es decir que nuestros Javascripts realizados para 4.0, seguirán funcionando en la nueva versión (siempre y cuando sean soportados, por supuesto).
Obviamente lo que no funcionará serán las nuevas funcionalidades como los múltiples formularios por entidad,la posibilidad de mostrar un atributo mas de una vez en el mismo formulario, o la posibilidad de ocultar elementos del formulario.
Entre los ejemplos, podemos detectar que hay cambios significativos, que además ofrecen una gran variedad de nuevas funcionalidades, dejo algunos ejemplos:
  1. Nuevo objeto Xrm.Page.context:
    • .getUserRoles(): Devuelve un "array" con los roles del usuario
    • .getUserId(): Devuelve el "id" del usuario actual 
  2. Nuevo objeto Xrm.Page.data.entity:
    • .getDataXml(): Devuelve el Xml que se enviará al servidor al guardar
    • .save(): Pasándole algunos de los 3 tipos de guardar como parámetro.
  3. Nuevo objeto Xrm.Page.ui: para acceder a los objetos del formulario
    • .getCurrentControl(): Devuelve el objeto que tiene el foco
    • .refreshRibbon(): Provoca que se refresque el Ribbon según los datos
  4. Nuevo objeto Xrm.Page.ui.control
    • .setVisible(): Por fin! para ocultar atributos 
    • .setLabel(): Para determinar la etiqueta del atributo
    • .refresh(): Para actualizar un "subgrid"
    • .getParent(): Para recoger la sección que contiene el atributo
    • .setDefaultView(viewGuid): Para determinar la vista predeterminada de selección del "lookup".
Uffs, la verdad que hay mucho mucho nuevo, y todo tiene buena pinta...

La verdad que parece que en Microsoft han hecho caso a bastantes de nuestras exigencias como desarrolladores para CRM, facilitándonos las cosas haciendo "soportadas" muchas cosas que a veces teníamos que hacer de forma no soportada.

Un saludo,

viernes, 8 de octubre de 2010

Nuevos tipos de Datos en CRM 2011

He seguido revisando la nueva SDK del CRM 2011, y allí encontré algo que me dió mucha alegría en relación con los tipos de datos del nuevo CRM.
En relación con esto, hay un artículo con el título "Use the New Types" donde hace un mapeo y una comparación de tipos de datos entre CRM 4.0 y CRM 2011.
La sorporesa proviene de que todos los "viejos" tipos de datos como "Crm*" desaparecen, y se comenzarán a utilizar los tipos de datos nativos de .NET (VIVA!).
Agrupando los mismos los cambios mas significativos son:

  • 1) Los campos "Crm*" (CrmDecimal, CrmBoolean, CrmDateTime, CrmFloat, CrmNumber, Key) pasan a ser tipos nativos de .NET (System.Decimal, System.Boolean, System.Boolean, System.Double, System.Integer, System.Guid)

  • 2) Los tipos de referencias (Lookup, Customer, Owner) pasan a ser un nuevo único tipo (EntityReference)


  • Incluyo una imagen con el mapeo de tipos de datos:
    Type Mapping Between Versions

    martes, 5 de octubre de 2010

    Adiós a las "DynamicEntity" en CRM 2011

    Microsoft ha empezado a "soltar" mucha información relacionada con el nuevo CRM 2011.
    Dentro de esta información a publicado una versión "beta" de la futura SDK, que ya deja ciertas ideas de hacia donde apuntan los tiros del xRM.
    La SDK puede descargarse de aquí: http://go.microsoft.com/fwlink/?LinkID=200082&clcid=0x409.
    Intentaré poco a poco ir publicando las novedades y cambios que vaya encontrando en la misma.
    Uno de los puntos mas interesantes viene relacionado con la "muerte" de la clase "DynamicEntity", que solemos utilizar para trabajar con la SDK.
    A partir de ahora, se llamará "Entity", que será la clase que va reemplazar a la citada "DynamicEntity".
    Esto provocará algunas ventajas como que será mucho mas cómodo trabajar con todas las entidades.
    La clase Entity pasa a estar en "Microsoft.Xrm.Sdk".
    Estos son algunos ejemplos de los cambios:
    //CRM 2011
    Entity entity = new Entity(Account.EntityLogicalName);
    entity["accountid"] = Guid.NewGuid();
    
    // CRM 4.0
    DynamicEntity entity = new DynamicEntity();
    entity.Name = EntityName.account.ToString();
    entity["accountid"] = new Key(Guid.NewGuid());
    

    Un saludo,

    martes, 28 de septiembre de 2010

    Formatos de datos en CRM


    Si bien en CRM al hacer consultas a través de la plataforma ya nos devuelve los datos formateados según los datos del usuario que realiza las consultas, muchas veces es necesario recoger esa configuración del usuario para presentar la información según su formato.
    De esta forma podremos hacer que nuestros desarrollos sean totalmente "multiformato" y que este se recoja dinámicamente desde el CRM.
    Para esto existe una función de SQL Server que provee el CRM que se llama de la siguiente forma:
    SELECT * FROM dbo.fn_GetFormatStrings()
    Esta función esta documentada en la SDK y se puede llamar de forma soportada. Para mas información acerca de esta función ir a: http://msdn.microsoft.com/en-us/library/bb955087.aspx
    Esto devuelve una serie de datos relacionados con el usuario que realiza la consulta (con la autenticación de Windows Integrada) que nos servirán para luego formatear cualquier tipo de dato.
    Esto nos devuelve por ejemplo:
    • DateFormat: dd\/MM\/yyyy
    • TimeFormat: hh\:mm tt
    • NumberLanguageCode: en-GB
    • CalendarType: Gregorian
    • NumberFormat_0_Precision: ###,###,###,##0;-###,###,###,##0;0
    • NumberFormat_2_Precision: ###,###,###,##0.00;-###,###,###,##0.00;0.00
    • CurrencyFormat_0_Precision: "£"###,###,###,##0;-"£"###,###,###,##0;"£"0
    • CurrencyFormat_2_Precision: "£"###,###,###,##0.00;-"£"###,###,###,##0.00;"£"0.00
    Entonces estos resultados podemos usarlos en C# para formatear datos, por ejemplo:
    DateTime dtfecha = new DateTime(2010, 1, 1);
    double dblNumero = 587125635.66;
    
    Console.WriteLine(dtfecha.ToString(@"dd\/MM\/yyyy"));
    Console.WriteLine(dblNumero.ToString(@"###,###,###,##0;-###,###,###,##0;0"));
    Console.WriteLine(dblNumero.ToString(@"""£""###,###,###,##0.00;-""£""###,###,###,##0.00;""£""0.00"));
    
    Esto nos devuelve:

    Y listo! de esta simple manera, dejaremos nuestros desarrollos en multiformato recogiéndo los mismos desde el CRM.

    un abrazo