none
Colunas somente leitura para determinado perfil de usuário. RRS feed

  • Pergunta

  • Imaginem o seguinte cenário:

    • Tenho 2 níveis de usuários para determinada lista: Usuário e Gerente;
    • Esta lista serve para calcular comissões de determinado produto vendido;
    • Considere as seguintes colunas: ValorVenda (Moeda), Impostos (Numero %), PorCentoGerente (Numero %), PorCentoVendedor (Numero %), ComissaoGerente (Calculo) e ComissaoVendedor (Calculo).

    Quando um "Usuário" for adicionar dados nesta lista ele deve fornecer APENAS o valor de Venda e os Impostos aplicados. As colunas restantes precisam ser somente leitura (com valores pré-determinados cadastrados).

    Já quando um "Gerente" for adicionar OU alterar algum item desta lista ele precisa ter acesso a edição de TODAS as colunas.

    Me disseram que através do InfoPath eu consigo fazer isto, mas não estou encontrando como. Consegui deixar as colunas como "Somente Leitura" (editando o formulario pelo InfoPath) e resolve meu problema inicial já que as porcentagens dificilmente serão mudadas. Porém, em casos especificos, os gerentes irão fazer alterações nestas colunas e desta forma que configurei não vai funcionar pois não consigo setar os níveis de permissão pro somente leitura.
    Preciso uma dica pra onde seguir e que ferramenta usar para concluir esta tarefa.

     

    Obrigado desde já.


    Darlan ten Caten - Analista de Sistemas
    terça-feira, 8 de novembro de 2011 13:36

Respostas

  • Você pode fazer isso utilizando SharePoint Designer com XSLT para essa tarefa.

     

    • Crie um novo nível de permissão customizado.

    • Adicione um novo grupo do SharePoint e forneça a permissão criada.

    • Adicione os usuários desejados ao novo grupo

    • Abre sua lista no SharePoint Designer e crie um novo formulário para novos itens.

    • Selecione o FormField que deseja transformar em somente leitura e utilize o elemento xsl:choose que nos permite testar situações.

    O elemento xsl:choose possui dois elementos filhos chamados xsl:when e xsl:otherwise. 

    • No elemento xsl:when insira a função IfHasRights(PERMISSÃO). Esta é uma função xslt que está dentro da namespace ddwrt, utilizadas nas Web Parts de formulários. Ela recebe como parâmetro um número, que correspondente a permissão que deseja-se testar. Abaixo tem um link para as permissões existentes. Caso queira, pode visualizar todas as permissões no arquivo CAML2XSL que fica dentro do diretório raiz de instalação do seu SharePoint Designer.

    • Dentro da condição insira seu FormField com o campo DisplayMode="New"

    • Dentro do elemento xsl:otherwise insira o mesmo FormFiled com o campo DisplayMode="Display"

    TCHARAM!!!

    NO InfoPath, NO JavaScript.

    Pronto, é só testar.

    Se quiser eu posto um video mostrando passo a passo.

     

    Referências: 

    XSL:CHOOSE : 

    http://www.w3schools.com/xsl/el_choose.asp

    http://msdn.microsoft.com/pt-br/library/ms256169(v=vs.80).aspx

    Permissões: 

    http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spbasepermissions.aspx


    ROBERTOSLJUNIOR
    • Marcado como Resposta Richard Juhasz quinta-feira, 10 de novembro de 2011 18:00
    terça-feira, 8 de novembro de 2011 20:04
    • Marcado como Resposta Darlan ten Caten sexta-feira, 18 de novembro de 2011 18:43
    sexta-feira, 18 de novembro de 2011 03:48
  • Você já tem o InfoPath instalado? Já configurou o SharePoint para aceitar formulários InfoPath? (necessário SharePoint Server). Se sim, é só abrir a lista que quer alterar. Na aba Lista, na Ribon, vai ter uma opção "Personalizar Formulário" no canto direito. Clicando ali abre automatico o InfoPath com o formulário da lista pronto para ser editado. Apartir daí dê asas a sua imaginação. Pode editar como quiser e testar, tem uma opção Visualizar disponível. Para deixar somente leitura um campo é simples. Selecione ele e na aba "Propriedades" (Ribbon) tem a opção Somente Leitura. Feito!
    Darlan ten Caten - Analista de Sistemas
    • Marcado como Resposta Darlan ten Caten segunda-feira, 21 de novembro de 2011 20:55
    segunda-feira, 21 de novembro de 2011 20:52
  • Tenho mesma intenção que você de desenvolver um HelpDesk no SharePoint. Mas tenho que finalizar um outro projeto antes.

     

    Bom pesquisando sobre o assunto achei este tópico: Criar um formulário para responder a um status de workflow

     

    Não tive tempo de estudar isto ainda mas me pareceu ser bem o que eu preciso. Basicamente você vai precisar criar várias exibições para esta sua lista. E então você implementa um Workflow que vai mudando de Status conforme as ações são executadas (como por exemplo: Novo, Em atendimento, Aguardando informação, Finalizado) e com regras de Formatação do InfoPath você muda a exibição destes formulários.

     

    Vamos mantendo contato para chegarmos ao nosso objetivo em comum.


    Darlan ten Caten - Analista de Sistemas
    • Marcado como Resposta Darlan ten Caten terça-feira, 22 de novembro de 2011 15:01
    terça-feira, 22 de novembro de 2011 15:00

Todas as Respostas

  • Estou nesta trilha tambem... com o infoPath vc consiga estes resultados. trabalhando as permissões dos grupos de Gerente. Não? caso consiga a resposta, por favor compartilhe!
    terça-feira, 8 de novembro de 2011 17:24
  • Você pode fazer isso utilizando SharePoint Designer com XSLT para essa tarefa.

     

    • Crie um novo nível de permissão customizado.

    • Adicione um novo grupo do SharePoint e forneça a permissão criada.

    • Adicione os usuários desejados ao novo grupo

    • Abre sua lista no SharePoint Designer e crie um novo formulário para novos itens.

    • Selecione o FormField que deseja transformar em somente leitura e utilize o elemento xsl:choose que nos permite testar situações.

    O elemento xsl:choose possui dois elementos filhos chamados xsl:when e xsl:otherwise. 

    • No elemento xsl:when insira a função IfHasRights(PERMISSÃO). Esta é uma função xslt que está dentro da namespace ddwrt, utilizadas nas Web Parts de formulários. Ela recebe como parâmetro um número, que correspondente a permissão que deseja-se testar. Abaixo tem um link para as permissões existentes. Caso queira, pode visualizar todas as permissões no arquivo CAML2XSL que fica dentro do diretório raiz de instalação do seu SharePoint Designer.

    • Dentro da condição insira seu FormField com o campo DisplayMode="New"

    • Dentro do elemento xsl:otherwise insira o mesmo FormFiled com o campo DisplayMode="Display"

    TCHARAM!!!

    NO InfoPath, NO JavaScript.

    Pronto, é só testar.

    Se quiser eu posto um video mostrando passo a passo.

     

    Referências: 

    XSL:CHOOSE : 

    http://www.w3schools.com/xsl/el_choose.asp

    http://msdn.microsoft.com/pt-br/library/ms256169(v=vs.80).aspx

    Permissões: 

    http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spbasepermissions.aspx


    ROBERTOSLJUNIOR
    • Marcado como Resposta Richard Juhasz quinta-feira, 10 de novembro de 2011 18:00
    terça-feira, 8 de novembro de 2011 20:04
  • Roberto,

    Parabéns pelo post, já pensou em postar no blog um artigo sobre o assunto? Tenho certeza que será muito útil.


    Atenciosamente,

    Fabian André Gehrke
    MCITP e MCPD SharePoint 2010
    http://fabiangehrke.com.br
    terça-feira, 8 de novembro de 2011 20:07
    Moderador
  • Gostei muito, também incentivo a criação de um artigo sobre o tópico... Se fizer, posta aqui para agente acessar!

     

    Parabéns


    terça-feira, 8 de novembro de 2011 20:09
  • He.. amigo, Seria muito interessante mesmo ver este artigo seu e o video sobre isso sim.. caso possivel. estou vindo de Infra e não manjo muito pra enfiar a mão no codigo! seria interessante ver um video passo a passo.
    quarta-feira, 9 de novembro de 2011 11:37
  • Agradeço muito pela ajuda fornecida Roberto.

    Também sou a favor de criar uma publicação (de preferência com vídeo) sobre este tema pois acredito que é um problema recorrente para muitos desenvolvedores SharePoint.


    Não tive tempo ainda de testar sua sugestão, mas acredito que vai resolver meu problema.


    Darlan ten Caten - Analista de Sistemas
    sexta-feira, 11 de novembro de 2011 13:03
  • Confesso que não consegui aplicar a ideia do Roberto. Não entendi a "lógica" do código xsl dentro do SP designer.

    Se fosse possível um tutorial mais detalhado, de preferência em vídeo, eu agradeceria muito!

     


    Darlan ten Caten - Analista de Sistemas
    sexta-feira, 11 de novembro de 2011 17:37
    • Marcado como Resposta Darlan ten Caten sexta-feira, 18 de novembro de 2011 18:43
    sexta-feira, 18 de novembro de 2011 03:48
  • Perfeito desabi.

     

    Basicamente é a mesma coisa que o Roberto explicou, porém utilizando ferramentas visuais ao invés do código diretamente.

    Agora consegui entender como funciona o código xsl e consegui aplicar ele no meu projeto.

     

    Muito obrigado!


    Darlan ten Caten - Analista de Sistemas
    sexta-feira, 18 de novembro de 2011 18:43
  • pessoal outra duvida, consegui ocultar as colunas,

     

    mais agora tenho outra necessidade, que é como faço para tornar uma coluna so de leitura.

     

    para ocultar o link que ofereci acima é perfeito, mais não serve para ocultar.

     

    como fazer para ocultar?

    segunda-feira, 21 de novembro de 2011 13:39
  • Sua pergunta ficou meio esquisita desabi.

    Você quer deixar a coluna "Somente Leitura" e não oculta? Se sim, achei como fazer isto através do InfoPath.

     

    Estou neste momento pesquisando como aplicar o nível de permissão para editar a coluna pelo form do InfoPath e não pela solução do SP Designer.

    Isto porque quero deixar o form de cadastro mais bonito visualmente, e da para fazer milagres com o InfoPath.


    Darlan ten Caten - Analista de Sistemas
    segunda-feira, 21 de novembro de 2011 14:04
  • sim Darlan, quero que seja somente leitura (do tipo only read).

     

    como devo fazer atraves InfoPath, ou SP Designer, para min tanto faz.

    segunda-feira, 21 de novembro de 2011 16:04
  • Bom posso te dizer que é possível deixar colunas Somente Leitura criando um formulário InfoPath. Inclusive já fiz isto para mim.

     

    Porém não consegui setar por nível de permissão. O Somente leitura fica para todo mundo (inclusive admin).

    E não da pra fazer o esquema pelo SP Designer pois o form do InfoPath não utiliza o que foi criado lá.

     

    Continuo buscando essa solução.


    Darlan ten Caten - Analista de Sistemas
    segunda-feira, 21 de novembro de 2011 16:37
  • Darlan é isso que eu quero.

    mais como fazer? 

    segunda-feira, 21 de novembro de 2011 20:36
  • Você já tem o InfoPath instalado? Já configurou o SharePoint para aceitar formulários InfoPath? (necessário SharePoint Server). Se sim, é só abrir a lista que quer alterar. Na aba Lista, na Ribon, vai ter uma opção "Personalizar Formulário" no canto direito. Clicando ali abre automatico o InfoPath com o formulário da lista pronto para ser editado. Apartir daí dê asas a sua imaginação. Pode editar como quiser e testar, tem uma opção Visualizar disponível. Para deixar somente leitura um campo é simples. Selecione ele e na aba "Propriedades" (Ribbon) tem a opção Somente Leitura. Feito!
    Darlan ten Caten - Analista de Sistemas
    • Marcado como Resposta Darlan ten Caten segunda-feira, 21 de novembro de 2011 20:55
    segunda-feira, 21 de novembro de 2011 20:52
  • é isso ai Darlan,

    mas só que quero que seja só de leitura para Administrador.

    explicando: um usuario entra na lista e preenche o seu pedido de helpdesk, mais quero que quando o administrador for ver o seu pedido, os campos preenchidos pelos usuarios o administrador não pode alterar.

     

    uso sharepoint server 2010, sharepoint designer 2010.

    terça-feira, 22 de novembro de 2011 12:59
  • Tenho mesma intenção que você de desenvolver um HelpDesk no SharePoint. Mas tenho que finalizar um outro projeto antes.

     

    Bom pesquisando sobre o assunto achei este tópico: Criar um formulário para responder a um status de workflow

     

    Não tive tempo de estudar isto ainda mas me pareceu ser bem o que eu preciso. Basicamente você vai precisar criar várias exibições para esta sua lista. E então você implementa um Workflow que vai mudando de Status conforme as ações são executadas (como por exemplo: Novo, Em atendimento, Aguardando informação, Finalizado) e com regras de Formatação do InfoPath você muda a exibição destes formulários.

     

    Vamos mantendo contato para chegarmos ao nosso objetivo em comum.


    Darlan ten Caten - Analista de Sistemas
    • Marcado como Resposta Darlan ten Caten terça-feira, 22 de novembro de 2011 15:01
    terça-feira, 22 de novembro de 2011 15:00