Como validar se uma grid está vazia em um Ponto de Entrada MVC no Protheus

Quando falamos em customizações no Protheus usando MVC, um desafio comum é garantir que determinadas informações sejam obrigatoriamente preenchidas antes que o usuário finalize a ação. E um dos casos clássicos é: como validar se uma grid está vazia dentro de um Ponto de Entrada (PE)?

Neste artigo, vamos mostrar como resolver essa situação de forma prática, usando a função IsEmpty() em conjunto com o ponto de entrada FORMPOS. Esse recurso é essencial para quem desenvolve em AdvPL/TLPP e precisa garantir a integridade das informações.

O problema: grids que passam em branco

Muitas vezes, o usuário esquece de preencher uma grid importante, como no exemplo do Plano de Contas Referencial (CVD) no módulo de Contabilidade (CTBA020).
Sem uma validação, o sistema permitiria que o formulário fosse salvo sem esses dados – o que pode gerar inconsistências e problemas em relatórios fiscais.

A solução: usar IsEmpty() no Ponto de Entrada

A TOTVS disponibiliza pontos de entrada em MVC que permitem inserir regras de negócio no fluxo do formulário.
No caso do FORMPOS, ele é chamado ao final da validação do formulário, o que o torna ideal para checar se os modelos internos (grids) foram preenchidos.

O código exemplo:

//Bibliotecas
#Include "Totvs.ch"

User Function CTBA020()
    Local aArea := FWGetArea()
    Local aParam := PARAMIXB
    Local xRet := .T.
    Local oObj := Nil
    Local cIdPonto := ""
    Local cIdModel := ""
    Local oModelCtb
    Local oModelCVD

    If aParam != Nil
        oObj     := aParam[1]
        cIdPonto := aParam[2]
        cIdModel := aParam[3]

        If cIdPonto == "FORMPOS"
            xRet := .T.
            
            // Modelo ativo
            oModelCtb := FWModelActive()

            // Grid da tabela CVD
            oModelCVD := oModelCtb:GetModel("CVDDETAIL")

            // Se a grid estiver vazia
            If oModelCVD:IsEmpty()
                ExibeHelp("Help_CTBA020", ;
                          "É obrigatório o preenchimento do Plano de Contas Referencial (CVD)", ;
                          "Insira pelo menos 1 linha no Plano de Contas Referencial")
                xRet := .F.
            EndIf
        EndIf
    EndIf

    FWRestArea(aArea)
Return xRet

Por que essa validação é importante?

  • Evita inconsistências: impede que dados críticos fiquem em branco.
  • Cumprimento de regras fiscais: no caso do CVD, o preenchimento é obrigatório.
  • Melhora a usabilidade: o usuário é avisado imediatamente, sem precisar descobrir o erro só em relatórios.
  • Flexibilidade: a mesma lógica pode ser adaptada para qualquer grid em qualquer módulo.

Boas práticas na implementação

  • Sempre salve o PE em um arquivo separado, como CTBA020_pe.prw, para manter a organização.
  • Utilize mensagens claras para orientar o usuário sobre o que precisa ser feito.
  • Teste em base de homologação antes de liberar em produção.
  • Documente os PEs criados para facilitar futuras manutenções.

Conclusão

Validar se uma grid está vazia em um Ponto de Entrada MVC no Protheus é uma prática simples, mas que traz grande impacto na qualidade das informações.
Usando a função IsEmpty() dentro do FORMPOS, você garante que dados críticos não passem despercebidos e evita retrabalho no futuro.

Na Geeker Company, trabalhamos exatamente para ajudar empresas a tirar o máximo proveito do Protheus, implementando soluções inteligentes e seguras.
Se sua empresa também precisa de apoio para estruturar customizações ou projetos no Protheus, fale com a gente e vamos juntos levar mais eficiência para seu ERP.

Index

Categorias

Sobre o Autor

Foto do Autor
Fábio Hayama

Apaixonado por gestão, tecnologia e inovação, Fábio Hayama possui mais de 15 anos de experiência no universo do ERP Protheus, estratégia empresarial e automação de processos.

Leia mais sobre o Fábio

Entre em contato conosco

Veja mais artigos relacionados

{{brizy_dc_image_alt entityId=
POUI vs ADVPL: qual escolher no Protheus sem travar seu projeto?
Se você trabalha com Protheus há algum tempo, provavelmente já passou por isso: surge uma demanda nova, alguém comenta sobre POUI, outro fala que resolve com ADVPL, e pronto… começa aquele debate que parece mais opinião do que decisão técnica. E é exatamente aqui que muitas empresas começam a errar. Não porque escolheram POUI ou […]
{{brizy_dc_image_alt entityId=
Primeiros Passos no POUI: participe do workshop ao vivo com a Rayanne
Se você sente que está perdendo tempo tentando entender como usar o POUI da melhor forma… relaxa, você não está sozinho. A real é que muita gente até sabe que o POUI pode ajudar — mas trava logo no começo. E é exatamente por isso que a gente criou esse workshop. No dia 07 de […]
{{brizy_dc_image_alt entityId=
Como estruturar pedidos de venda automáticos no Protheus (e parar de perder tempo com processos manuais)
Se você trabalha com o Protheus no dia a dia, provavelmente já viveu essa cena: o time comercial fecha uma venda, alguém precisa parar o que está fazendo para lançar o pedido, conferir informações, ajustar detalhe, corrigir erro… e quando percebe, já perdeu um tempo enorme em algo que deveria ser simples. Agora multiplica isso […]
{{brizy_dc_image_alt entityId=
Como corrigir a rejeição 1155 no Protheus (sem travar seu faturamento)
Se você trabalha com faturamento no Protheus, sabe como é: está tudo certo, pedido pronto, nota gerada… e quando vai transmitir, toma uma rejeição do nada. E não é qualquer rejeição.É aquela que trava tudo: “1155 – Data de previsão de entrega anterior ao permitido” E aí começa a correria. Neste artigo, vou te mostrar […]