Erro na utilização da função FWFormModel()

Boa tarde!

Estou tendo um problema em uma tela MVC que estou criando. Quando fui definir dentro do modelDef o objeto oModel, utilizei a função FWFormModel, para poder criar uma pós validação quando o usuário clicar em confirmar.

Definir o oModel dentro do ModelDef da seguinte maneira:

Local oModel := FWFormModel():New('XHESTI_01R',{||.T.}, { |oModel| COMP011POS(oModel) },{|oModel| commit(oModel)},{|oModel| cancel()})

Quando fiz isso, a inclusão e validação está funcionando perfeitamente. Entretanto, a alteração e visualização está dando erro, e eu não tenho idéia do porque.

erro no parâmetroFWFormFieldsModel: Bloco de código (bLoad) para carga dos dados do Id 'MD_MASTERZA3' não é válido on FWFORMFIELDSMODEL:ACTIVATE(FWFORMFIELDSMODEL.PRX) 12/07/2019 17:33:43 line 186.

Boa tarde Michel,

O FWFormModel é o modelo de dados do MVC sem o dicionário de dados padrão, quando utilizado, os blocos de load responsáveis por carregar os valores na alteração, visualização etc não são gerados com um valor default.

Para que seu modelo funcione, você deve criar o seu bloco de load (bLoad):

https://tdn.totvs.com/display/PROT/FWFormModel

Caso sua rotina possua dicionário de dados, recomendo a utilização do MPFormModel, pois ele já vai criar todos os blocos de load necessários:

https://tdn.totvs.com/display/public/mp/MPFormModel

Eu havia criado um MPFormModel com apenas um campo e ele funcionava bem ao realizar a inclusão na rotina; porém, estava apresentando o erro em questão na hora de visualizar o registro. A solução foi definir o bloco “bLoad” conforme a documentação mencionada.

Static Function loadField(oFieldModel, lCopy)
Local aLoad := {}
aAdd(aLoad, {xFilial("SC2"),"1"}) //dados
aAdd(aLoad, (cTabPai)->(Recno())) //recno
Return aLoad

Olá Daniel, entrei na documentação da classe que voce me enviou, porém o unico exemplo de bload nele é esse:

Local bLoad := {|oGridModel, lCopy| loadGrid(oGridModel, lCopy)}

Não fala o que são os objetos e variáveis lógicas dentro do bloco de código. Por acaso teria algum exemplo para eu avaliar?

Sobre a utilização MPFormModel, eu tentei utilizar também, porém ocorre outro erro:

Quantidade de campos retornado pelo bloco de carga do modelo:MD_MASTERZA3, é menor que a quantidade de campos na estrutura. Verifique o bloco de carga:{|x,y|FormLoadField(x,y)} on LOAD(FWFORMFIELDSMODEL.PRX) 12/07/2019 17:33:43 line : 2744

Lembrando que esses erros só acontecem quando eu tento alterar/visualizar e excluir .

Estou enviando meu fonte caso fique mais claro.

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

O erro ocorre pois você está removendo campos da estrutura, quando o bloco de load é carregado, ele faz o load com a estrutura padrão. Caso não queira trabalhar com esses campos, não precisa remover eles do modelo, remova-os apenas da view.

Na documentação existem as funções loadGrid e LoadField com exemplos de como implementar o bloco de load.

Olá a Todos

No meu caso a FWFORMMODEL função esta retornando o erro, existe uma forma de tratar esse erro e dar uma mensagem ao usuario ao inves de dar errorlog e fechar o sistema?

THREAD ERROR ([4292], 18/10/2023 08:45:46 Tipos permitidos: STRING, DATE, NUMERIC, LOGICAL on FWFORMMODEL:SETVALUE(FWFORMMODEL.PRX) 11/08/2023 16:29:12 line : 2016