Tempo aproximado para leitura:00:04:00 min
Dúvida
Preciso fazer um gatilho disparado do cabeçalho para o item do acols, na rotina MATA415 mas o sistema não está atualizando, como resolver?
Ambiente
Cross Segmento - Backoffice (Linha Protheus) – ADVPL – A partir da versão 11.80
Solução
Para atender essa necessidade, que seria disparar um gatilho da tabela SCJ para a SCK, é necessário criar uma função de usuário para que possibilite atualizar corretamente todos os itens.
No caso da rotina em questão, a variável aCols não está disponível para ser utilizada em customização, desta forma será necessário atualizar diretamente o alias temporário responsável por controlar o grid de itens, que seria o TMP1.
A seguir um exemplo em que quando é alterado o campo do cabeçalho Cliente(CJ_CLIENTE), uma informação é inserida no campo descrição do item(CK_DESCRI):
#Include 'Protheus.ch'
User Function gatCJ()
Local cRet := M->CJ_CLIENTE
If CJ_CLIENTE == '000001'
TMP1->(dbGotop())
While TMP1->( !Eof() )
TMP1->CK_DESCRI := 'CLIENTE 1'
TMP1->(dbSkip())
EndDo
Else
TMP1->(dbGotop())
While TMP1->( !Eof() )
TMP1->CK_DESCRI := ''
TMP1->(dbSkip())
EndDo
EndIf
TMP1->(dbGotop())
oGetDad:oBrowse:Refresh()
Return cRet
A função pode ser inserida no gatilho da seguinte forma:
O campo contra domínio é indiferente para essa necessidade, neste caso defini o próprio campo e consequentemente utilizo a variável de memória deste campo como retorno.
Atenção
Quando o campo a ser atualizado realiza a atualização de outros campos no processo, como é o caso da TES(CK_TES) por exemplo, é preciso tratar o restante dos campo que ele irá atualizar ou podem ocorrer erros ou não conformidade do dado.
Saiba mais
RUNTRIGGER - Execução de gatilhos
0 Comentários