Boa Tarde. Eu coloquei um validador de campo na addfield() do FWFormModelStruct. Quando faço acontecer o erro ele mostra a minha mensagem e o Help padrão. Como faço para deixar apenas o meu Help. O Campo esta situado no cabeçalho.
Rafael, como você montou a mensagem?
Boa tarde Rafael.
Seu HELP deve estar assim:
Help( ,, 'HELP',, 'Empenho Inválido', 1, 0)
Substitua o seu HELP pelo comando abaixo:
oModel:SetErrorMessage("","","","","HELP",'Empenho Inválido',"Escolha outro empenho")
Link da Documentação: https://tdn.totvs.com/display/PROT/FWFormModel
Mas como eu identifico a qual campo se refere?? Tem tres campos do cabeçalho coloquei um valid em um deles quando o usuário digitar um conteúdo que faz aparecer a mensagem como vai saber que é naquele campo??
parte da função do valid ta assim:
If nOpc == MODEL_OPERATION_INSERT
DbSelectArea(‘SZ3’)
SZ3->(DbSetOrder(5)) //X5_FILIAL + X5_TABELA + X5_CHAVE
//Se conseguir posicionar, viagem já existe
If SZ3->(DbSeek(XFILIAL("SA3")+cVend + cTBComis))
Help(NIL ,NIL, 'Help',NIL, 'Para o Vendedor e Tabela de Comissão digitado ja existe tabela de Comissão cadastrada.', 1, 0 , NIL, NIL, NIL, NIL, NIL, {"Efetuae o processo de Alteração."} )
lRet := .F.
EndIf
EndIf
RestArea(aArea)
Return lRet
Consegui. Entendi agora como tem que ser feito. Obrigado.
Show Rafael. Parabens
Rafael,
Ao utilizar a função Help dentro de validações do MVC, ela automaticamente vai chamar o método SetErrorMessage do modelo quando sua validação retornar um .F..
O que acontece bastante, é que o desenvolvedor cria uma mensagem própria de erro, alerta etc e usa funções como MsgInfo, MsgAlert, MsgStop para exibir a mensagem ao usuário e retornar um .F. na validação, com isso o MVC acaba exibindo um Help vazio ou uma mensagem genérica de erro.
Por isso é muito importante a utilização da função Help no MVC e até em outras rotinas, pois ela foi preparada para diversas situações, assim como quando é utilizado um ExecAuto, o Help é enviado para o log quando a rotina gera algum problema.