Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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:

...

Caso o usuário tenha alguma dúvida de como criar uma tabela personalizada, deverá recorrer à documentação /wiki/spaces/TD/pages/1991213070  

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: 

Code Block
languagepas
// 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.

...