6971 - Ao inserir Regra por Processo o sistema executa a regra duas vezes
Problema: Cadastramos uma regra de envio de email´s na Tela de Histórico de Afastamentos (Regra por Processo 19), e no momento da inserção a regra é chamada duas vezes, enviando os email´s duplicados. Há alguma forma de impedir que a regra por processo seja executada duas vezes?
Quando ocorre / onde se aplica: Ao utilizar regra por processo, através do menu: Tabelas > Gerais > Regra por processo.
Solução: Verificamos que haviam duas regras por processos configuradas: uma com o tipo 19 (Inserir Histórico de Afastamento) e uma com o tipo 20 (Alterar Histórico de Afastamento).
Sendo assim, a regra é executada tanto na inserção quanto depois da inserção.
E na regra de alteração também é desta mesma forma, executa tanto antes quanto depois.
Para este caso, terá que utilizar a função 'VExecucaoRegra', conforme consta no help do sistema, segue abaixo:
Identifica se a Regra por Processo está sendo executada antes ou após a inclusão/alteração/exclusão. Se estiver sendo executada antes, retornará 0, se for depois, retornará 1.
Pode ser utilizada:
- Regras por Processo
Exemplo:
Fazer uma verificação na regra antes do registro ser inserido.
Se (vExecucaoRegra = 0)
Inicio
....
Fim;
Nas regras de exclusão, após excluir o registro o mesmo não estará mais disponível para consulta na regra.
O sistema posicionará o cursor automaticamente no próximo registro. Este é um comportamento padrão do sistema.
Uma alternativa para consistir os valores do registro que foi excluído seria guardar estes valores em variáveis antes da exclusão, para usá-los na regra após a exclusão.
Quando ocorre / onde se aplica: Ao utilizar regra por processo, através do menu: Tabelas > Gerais > Regra por processo.
Solução: Verificamos que haviam duas regras por processos configuradas: uma com o tipo 19 (Inserir Histórico de Afastamento) e uma com o tipo 20 (Alterar Histórico de Afastamento).
Sendo assim, a regra é executada tanto na inserção quanto depois da inserção.
E na regra de alteração também é desta mesma forma, executa tanto antes quanto depois.
Para este caso, terá que utilizar a função 'VExecucaoRegra', conforme consta no help do sistema, segue abaixo:
Identifica se a Regra por Processo está sendo executada antes ou após a inclusão/alteração/exclusão. Se estiver sendo executada antes, retornará 0, se for depois, retornará 1.
Pode ser utilizada:
- Regras por Processo
Exemplo:
Fazer uma verificação na regra antes do registro ser inserido.
Se (vExecucaoRegra = 0)
Inicio
....
Fim;
Nas regras de exclusão, após excluir o registro o mesmo não estará mais disponível para consulta na regra.
O sistema posicionará o cursor automaticamente no próximo registro. Este é um comportamento padrão do sistema.
Uma alternativa para consistir os valores do registro que foi excluído seria guardar estes valores em variáveis antes da exclusão, para usá-los na regra após a exclusão.