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