Ponto de Entrada para percorrer grid em MVC

Bom dia!

Na versão 11 do Protheus eu possuía um ponto de entrada na tela de Cadastro de Ausências (GP240OK) que validava alguns campos da SR8 antes da inclusão/alteração.

Lá existia uma variável private aCols dentro da rotina principal, onde eu consultava ela pelo ponto de entrada e percorria procurando o campo desejado.

Após mudança para a versão 12, o meu ponto de entrada deixou de funcionar conforme desejado visto que a rotina foi convertida para MVC. A variável aCols não existe mais.

Testei pelo ponto de entrada GP240MAN, mas este executa após a inclusão dos dados.

Alguém tem alguma dica de como posso percorrer os dados do grid MVC usando um ponto de entrada? Lembrando que ambas as rotinas são padrões do sistema.

Giordano, boa tarde.

Este ponto de entrada continua ativo. porém o tratamento agora deve ser outro.

Para percorre o grid é preciso iniciar o objeto do modelo de dados

Segue um exemplo bem simples

oModel := FwModelActivate()

oObjSR8 := oObjDet:GetModel("GPEA240_SR8")

nLinAtual := oObjSR8:GetLine()

oObjSR8:GoLine(nLinAtual)

If oObjSR8:GetValue("R8_TIPOAFA") == "001"

Return(.F.)

EndIF

Espero que ajude.

Att,

Boa noite, Felipe! Obrigado pela resposta. Efetuei um teste em minha base e estou tendo problemas com os métodos GetLine e/ou Lenght. Ambos estão retornando nulo.

Segue parte do meu código:

oModel := FwModelActivate()
oGrid := oModel:GetModel(“GPEA240_SR8”)

//nessa parte ele retorna nulo
nLinAtual := oGrid:GetLine()

Giordano, o que você pode fazer também é validar no ponto de entrada do MVC, utilizando o FORMPOS ou o FORMLINEPOS

http://tdn.totvs.com/pages/viewpage.action?pageId=208345968

Veja se ajuda com este trecho:

If Alltrim(cIdPonto) == "MODELPRE" lIsGrid := ( Len( aParam ) > 3 ) // Se for visualização ou alteração, muda o ícone da legenda de acordo com o status if !lIsGrid return xRet Endif

oDet:=oObj:GetModel('ZZ2DETAIL') nLin := oDet:GetLine() For nX := 1 To oDet:Length() oDet:GoLine(nX) cStatus := oDet:GetValue('ZZ2_STATUS') IF cStatus=='1' oDet:SetValue("ZZ2_LEGEN","BR_VERMELHO",.T.) ElseIf cStatus=='2' oDet:SetValue("ZZ2_LEGEN","BR_VERDE",.T.) ElseIf cStatus=='3' oDet:SetValue("ZZ2_LEGEN","BR_LARANJA",.T.) EndIF oDet:SetLine(nX) Next nX oDet:GoLine(nLin) Endif