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