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

Solicitação
Como desativar a edição de campos na Solicitação de Compras (MATA110) via ponto de entrada
Em muitos projetos com o Protheus, surge a necessidade de controlar quem pode alterar certos campos em uma tela — principalmente em rotinas sensíveis como a Solicitação de Compras (MATA110). No artigo de hoje, vamos mostrar como desativar a alteração de campos da grid da Solicitação de Compras utilizando ponto de entrada, sem precisar mexer […]
TOTVS
O que é TOTVS Insights e como ele pode transformar sua tomada de decisão
Vivemos em um momento em que os dados valem mais do que a intuição.As empresas que tomam decisões baseadas em informações confiáveis e atualizadas crescem mais rápido, erram menos e reagem melhor às mudanças do mercado. Mas ainda há um abismo enorme entre ter dados e saber o que fazer com eles. Quem usa o […]
notícia
As seis grandes notícias de tecnologia que estão moldando 2025
O cenário tecnológico global segue em ritmo acelerado, e as transformações que antes pareciam distantes agora acontecem em questão de meses. A combinação entre inteligência artificial, automação, realidade mista e computação quântica tem redefinido o que as empresas esperam de produtividade, inovação e competitividade. Nesta semana, seis movimentos importantes marcaram o setor. Desde o investimento […]
advpl
Como apagar arquivos de um servidor FTP via AdvPL
Introdução Em muitos projetos que envolvem integração entre o Protheus e sistemas externos, é comum precisar manipular arquivos em servidores FTP — seja para baixar, enviar ou até mesmo excluir arquivos remotamente. E sim, é totalmente possível fazer isso via AdvPL. No artigo de hoje, vamos mostrar como apagar arquivos de um servidor FTP diretamente […]