none
CRM 2011 - Permissão de Campo RRS feed

  • Pergunta

  • Bom Dia

    Como faço para limitar as opções do campo por direito de acesso. Exemplo, um usuário com direito de acesso de Gestão de Serviço não pode fazer venda do tipo Upselling, só que no campo de tipo de venda tem como opção Upselling e "Novo Cliente". Como faço isso em Java Script?

    segunda-feira, 2 de setembro de 2013 12:33

Respostas

  • Boas Magno,

    Sim você tem que juntar as duas coisas, eu coloco aqui um exemplo concreto usando o getUserRoles apesar de eu aconselhar usar REST:

    var roles = Xrm.Page.context.getUserRoles();
    
    for (var i = 0; i < roles.length; i++)
    {
      var userRole = roles[i];
      if (userRole.replace(/[{}]/g, "").toLowerCase() == "f4d7c915-003e-e111-bbe6-005056a17301" )
      {
          Xrm.Page.getAttribute("control").removeOption(1);
      }
    }
    

    O que tens que fazer agora é substituir o GUID da role que queres. Mudares o nome do optionset e colocares o índice da opção correcto.

    Espero ter ajudado.
    Se respondi a sua pergunta por favor marque como resposta e\ou como útil.


    Pedro Azevedo Crm Specialist 4.0\2011

    • Sugerido como Resposta Azevedo PedroMVP terça-feira, 3 de setembro de 2013 09:03
    • Marcado como Resposta Magno Paiva terça-feira, 3 de setembro de 2013 13:04
    terça-feira, 3 de setembro de 2013 09:02

Todas as Respostas

  • Boas Magno,

    Você pode remover o optionset que quiser usando o seguinte Javascript:

    Xrm.Page.getAttribute("control").removeOption(1);

    Para verificar se aquele utilizador tem uma determinada role pode usar REST ou directamente este Javascript:

    Xrm.Page.context.getUserRoles()

    Mas este método retorna um array de GUIDs o que não é fácil manter por isso o melhor será recorrer ao REST que dá mais trabalho mas é a melhor maneira, para isso veja este exemplo.

    Espero ter ajudado.
    Se respondi a sua pergunta por favor marque como resposta e\ou como útil.


    Pedro Azevedo Crm Specialist 4.0\2011

    • Sugerido como Resposta Azevedo PedroMVP segunda-feira, 2 de setembro de 2013 16:10
    segunda-feira, 2 de setembro de 2013 16:09
  • Mas eu quero remover a opção apenas para um determinado grupo, não para todos. Tem como fazer isso com o comando que você me passou?
    segunda-feira, 2 de setembro de 2013 18:24
  • Boas Magno,

    Sim você tem que juntar as duas coisas, eu coloco aqui um exemplo concreto usando o getUserRoles apesar de eu aconselhar usar REST:

    var roles = Xrm.Page.context.getUserRoles();
    
    for (var i = 0; i < roles.length; i++)
    {
      var userRole = roles[i];
      if (userRole.replace(/[{}]/g, "").toLowerCase() == "f4d7c915-003e-e111-bbe6-005056a17301" )
      {
          Xrm.Page.getAttribute("control").removeOption(1);
      }
    }
    

    O que tens que fazer agora é substituir o GUID da role que queres. Mudares o nome do optionset e colocares o índice da opção correcto.

    Espero ter ajudado.
    Se respondi a sua pergunta por favor marque como resposta e\ou como útil.


    Pedro Azevedo Crm Specialist 4.0\2011

    • Sugerido como Resposta Azevedo PedroMVP terça-feira, 3 de setembro de 2013 09:03
    • Marcado como Resposta Magno Paiva terça-feira, 3 de setembro de 2013 13:04
    terça-feira, 3 de setembro de 2013 09:02
  • Bom dia Azevedo

    Usei o código igual você disse, ele identificou o grupo do usuário, mas não conseguir remover a opção do campo. O que fiz de errado?

    function RetirarOpcao()
    {
    var roles = Xrm.Page.context.getUserRoles();
    for (var i = 0; i < roles.length; i++)
    {
    var userRole = roles[i];
    if (userRole.replace(/[{}]/g, "").toLowerCase() == "66a5c19f-9581-e011-a6f7-000c29251689" )
    {
    Xrm.Page.getAttribute("new_tipovenda").removeOption(1);

    }
    }
    }

    quinta-feira, 5 de setembro de 2013 14:17
  • Boas Magno,

    Desculpa no meu texto eu coloquei que era o índice mas estava a pensar noutra coisa. Não é o índice mas sim o value dessa opção, por isso o melhor é colocar o código a seguir em vez da linha dentro do if:

    var control = Xrm.Page.getAttribute("new_tipovenda");
    control.removeOption(control.getOptions()[1].value);

    Se quiseres podes colocar diretamente o código da opção.

    Espero ter ajudado.
    Se respondi a sua pergunta por favor marque como resposta e\ou como útil.


    Pedro Azevedo Crm Specialist 4.0\2011

    • Sugerido como Resposta Azevedo PedroMVP quinta-feira, 5 de setembro de 2013 21:09
    quinta-feira, 5 de setembro de 2013 21:08