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,