Wednesday, 17 February 2016
« L'utilita dell' Attribute Column Number | Main | Attenzione al presearch »

...esporre il nome dell'utente corrente nelle stampe fatte all'interno del CRM utilizzando dei report.

Il nome dell'utente corrente può poi essere utile nelle query stesse dei report per effettuare filtri automatici o cose del genere.

Peccato che quando il CRM si connette al server dei report non lo fa impersonificando l'utente corrente, ma utilizzando quello di servizio del pool di applicazioni. Ciò causa che il parametro userId utilissimoagli sviluppatori di report, non abbia senso quando i report setssi sono pubblicati nel CRM.

La soluzione è stata comunque pensata da Microsoft anche se non chiaramente documentata.

Per i report basati su SQL (solo on-premise) si utilizza la funzione dbo.fn_FindUserGuid() che restituisce il GUID dell'utente corrente.

Per i report basati su fetch xml (sia crm online che on-premise) si uilizza l'operatore ad hoc eq-userid.

Per ottenere nei due casi gli altri dati dell'utente si possono quindi lanciare rispettivamente le query seguenti:

select fullname
from FilteredSystemUser
where systemuserid = dbo.fn_FindUserGuid()
 
 
 
 
 
 
 
 
 
 
 
<fetch version="1.0" output-format="xml-platform"
       mapping="logical" distinct="false">
   <entity name="systemuser">
      <attribute name="fullname" />
      <attribute name="systemuserid" />
      <order attribute="fullname" descending="false" />
      <filter type="and">
         <condition attribute="systemuserid"
                    operator="eq-userid" />
      </filter>
   </entity>
</fetch>
Comments are closed.