Получаем название организации пользователя в Microsoft CRM

by DenizK 1. сентября 2010 09:18

Задача: нужно получить название организации (Business Unit) из Microsoft CRM. Решается следующим кодом

 

  • function UserHasBusinessUnit(businessUnits)  
  • {  
  •   var mybu = GetMyBusinessUnit();  
  •   
  •   for (j = 0; j < businessUnits.length; j++)  
  •   {  
  •     // If there is a match, return true, found  
  •     if (mybu == businessUnits[j]) return true;  
  •   }    
  •   
  •   //otherwise return false  
  •   return false;  
  • }  
  • function GetMyBusinessUnit() {  
  •     var xml = "" +  
  •     "<?xml version='1.0' encoding='utf-8'?>" +  
  •     "<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'" +  
  •     " xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'" +  
  •     " xmlns:xsd='http://www.w3.org/2001/XMLSchema'>" +  
  •     GenerateAuthenticationHeader() +  
  •     "<soap:Body>" +  
  •     "<Fetch xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>" +  
  •     "<fetchXml>" +  
  •     " &lt;fetch mapping='logical' count='1'&gt;" +  
  •     " &lt;entity name='businessunit'&gt;" +  
  •     " &lt;attribute name='name' /&gt;" +  
  •     " &lt;filter&gt;" +  
  •     " &lt;condition attribute='businessunitid' operator='eq-businessid' /&gt;" +  
  •     " &lt;/filter&gt;" +  
  •     " &lt;/entity&gt;" +  
  •     " &lt;/fetch&gt;" +  
  •     "</fetchXml>" +  
  •     "</Fetch>" +  
  •     "</soap:Body>" +  
  •     "</soap:Envelope>";  
  •   
  •     var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");  
  •     xmlHttpRequest.Open("POST""/mscrmservices/2007/CrmService.asmx"false);  
  •     xmlHttpRequest.setRequestHeader("SOAPAction""http://schemas.microsoft.com/crm/2007/WebServices/Fetch");  
  •     xmlHttpRequest.setRequestHeader("Content-Type""text/xml; charset=utf-8");  
  •     xmlHttpRequest.setRequestHeader("Content-Length", xml.length);  
  •     xmlHttpRequest.send(xml);  
  •   
  •     var resultXml = xmlHttpRequest.responseXML;  
  •   
  •     var resultSet = resultXml.text;  
  •     resultSet.replace('&lt;''< ');  
  •     resultSet.replace('&gt;''>');  
  •   
  •     var oXmlDoc = new ActiveXObject("Microsoft.XMLDOM");  
  •     oXmlDoc.async = false;  
  •     oXmlDoc.loadXML(resultSet);  
  •   
  •     var result = oXmlDoc.getElementsByTagName('name');    
  •   
  •     return result[0].text;  
  • }  
  •  

    Текущий рейтинг: 5.0 (1 голосов)

    • Currently 5/5 Stars.
    • 1
    • 2
    • 3
    • 4
    • 5

    Tags:

    Microsoft CRM

    Получаем полное имя текущего пользователя в Microsoft CRM

    by DenizK 27. августа 2010 05:50

    Возникла задача - в клиентском коде определить имя текущего пользователя. Мы решили задачу так - для начала создали aspx страницу и поместили туда такой заголовок:

    %@ Page Language="c#" %>
    <%@ Register TagPrefix="loc" Namespace="Microsoft.Crm.Application.Controls.Localization" Assembly="Microsoft.Crm.Application.Components.Application" %>
    <%@ Register TagPrefix="cnt" Namespace="Microsoft.Crm.Application.Controls" Assembly="Microsoft.Crm.Application.Components.Application" %>
    <%@ Import Namespace="Microsoft.Crm.Utility" %>
    <%@ Import Namespace="Microsoft.Crm.Application.Pages.Common" %>
    <html>
    <head>
        <cnt:AppHeader id="crmHeader" runat="server" />
        <title>Новости</title>
    </head>

     Это очень важно т.к. без  <cnt:AppHeader id="crmHeader" runat="server" /> у вас не будет работать функция GenerateAuthenticationHeade(). А полное имя получаем следующим кодом

    var xml = "" +
    "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
    "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">" +
    GenerateAuthenticationHeader() +
    " <soap:Body>" +
    " <RetrieveMultiple xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\">" +
    " <query xmlns:q1=\"http://schemas.microsoft.com/crm/2006/Query\" xsi:type=\"q1:QueryExpression\">" +
    " <q1:EntityName>systemuser</q1:EntityName>" +
    " <q1:ColumnSet xsi:type=\"q1:ColumnSet\">" +
    " <q1:Attributes>" +
    " <q1:Attribute>businessunitid</q1:Attribute>" +
    " <q1:Attribute>firstname</q1:Attribute>" +
    " <q1:Attribute>fullname</q1:Attribute>" +
    " <q1:Attribute>lastname</q1:Attribute>" +
    " <q1:Attribute>organizationid</q1:Attribute>" +
    " <q1:Attribute>systemuserid</q1:Attribute>" +
    " </q1:Attributes>" +
    " </q1:ColumnSet>" +
    " <q1:Distinct>false</q1:Distinct>" +
    " <q1:Criteria>" +
    " <q1:FilterOperator>And</q1:FilterOperator>" +
    " <q1:Conditions>" +
    " <q1:Condition>" +
    " <q1:AttributeName>systemuserid</q1:AttributeName>" +
    " <q1:Operator>EqualUserId</q1:Operator>" +
    " </q1:Condition>" +
    " </q1:Conditions>" +
    " </q1:Criteria>" +
    " </query>" +
    " </RetrieveMultiple>" +
    " </soap:Body>" +
    "</soap:Envelope>" +
    "";

    var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");

    xmlHttpRequest.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
    xmlHttpRequest.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/crm/2007/WebServices/RetrieveMultiple");
    xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
    xmlHttpRequest.setRequestHeader("Content-Length", xml.length);
    xmlHttpRequest.send(xml);

    var resultXml = xmlHttpRequest.responseXML;
    var entityNode = resultXml.selectSingleNode("//RetrieveMultipleResult/BusinessEntities/BusinessEntity");

    var firstNameNode = entityNode.selectSingleNode("q1:firstname");
    var lastNameNode = entityNode.selectSingleNode("q1:lastname");
    var fullNameNode = entityNode.selectSingleNode("q1:fullname");
    var systemUserIdNode = entityNode.selectSingleNode("q1:systemuserid");
    var businessUnitIdNode = entityNode.selectSingleNode("q1:businessunitid");
    var organizationIdNode = entityNode.selectSingleNode("q1:organizationid");

    Оценок нет

    • Currently 0/5 Stars.
    • 1
    • 2
    • 3
    • 4
    • 5

    Tags:

    Microsoft CRM

    О нас

    Это блог компании Инлайн. Мы занимаемся разработкой сайтов, корпоративных порталов и корпоративных информационных систем на основе новейших технологии Microsoft  - ASP.NET, SharePoint и Silverlight. А в этом блоге мы размещаем самые последние новости в области разработке для web.

    Облако тегов