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:
Luego lo añadimos al formulario de Cuenta:
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:
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:
Un abrazo!