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 /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:
// 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.