Como esconder uma Related List

E eu nem sabia que dava pra fazer isso...

      Sabe aquela Lista Relacionada que exibe as pessoas que podem aprovar ou rejeitar um documento?
      Outro dia surgiu um cenário em que o dev precisava evitar que o funcionário que criou um registro aprovasse aquele documento.
      A situação era incomum pois geralmente quem cria o documento é o nível operacional e quem aprova é o nível gerencial.
      Deixando essa questão das personas de lado e focando no problema, como seria possível resolvê-lo?


O que os olhos não vêem...

      O primeiro workaround que veio a mente foi simplesmente inibir a lista de Aprovação caso o usuário que cadastrou esteja visualizando o próprio registro.
      Workaround não é a solução definitiva. Apenas paliativa enquanto a gente arruma tempo para pensar na solução ideal.


Detalhando o plano de ação

      1) Todo registro tem um campo chamado sys_created_by que armazena o nome do usuário responsável pela criação do registro;
      2) No front-end (lado do cliente) temos acesso a uma API chamada Glide User que possui algumas informações do usuário logado. Dentre elas está o nome na propriedade userName.
      E se a gente criar um Client Script do tipo onLoad* que compara estes dois campos e, caso sejam iguais, simplesmente esconde a lista relacionada dos Aprovadores?
      Muito bem... para saber o nome da related list criada para a sua tabela você pode acessar a plataforma e ir em System UI > Related lists.

      Com esse nome em mãos, o seu Client Script ficaria algo como:

function onLoad() {
   
   var criadoPor = g_form.getValue('sys_created_by');
   var userLogado = g_user.userName;

   if (criadoPor == userLogado) {
      g_form.hideRelatedList('nome da sua related list aqui');
   }

}              
                    
      Para obter o valor do campo sys_created_by ele deve estar no formulário. Você pode deixá-lo somente leitura ou até escondê-lo, mas ele deve existir no form.


      

__________
*Um Client Script do tipo onLoad é executado sempre que o formulário é aberto.

Voltar