Controle utilizando tabela personalizada, para caracterizar usuário, dando ou não acesso a aba personalizada

Objetivo

O objetivo deste material é implementar alguns pequenos exemplos de uso VsScripter em rotinas que, conforme o usuário, ou grupo de usuário, ou até estabelecimento selecionado, o usuário receba uma advertência ou erro informando da restrição cadastrada.

O “Script” será criado no aplicativo Folha, no cadastro de Pessoa.

Criação da tabela personalizada

O exemplo inicial mostra como bloquear a inclusão de dados na aba “Personalizada”, para a tabela Pessoas, quando o usuário não tiver permissão dada pelo supervisor nesta tabela personalizada. O nome da tabela será “U_DIREITOSUSUARIO” e a mesma terá dois campos, a saber:

Campo: NOMEUSUARIO

Descrição completa/reduzida: Nome do usuário

Dica para o usuário: Nome que o usuário usa para autenticação

Tipo do campo: Texto

Tamanho: 20

Campo: PERSONALIZADOS

Descrição completa/reduzida: Acessa abas personalizadas? / Personalizadas?

Dica para o usuário: Usuário tem acesso a abas personalizadas?

Tipo: Sim/Não

Após a criação da tabela personalizada, criar o campos acima de depois aplicá-los.

Caso o usuário tenha alguma dúvida de como criar uma tabela personalizada, deverá recorrer à documentação  

Criando o código do ‘Script

Para criar o ‘Script’, acessar o aplicativo Folha. Em seguida, com o atalho “CTRL+SHIFT+P” ou no menu Cadastros Gerais -> Pessoas -> Pessoas. 

Em seguida, acessar o menu “Eventos via Script” -> “Ao Iniciar Inclusão”. O editor de ‘scripts’, VsScripter, será executado, conforme figura abaixo: 

Entendendo o código do ‘Script

Na área de edição do ‘script’, digitar/colar o código abaixo: 

// carrega biblioteca necessária para uso da função dmConexao3c uses    db; // função "Autorizado" para verificação se o usuário tem permissão ou não para edição // dos campos da aba Personalizados function Autorizado(usuario: String):boolean; var   // declara variável que receberá o valor da coluna "PERSONALIZADOS"   sPerson: Char;   begin   // atribui valores padrões para Result e sPerson   Result := True;   sPerson:= '';   // inicia o ciclo da pesquisa   try      // atribui a variável sPerson o resultado da pesquisa abaixo.      // a função QueryPegaCampo pesquisará na tabela U_DIREITOSUSUARIO o valor do      // campo PERSONALIZADOS, que pode ser "SIM ou NÃO", para o usuário autenticado      // no sistema, identificado pela variável (oDadosSis.UserId) passada como      // parâmetro na chamada da função      sPerson := (dmConexao3c.QueryPegaCampo('SEL_PESQUISAFILTRO', 'PERSONALIZADOS',                                      ['?', '1:s', 'U_DIREITOSUSUARIO',                                           '?', '2:s', 'NOMEUSUARIO = :USUARIO',                                  'P', 'USUARIO', usuario],                                          [ftString, ftString, ftString], [17, 30, 30]));      // atribui à variável Result “False” se sPerson for igual a “N”.      // caso sPerson for igual a “S” ou vazio, quando a busca não retorna registro // encontrado, o valor padrão “True” é mantido.      if sPerson = 'N' then         Result := False;   except      // se houver algum erro na execução da pesquisa na tabela, é gerada uma      // mensagem de erro e a função retorna 'True' para a variável Result. // Assim, nennhum usuário é bloqueado para preencher os campos da // aba "Personalizadas"      showMessage('Houve um erro na execução da pesquisa de dados.');      Result := True;     end;                                   end;                        // a execução do 'Script' começa por aqui begin     // Se o retorno da função "Autorizado" for 'true', habilita a aba 'TabPersonal'     // estará disponível para o usuário poder interagir com os campos dela.     // Caso contrário, a aba estará visível, porém, seus campos estarão desativados.     // Ou seja, o usuário não poderá alterar os valores dos campos. Além disso, o     // usuário será avisado da falta de permissão para edição dos campos da aba     // "Personalizada".     if (Autorizado(oDadosSis.UserId)) then        FRhPessoa.TabPersonal.Enabled := True;     else                                begin         ShowMessage(Format('Você não tem permissão de uso da aba %s',                     [FRhPessoa.TabPersonal.Caption]));         FRhPessoa.TabPersonal.Enabled := False;     end; end;

Salvando o código digitado/colado

Este é um exemplo simples, que não requer a criação de um formulário. Após sua digitação, é necessário salvá-lo. Para tanto, executar o atalho “CTRL+S” ou clicar no ícone que representa um disquete preto.

 Em seguida, o VsScripter dever ser fechado.

Testando o “script”

Antes do teste efetivo do “script”, é necessário incluir um ou mais usuários na tabela “U_DIREITOSUSUARIO”. Preferencialmente, um com o valor “S” para o campo “PERSONALIZADOS” e outro com o valor “N”. Lembrando que o nome do usuário deve ser exatamente igual ao nome utilizado pelo usuário para autenticação no sistema.

Assim, o teste pode ser feito tanto com um usuário “sem permissão” para uso da aba Personalizada, quando com um que tenha a permissão.

Para executar os testes, executar o sistema FOLHA com um dos usuárioss de teste. Em seguida, abrir o Cadastro de Pessoas, conforme mostrado acima. Com o cadastro aberto, bastará clicar no ícone de inserção de dados que é representado por uma folha pautada, e um sinal de “+” verde, ou executar o atalho “CTRL+INS”.

Se o usuário usado para autenticação no sistema estiver registrado na tabela “U_DIREITOSUSUARIO” com o campo “PERSONALIZADOS” igual a “N”, o mesmo receberá a mensagem abaixo: 

 

A aba Personalizada estará disponível, porém, com seus campos desativados. Ou seja, o usuário poderá ver os campos, porém, não poderá alterar seus valores.

Caso o usuário tenha o campo “PERSONALIZADOS” igual a “S”, o mesmo não receberá qualquer mensagem de erro e os campos da aba Personalizada estarão disponíveis para terem seus valores alterados.