31 marzo 2012

XRM scripting

Innovar Tecnologías ©

- En este ejemplo trabajaremos con el objeto Xrm, para comprender el mecanismo de control del formulario CRM mediante Javascript

- En primer lugar, veamos el diagrama que forma el objeto Xrm.Page



- Mediante el control del formulario podemos introducir nuestra lógica de negocio en los procesos de creación, actualización, creación rápida, etc.

- En nuestro ejemplo estableceremos un control de datos básico sobre el formulario de “Nuevo Fax”, recogiendo los valores de cada campo y confirmando con el usuario los valores introducidos antes de guardar el registro

- El primer paso será codificar nuestro archivo Javascript e incluirlo entre los recursos web de nuestra organización CRM, para posteriormente referenciarlo desde el formulario en sus eventos onLoad y onSave

- El evento onLoad comprobará de que tipo de formulario se trata, ya que en nuestro ejemplo queremos que el código funcione en casos de creación de Nuevo Fax

- El evento onSave es el que realizará la parte de comprobación de datos y guardado en función de la respuesta de usuario



- El código de la función de chequeo de tipo de página que se ejecutará en el onLoad del formulario, y de la función de captura del evento onSave, son los siguientes:

   
   var isNewForm;
   var saveHolded;

   function checkPage() {
       var formType = Xrm.Page.ui.getFormType();
       isNewForm = (formType == 1);
   }

   function holdSaveEvent() {
       if (isNewForm && !saveHolded) {
          event.returnValue = false;
          confirmSave();
          saveHolded = false;
       }
   }



- Cuando el usuario realice la entrada de datos, y guarde el registro, se lanzará la función confirmSave(), cuyo código se expone a continuación:

   
function confirmSave() {
    
  var sender = Xrm.Page.getAttribute("from").getValue();
  var recipient = Xrm.Page.getAttribute("to").getValue();
  var faxnumber = Xrm.Page.getAttribute("faxnumber").getValue();
  var direction = (Xrm.Page.getAttribute("directioncode").getValue()) 
      ? "Saliente" : "Entrante";
  var subject = Xrm.Page.getAttribute("subject").getValue();
  var regardingobjectid = Xrm.Page.getAttribute("regardingobjectid").getValue();  
  var owner = Xrm.Page.getAttribute("ownerid").getValue();
  var duration = Xrm.Page.getAttribute("actualdurationminutes").getValue();
  var priority;
  switch (Xrm.Page.getAttribute("prioritycode").getValue()) {
   case 0: priority = "Baja"; break;
   case 1: priority = "Normal"; break;
   case 2: priority = "Alta"; break;
  }
  var due = Xrm.Page.getAttribute("scheduledend").getValue();
  var coverpage = Xrm.Page.getAttribute("coverpagename").getValue();
  var category = Xrm.Page.getAttribute("category").getValue();
  var subcategory = Xrm.Page.getAttribute("subcategory").getValue();
  
  var message = "Remitente: " + sender[0].name;
  message += "\nDestinatario: " + recipient[0].name;
  message += "\nNúmero de fax: " + faxnumber;
  message += "\nDirección: " + direction;
  message += "\nAsunto: " + subject;
  message += "\nReferente a: " + regardingobjectid[0].name;
  message += "\nPropietario: " + owner[0].name;
  message += "\nDuración " + duration;
  message += "\nPrioridad: " + priority;
  message += "\nVencimiento: " + due;
  message += "\nPortada: " + coverpage;
  message += "\nCategoría: " + category;
  message += "\nSubcategoría: " + subcategory;
    
  if(confirm('¿Guardar el registro con los datos siguientes\n\n' + message)) {
   saveHolded = true;
   Xrm.Page.data.entity.save();
  }
 }



- Este código ejemplifica la forma de referenciar valores del formulario según el tipo de campo, para finalmente llamar al método save() de la entidad desde código

- El resultado es el siguiente:



_

Desde Innovar Tecnologías
esperamos que este documento les sea de ayuda en su desarrollo

Web de la empresa