Árvore de páginas

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.


function u_loadCodB1(oView)

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:

FWViewActive

FWFormGridModel

http://tdn.totvs.com/display/public/mp/AdvPl+utilizando+MVC?preview=%2F6814840%2F189434206%2FManual_ADVPL_utilizando_MVC_maio_2015.pdf