Atualização próprio campo mais de uma vez (loadValue)
Produto: | ADVPL |
Versões: | P12.1.17 |
Ocorrência: | Atualizar o conteúdo do próprio campo (quando digitado qualquer valor) para um valor de acordo com a regra a ser imposta. |
Ambiente: | Todos |
Passo a passo: | Atualização do conteúdo de um campo pertencente a um formulário MVC, essa atualização é realizada através de validação de usuário ou gatilho executando um loadValue. O problema estava ao digitar o valor no campo que possui a chamada do loadValue mais de uma vez, onde o valor somente era atualizado de acordo com a regra somente na primeira vez, ao digitar novamente o conteudo do campo não era atualizado. A ideia que levou a reprodução do comportamento seria atualizar o conteúdo do próprio campo (quando digitado qualquer valor) para um valor de acordo com a regra a ser imposta, antes um gatilho comum (acionado pelo campo e retornado para o próprio) era utilizado pelo cliente, porém após atualização para MVC de algumas rotinas bastante utilizadas, houve uma modificação nessa tratativa. O comportamento se resume aos seguinte passos : Exemplo utilizando o campo B1_COD (MATA010) 1 - Na tela de inclusão de um produto, digitar um código qualquer. 2 - Na validação de usuário do campo B1_COD existe a chamada da função u_tstB1Cod(), que está escrita da seguinte maneira : #include "protheus.ch" function u_tstB1Cod() local oView := fwViewActive() oView:setFieldAction( 'B1_COD', { |oView| u_loadCodB1(oView) } ) return .t.
local oSb1Master := oView:getModel():getModel("SB1MASTER") oSb1Master:loadValue("B1_COD", "XPTO123456") //Valor utilizado no teste oView:refresh() return .t. No caso mesmo digitando um valor qualquer no campo 'n' vezes ele será atualizado para "XPTO123456" (conforme exemplo). |
Observações: |