CarregaAbrUsu
A idéia desta função é fornecer um recurso para que seja possível aplicar, através dos parâmetros passados a ela, abrangências de usuário que serão utilizadas no sistema. A funcionalidade é a mesma das abrangências definidas no sistema, em Diversos > Usuários > Abrangências. Pode-se dizer que ela é uma extensão flexível da rotina de abrangências, que possibilita ao cliente usar outras definições (inclusive para campos de usuário).
Em tabelas que não são aplicadas abrangências, deve-se utilizar a função CarregaAbrUsuTabela.
Sintaxe: CarregaAbrUsu(Alfa aNomCam, Numero aCond, Alfa aSobrepoeAbr, Alfa aValorAbr);
Parâmetros:
Nome | Tipo | Descrição |
---|---|---|
aNomCam | Alfanumérica | Nome do campo ao qual a abrangência deve ser aplicada. Pode ser qualquer campo de qualquer tabela, inclusive campos de usuário. A única restrição é que os campos aqui informados deverão ser do tipo Inteiro ou alfa. Não será aplicada abrangência para campos do tipo data, imagem e com valores decimais. |
aCond | Numérica | Indica em qual condição a abrangência informada deverá ser aplicada. |
aSobrepoeAbr | Alfanumérica | Indica se a abrangência informada deverá sobrepor a abrangência que já pode estar carregada em memória. Isto é útil quando for necessário restringir somente um tipo de abrangência, descartando-se a abrangência que está atualmente cadastrada para os usuários. |
aValorAbr | Alfanumérica | O valor que deverá ser aplicado na abrangência. Os valores informados deverão estas dispostos da mesma maneira como são cadastrados na tela de "Cadastro de Abrangências". Caso seja passado um valor ou abrangência inválida, uma mensagem de erro será retornada e a regra será cancelada. Esta função retorna 1 quando a abrangência foi carregada com sucesso para a memória e zero quando não houve a carga. |
Tipo de Retorno: Esta função retorna 1 quando a abrangência foi carregada com sucesso para a memória e zero quando não houve a carga.
Exemplo: A variável e função descritas anteriormente permitem que o cliente possa aplicar nos modelos uma abrangência que é específica para uma determinada tela. No caso, estamos falando da abrangência 15 - "Locais para Consulta". Esta abrangência somente vale para a tela de gerenciamento de usuários, mas com a variável e função de programador aqui descritas, esta mesma abrangência poder ser carregada em memória para ser utilizada no gerador de relatórios.
O exemplo abaixo poderia ser utilizando no ponto de regra 146 - Antes Emitir Relatório
/* Esta regra recupera as abrangências do tipo 15 - "Locais para Consulta" e aplica estas abrangências em memória para serem utilizadas na emissão de relatórios, já que o tipo 15 de abrangência somente é valido para a tela de Gerenciamento de Horários. Desta forma, é possível carregar este tipo de abrangência para qualquer relatório, de acordo com a necessidade do cliente. */
Definir Alfa xValAbr;
/* Verifica se está sendo emitido um relatório no qual deve ser
aplicada a abrangência */
se (NomModRel = "HRCL001.GER")
inicio
@ Busca a abrangência do tipo 15 para o usuário ativo @
RetornaAbrUsu("RH", 15, CodUsu, 1, "NumLoc", xValAbr);
@ Seta para a memória abrangência retornada para que possa ser utilizada no
relatório @
CarregaAbrUsu("NumLoc", 1, "N", xValAbr);
fim;
Depois de utilizar a função de abrangência no gerador, é muito importante que a abrangência seja retornada para a condição inicial, conforme a regra abaixo, que está carregando novamente a abrangência de colaborador para a memória, descartando o que havia sido feito na regra anterior:
O exemplo abaixo poderia ser utilizando no ponto de regra 147 - Após Montar SQL Principal do Relatório
Observação
A Regra por processo 147 é executada logo após Montar SQL Principal do Relatório, portanto, se deseja que a alteração de abrangência seja considerada depois desse evento, é necessário voltar a abrangência somente no evento de Finalização do relatório.
/* Esta regra recupera as abrangências do tipo 1 - "Colaboradores" e aplica estas abrangências em memória para que sejam descartadas as abrangências aplicadas anteriormente na regra 146. */
Definir Alfa xValAbr;
/* Verifica se está sendo emitido um relatório no qual deve ser
aplicada a abrangência */
se (NomModRel = "HRCL001.GER")
inicio
@ Busca a abrangência do tipo 1 para o usuário ativo @
RetornaAbrUsu("RH", 1, CodUsu, 1, "NumLoc", xValAbr);
@ Seta para a memória abrangência retornada @
CarregaAbrUsu("NumLoc", 1, "S", xValAbr);
fim;
Utilização: Todas as regras.
Observações:
- Caso o usuário seja administrador, a função de programador não aplicará a abrangência em memória. As regras dos pontos 146 e 147 sempre serão chamadas, cabendo ao cliente restringir em quais modelos o mesmo quer aplicar as abrangências.
- Quando for necessário utilizar esta função para aplicar uma abrangência para todo o sistema, pode-se utilizar a regra por processo 154. Esta regra é executada toda vez que o sistema precisar carregar as abrangências cadastradas para a memória.
- Ao utilizar esta função para aplicar abrangências a um campo que exista em Diversos > Usuários > Abrangências, item Colaboradores (por exemplo, campo CodVin - Código do Vínculo), esta abrangência será aplicada a todas as tabelas que contêm este campo e também à tabela R034FUN, mesmo que ela não possua o referido campo. Por outro lado, caso a função seja utilizada para aplicar abrangências a um campo que não exista na tela mencionada (por exemplo, campo CodSin - Código do Sindicato), estas abrangências serão aplicadas somente às tabelas que contiverem este campo, não sendo consideradas para a tabela R034FUN.
- Quando a sobreposição estiver desativada, o valor que deverá ser aplicado na abrangência não pode estar vazio. Por exemplo, ao executar a função CarregaAbrUsu ("NumCad", 1, "N", "") será apresentado o erro "O valor que deverá ser aplicado na abrangência não pode estar vazio quando o parâmetro de sobreposição estiver desabilitado". Isso ocorre porque se não há sobreposição, não é possível adicionar "" na String de abrangências, por exemplo, se já tínhamos "1,2" e fosse adicionado "" ficaria "1,2,".
Disponível para os módulos: Todos os módulos do Gestão de Pessoas | HCM.