none
Identificar equipe, ou função ou divisão do usuário RRS feed

  • Pergunta

  • Olá,

    tenho alguns campos no formulário que somente alguns usuários podem alterá-los.
    Como faço para identificar o grupo/direito de acesso e/ou a unidade de negócios ou divisão do usuário e desabilitar uma guia ou campos no formulário , se o usuário pertencer a um grupo específico?
    É possível criar um outro formulário que não seja o padrão?

    Obrigada,
    Elzira

    Elzira Microsoft Gold Partner
    quarta-feira, 21 de outubro de 2009 18:34

Respostas

  • Elzira,

    Utilize este java

    //Chama a função
    GetCurrentUserRoles();
      
    function GetCurrentUserRoles()  
    {  
     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>role</q1:EntityName>" +  
     " <q1:ColumnSet xsi:type=\"q1:ColumnSet\">" +  
     " <q1:Attributes>" +  
     " <q1:Attribute>name</q1:Attribute>" +  
     " </q1:Attributes>" +  
     " </q1:ColumnSet>" +  
     " <q1:Distinct>false</q1:Distinct>" +  
     " <q1:LinkEntities>" +  
     " <q1:LinkEntity>" +  
     " <q1:LinkFromAttributeName>roleid</q1:LinkFromAttributeName>" +  
     " <q1:LinkFromEntityName>role</q1:LinkFromEntityName>" +  
     " <q1:LinkToEntityName>systemuserroles</q1:LinkToEntityName>" +  
     " <q1:LinkToAttributeName>roleid</q1:LinkToAttributeName>" +  
     " <q1:JoinOperator>Inner</q1:JoinOperator>" +  
     " <q1:LinkEntities>" +  
     " <q1:LinkEntity>" +  
     " <q1:LinkFromAttributeName>systemuserid</q1:LinkFromAttributeName>" +  
     " <q1:LinkFromEntityName>systemuserroles</q1:LinkFromEntityName>" +  
     " <q1:LinkToEntityName>systemuser</q1:LinkToEntityName>" +  
     " <q1:LinkToAttributeName>systemuserid</q1:LinkToAttributeName>" +  
     " <q1:JoinOperator>Inner</q1:JoinOperator>" +  
     " <q1:LinkCriteria>" +  
     " <q1:FilterOperator>And</q1:FilterOperator>" +  
     " <q1:Conditions>" +  
     " <q1:Condition>" +  
     " <q1:AttributeName>systemuserid</q1:AttributeName>" +  
     " <q1:Operator>EqualUserId</q1:Operator>" +  
     " </q1:Condition>" +  
     " </q1:Conditions>" +  
     " </q1:LinkCriteria>" +  
     " </q1:LinkEntity>" +  
     " </q1:LinkEntities>" +  
     " </q1:LinkEntity>" +  
     " </q1:LinkEntities>" +  
     " </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 entityNodes = resultXml.selectNodes("//RetrieveMultipleResult/BusinessEntities/BusinessEntity");
    for (var i = 0; i < entityNodes.length; i++) 
    {
        var entityNode = entityNodes[i]; 
        var accountidNode = entityNode.selectSingleNode("q1:name");
        var accountid = (accountidNode == null) ? null : accountidNode.text;

    //Aqui você faz a comparação que for necessária
    if (accountid == "Administrador do Sistema")
    {
       crmForm.all.new_campo.Disabled = false;
    }
    }
    }


    Luiz Henroqie
    • Marcado como Resposta Elzira sexta-feira, 6 de novembro de 2009 23:43
    quarta-feira, 21 de outubro de 2009 21:52

Todas as Respostas

  • Elzira,

    Utilize este java

    //Chama a função
    GetCurrentUserRoles();
      
    function GetCurrentUserRoles()  
    {  
     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>role</q1:EntityName>" +  
     " <q1:ColumnSet xsi:type=\"q1:ColumnSet\">" +  
     " <q1:Attributes>" +  
     " <q1:Attribute>name</q1:Attribute>" +  
     " </q1:Attributes>" +  
     " </q1:ColumnSet>" +  
     " <q1:Distinct>false</q1:Distinct>" +  
     " <q1:LinkEntities>" +  
     " <q1:LinkEntity>" +  
     " <q1:LinkFromAttributeName>roleid</q1:LinkFromAttributeName>" +  
     " <q1:LinkFromEntityName>role</q1:LinkFromEntityName>" +  
     " <q1:LinkToEntityName>systemuserroles</q1:LinkToEntityName>" +  
     " <q1:LinkToAttributeName>roleid</q1:LinkToAttributeName>" +  
     " <q1:JoinOperator>Inner</q1:JoinOperator>" +  
     " <q1:LinkEntities>" +  
     " <q1:LinkEntity>" +  
     " <q1:LinkFromAttributeName>systemuserid</q1:LinkFromAttributeName>" +  
     " <q1:LinkFromEntityName>systemuserroles</q1:LinkFromEntityName>" +  
     " <q1:LinkToEntityName>systemuser</q1:LinkToEntityName>" +  
     " <q1:LinkToAttributeName>systemuserid</q1:LinkToAttributeName>" +  
     " <q1:JoinOperator>Inner</q1:JoinOperator>" +  
     " <q1:LinkCriteria>" +  
     " <q1:FilterOperator>And</q1:FilterOperator>" +  
     " <q1:Conditions>" +  
     " <q1:Condition>" +  
     " <q1:AttributeName>systemuserid</q1:AttributeName>" +  
     " <q1:Operator>EqualUserId</q1:Operator>" +  
     " </q1:Condition>" +  
     " </q1:Conditions>" +  
     " </q1:LinkCriteria>" +  
     " </q1:LinkEntity>" +  
     " </q1:LinkEntities>" +  
     " </q1:LinkEntity>" +  
     " </q1:LinkEntities>" +  
     " </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 entityNodes = resultXml.selectNodes("//RetrieveMultipleResult/BusinessEntities/BusinessEntity");
    for (var i = 0; i < entityNodes.length; i++) 
    {
        var entityNode = entityNodes[i]; 
        var accountidNode = entityNode.selectSingleNode("q1:name");
        var accountid = (accountidNode == null) ? null : accountidNode.text;

    //Aqui você faz a comparação que for necessária
    if (accountid == "Administrador do Sistema")
    {
       crmForm.all.new_campo.Disabled = false;
    }
    }
    }


    Luiz Henroqie
    • Marcado como Resposta Elzira sexta-feira, 6 de novembro de 2009 23:43
    quarta-feira, 21 de outubro de 2009 21:52
  • Valeu. Vou testar!
    Elzira
    sexta-feira, 6 de novembro de 2009 23:42
  • Elzira bom dia,

     Você não precisa criar um novo formulario. Basta buscar o perfil do usuario que está logado no CRM e apartir desse ponto , tomar uma ação.
     Dentre elas , você pode esconder apenas um campo do formulario , tirar sua obrigatoriedade ou esconder varios campos que estão em uma seção.
     O script que o Luiz te passou , você consegue pegar o perfil do usuario e tomar suas ações.

    Boa Sorte !


    Flávio G. Araújo
    segunda-feira, 16 de novembro de 2009 13:59