none
Ocultar Guia por permissões RRS feed

  • Pergunta

  • Olá, preciso de script para ocultar uma guia de acordo com o tipo de conta, permissões, função e entidade, do usuário no Load.

    Não sei se esse seria o inicio pro caminho correto.

    terça-feira, 13 de abril de 2010 18:43

Respostas

  • Ola Dani,

    Para esconder uma aba use o comando.

    crmForm.all.tab2Tab.style.display = 'none';

    crmForm.all.tab2Tab.style.display = ''; // onde o '2' é o numero da aba a se esconder.

    Para verificar o permissionamento do usuário, função ou o que for, tente usar o script a seguir.

     

    // Coloca na variavel status o resultado do usuario, se ele é agente local ou não. (true ou false)
    var status = UserHasRole("Nome da função");

    if(status == true)
    {
    //se for "nome da função"..

    }

    function UserHasRole(roleName)
    {
     //get Current User Roles, oXml is an object
     var oXml = GetCurrentUserRoles();

     if(oXml != null)
     {
      //select the node text
      var roles = oXml.selectNodes("//BusinessEntity/q1:name");
      if(roles != null)
      {
       for( i = 0; i < roles.length; i++)
       {
        if(roles[i].text == roleName)
        {
         //return true if user has this role
         return true;
        }
       }
      }
     }
     //otherwise return false
     return false;
    }

    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;
    //alert(resultXml.xml);
     return(resultXml);
    }

     

    Até.

     

     

    • Sugerido como Resposta w.meier quarta-feira, 14 de abril de 2010 17:49
    • Marcado como Resposta Carlos Amorim Junior quinta-feira, 29 de abril de 2010 19:59
    terça-feira, 13 de abril de 2010 18:55
  • Olá Pessoal,

    Não usei, mas encontrei um código com um exemplo que se propõe a isso:

    http://www.mohamedibrahim.net/blog/2010/03/03/hide-tab-in-any-entity-form-in-microsoft-dynamics-crm-4-using-javascript-in-onload-event-of-the-form/comment-page-1/#comment-835

    Observem que não está na postagem, e sim nos comentários.

    []´s


    Carlos Amorim Junior
    "Já ajudou a comunidade hoje?"
    http://www.dynamicscrm.com.br
    quarta-feira, 28 de abril de 2010 19:35

Todas as Respostas

  • Ola Dani,

    Para esconder uma aba use o comando.

    crmForm.all.tab2Tab.style.display = 'none';

    crmForm.all.tab2Tab.style.display = ''; // onde o '2' é o numero da aba a se esconder.

    Para verificar o permissionamento do usuário, função ou o que for, tente usar o script a seguir.

     

    // Coloca na variavel status o resultado do usuario, se ele é agente local ou não. (true ou false)
    var status = UserHasRole("Nome da função");

    if(status == true)
    {
    //se for "nome da função"..

    }

    function UserHasRole(roleName)
    {
     //get Current User Roles, oXml is an object
     var oXml = GetCurrentUserRoles();

     if(oXml != null)
     {
      //select the node text
      var roles = oXml.selectNodes("//BusinessEntity/q1:name");
      if(roles != null)
      {
       for( i = 0; i < roles.length; i++)
       {
        if(roles[i].text == roleName)
        {
         //return true if user has this role
         return true;
        }
       }
      }
     }
     //otherwise return false
     return false;
    }

    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;
    //alert(resultXml.xml);
     return(resultXml);
    }

     

    Até.

     

     

    • Sugerido como Resposta w.meier quarta-feira, 14 de abril de 2010 17:49
    • Marcado como Resposta Carlos Amorim Junior quinta-feira, 29 de abril de 2010 19:59
    terça-feira, 13 de abril de 2010 18:55
  • no caso se ele for gerente ele poderá ver, campos de uma aba... se ele for gerente e supervisor, multiplas funções ...tbm poderá ver os campos, agora de acordo com a  função sendo diferente de uma primária, nao podera visualizar.

    terça-feira, 13 de abril de 2010 19:11
  • Olá, tenho a mesma necessidade qua a Dani. Como faço para implementar a solução citada pelo Meier? Ainda não utilizei scripts em meu ambiente.

    Abraço

    quarta-feira, 14 de abril de 2010 16:12
  • olá Jairo.

    veja esse link; http://rc.crm.dynamics.com/rc/regcont/pt_br/OP/articles/10-formscripting.aspx#ID0EDC

    mas o conhecimento em JScript é indispensável para fazer essas customizações.

     

    Att.

    quarta-feira, 14 de abril de 2010 17:48
  • Olá Dona Dani,

    Você conseguiu controlar a aba por permissão?

    Se conseguiu por favor, me diga como fez.... eu estou tentando identificar o usuário mas não consigo.

     

    Obrigado.

    JP


    Se foi útil, favor marcar para que outros também possam utilizar.
    quinta-feira, 15 de abril de 2010 13:05
  • Assim que tiver o JScritp , e conseguir corretamente, posto aqui.

    quinta-feira, 15 de abril de 2010 16:15
  • Esse Script acima deuuuuuuu certin porem quando joga nas localizações avançadas, aparece.

    quinta-feira, 15 de abril de 2010 17:52
  • Mas como você usou? Você colocou o script no onload do form que tem a aba que vc quer esconder?

    Não vi no script onde informar o número da aba que quero esconder... e também não entendi onde informo o grupo de usuário que poderá ver a aba.

     

    Se você puder responder ainda hoje eu sei muito grato.

    Muito obrigado!


    Se foi útil, favor marcar para que outros também possam utilizar.
    quinta-feira, 15 de abril de 2010 18:12
  • E ai cara blz.

    o Script acima da certinho, é so vc colocar o comando dentro da condição, onde o  "Nome da Função", vc informa o nome da função que se deseja verificar, e "tab2Tab" é a aba, onde o numero entre as tab infomra o numero da tab, para escolher outra é so mudar esse numro tipo

    crmForm.all. tab"numero da gui que se deseja esconder"Tab.style.display = 'none';


    var status = UserHasRole("Nome da função");

    if(status == true)
    {
       crmForm.all.tab2Tab.style.display = 'none';

    }

     nesse caso se esconde a terceira guia lenbrando que se inicia de 0.

    sexta-feira, 16 de abril de 2010 00:52
  • Olá Pessoal,

    Não usei, mas encontrei um código com um exemplo que se propõe a isso:

    http://www.mohamedibrahim.net/blog/2010/03/03/hide-tab-in-any-entity-form-in-microsoft-dynamics-crm-4-using-javascript-in-onload-event-of-the-form/comment-page-1/#comment-835

    Observem que não está na postagem, e sim nos comentários.

    []´s


    Carlos Amorim Junior
    "Já ajudou a comunidade hoje?"
    http://www.dynamicscrm.com.br
    quarta-feira, 28 de abril de 2010 19:35