Customização do A010_TOK

Boa Tarde Senhores, Se Puderem me ajudar ficarei IMENSAMENTE GRATO. Havia feito uma customização do A010TOK, Mas após a atualização o MATA010 virou MVC, assim o PE deixou de funcionar. Estou Anexando o fonte para voces. Assim que eu executo ele, ele me retorna esse erro:Cannot find method FWFORMFIELDSMODEL:FWFLDPUT on U_ITEM(A010TOK.PRW) Este erro acontece na Atualização do dado.

Funcionamento do PE: 1° - 2°

  1. USER vai alterar algum dado do produto.
    1. O Sistema verifica se o campo já foi alterado pelo contador ((B1_VALID >1) AND (B1_CUSTOM<>''))
    2. Se SIM, gera um alerta informando que precisa atualizar o campo B1_CUSTOM
    3. Senão, gera o mesmo alerta, após salvar soma o B1_VALID++
    4. Se o USER, FAZ TUDO CERTO, Atualiza o B1_CUSTOM, SOMAN O B1_VALID E GERA NA TELA. (PRODUTO ALTERADO)

:warning: Atenção: Esta publicação foi transferida automaticamente do fórum antigo, mas os anexos não foram incluídos.

Rapaz é porque FWFLDPUT é uma função normal ADVPL e não um método do objeto. Se quiser usar o método do objeto é o seguinte oModel:SetValue('SA1MASTER','A1_MSBLQL','1'). Lembrando que MVC se comporta de forma diferente, então o método faz todas as validações e dispara os gatilhos, se a validação não aceitar ele não altera o valor.

Para forçar a alteração (sempre tendo certeza do que está fazendo) deve usar o método oModel:LoadValue('SA1MASTER','A1_MSBLQL','1')

Link da documentação: https://tdn.totvs.com/display/public/framework/FWFormFieldsModel

BOM DIA CIRILO, NA LINHA QUE VC INFORMOU SERIA:
oModel:SetValue (‘SA1MASTER’,‘A1_MSBLQL’,‘1’) ELE CARREGANDO O VALOR ‘1’ DO A1_MSBLQL,
oModel:LoadValue(‘SA1MASTER’,‘A1_MSBLQL’,‘1’) ELE ATRABUINDO O VALOR ‘1’ PRO A1_MSBLQL .

É CORRETO EU FAZER ISSO POIS ESTOU TRABALHANDO COM O B1_VALID,
nQtdVld:=oModel:SetValue(‘SB1MASTER’,‘B1_VALID’)
nQtdVld++
oModel:LoadValue(‘SB1MASTER’,‘B1_VALID’,nQtdVld)

Luscas, o comando que dei é apenas um exemplo com outro campo, você ajusta para o seu campo. Para fazer a leitura do valor do campo pode usar a função FWFldGet(campo) ou o método oModel:GetValue(‘SA1MASTER’,‘A1_MSBLQL’).
Outra coisa SetValue e LoadValue fazem a mesma coisa, ambos atribuem valores, a diferença é que LoadValue “FORÇA” o valor independente das validações, enquanto setValue só vai preencher o campo se tudo estiver correto (validações, modo de edição, etc.) exatamente como se o usuário digitasse.