miércoles, 16 de enero de 2013

Mostrar usuario actual (logueado) en un Lookup

Hola, a veces en los formularios de Dynamics CRM necesitamos recoger el usuario actual o logueado para rellenar algún lookup con ese valor.
Hoy voy a plantear un ejemplo completo de esto y de como se puede resolver.
Lo primero que hay que hacer es la creación de un campo de tipo Lookup con usuario en la entidad de Cuenta:
image
Luego lo añadimos al formulario de Cuenta:
image
Finalmente debemos añadir el siguiente javascript que se ejecute en el Load para actualizar el valor del campo:
   1: function setUsuarioActual()
   2: {
   3:    var user = Xrm.Page.context.getUserId(); 
   4:    var userId = user.substring(1,37);
   5:    var serverUrl = Xrm.Page.context.getServerUrl()
   6:     var ODATA_ENDPOINT = "/XRMServices/2011/OrganizationData.svc";
   7:     var ODATA_EntityCollection = "/SystemUserSet";
   8:     // Specify the ODATA Query
   9:     var ODATA_Query = "(guid\'" + userId + "')";
  10:     // Combine into the final URL
  11:     var ODATA_Final_url = serverUrl + ODATA_ENDPOINT + ODATA_EntityCollection + ODATA_Query;
  12:  
  13:     //Calls the REST endpoint to retrieve data
  14:     $.ajax({
  15:         type: "GET",
  16:         contentType: "application/json; charset=utf-8",
  17:         datatype: "json",
  18:         url: ODATA_Final_url,
  19:         beforeSend: function (XMLHttpRequest) {
  20:             XMLHttpRequest.setRequestHeader("Accept", "application/json");
  21:         },
  22:         success: function (data, textStatus, XmlHttpRequest) {
  23:            var userName = data.d.FullName;
  24:            Xrm.Page.getAttribute("new_usuarioactualid").setValue( [{id: userId , name: userName , entityType: "systemuser"}]);
  25:  
  26:            },
  27:         error: function (XmlHttpRequest, textStatus, errorThrown) {
  28:             alert('Error: '+ ODATA_Final_url);
  29:  
  30:             }
  31:     });
  32:  
  33:  
  34: }
 

Añadirlo en un web resource y llamar a ese método en el load:

image

Por cierto, para que este código funcione, hay que añadir también la librería de jQuery.
Finalmente al abrir el formulario de las Cuentas, el campo “Usuario Actual” se rellena como se ve:


image


Un abrazo!

2 comentarios:

  1. Demian: me ha parecido muy interesante tu blog, sin embargo, tengo muchas dudas y no sé a donde recurrir. ¿Crees que me podrías orientar un poco? Estoy con la prueba de 30 días, me quedan 20 jeje, pero obvio no lo va a comprar uno, hasta que veamos que realmente funciona el CRM, pero no hay quien dé soporte u orientación. Muchas gracias :) ¡Felicidades por el nombramiento de este año! patitofloarrobahotmailpuntocom

    ResponderEliminar
    Respuestas
    1. Hola, gracias por escribir.
      Te comento que puedes probar el crm con el tiempo de trial y si se te acaba, solicitar otro trial, asi puedes probarlo algo mas.
      Con lis blogs y la documentacion online de crm, tienes muchisima informacion para aprender a utilizarlo.
      Si tu empresa tiene algunos requerimientos mas avanzados, hay cientos de partners de microsoft con experiencia que podran ayudarote a la implantacion.
      Conozco bastante el crm y te digo que se pueden hacef grandes proyectos, pero hay que conocerlo bien, incluso yo lo recomiendo no solo como un crm sino tambien como una plataforma de desarrollo en general.
      Si el proyecto lo vas a implementa r tu mismo, te recomiendo formarte (incluso vertificarte si te interesa) para aprovechar el crm al maximo.
      Un abrazo y suerte!

      Eliminar