Olá, tudo bem?
Gostaria de saber como eu posso verificar se um campo foi alterado? hoje uso a SC9 de referência, porém não sei por onde começar. Por exemplo, na rotina análise de crédito , quero verificar um pedido que foi liberado manual, porém por algum motivo de alteração, ele volta para rejeitado ou bloquado, queria que poos alteração, ele dispara workflow o informando usuário.
1 curtida
Gustavo infelizmente isso só é possível após a gravação dos dados caso você tenha algum tipo de auditoria ou grave os campos que deseja auditar em outro local para comparar. Tipo criar uma tabela de auditoria e gravar quais campos foram alterados (usando um P.E. antes da gravação para poder comparar o conteúdo de memória com a tabela gravada).
se a tabela tiver os campos LGI/LGA você consegue ver quem incluiu/alterou e quando mas infelizmente não o que.
Para manter um histórico de alterações é sempre recomendado utilizar o Audit Trail do próprio Protheus, ele cria uma replica do registro pelo RECNO indicando os campos alterados, você pode escolher para qual tabela ativar e quais campos da tabela quer monitorar.
Importante frisar que ativar o Audit Trail para todos os campos das tabelas e para tabelas que expandem com muita velocidade podem aumentar muito o consumo de armazenamento do seu banco de dados.
Framework - Linha Protheus - Embedded Audit Trail – Central de Atendimento TOTVS
Olá,
A única forma que você 100% garantida é o uso de triggers, todas as demais formas, como pontos de entrada, LGI/LGA tem suas limitações.
Somente triggers vão ser executadas independente da forma que o registro é alterado, seja diretamente no banco, via APSDU, TCSqlExec, RecLock etc.
Hoje a TOTVS possui o Embedded Audit Trail que trabalha com triggers e possui API para geração de relatórios, pode ser uma possibilidade, mas você teria que criar algum JOB por conta que faz a leitura constante da API para verificar as possíveis alterações e assim dar início ao seu Workflow, disparo de e-mail ou utilizando o Event Viewer.
Porém se sua situação é muito específica, talvez uma implementação diretamente no banco de dados seja a solução, novamente, utilizando de triggers.
Documentações:
Embedded Audit Trail - Frameworksp - TDN
Event Viewer - Frameworksp - TDN