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=
Como reduzir em até 80% o retrabalho comercial com um Portal B2B integrado ao Protheus
Seu time comercial fecha um pedido. Alguns minutos depois, alguém do administrativo precisa digitar as informações dentro do ERP. Em seguida, outra pessoa confere estoque, preços, condições comerciais e dados do cliente. Quando tudo parece correto, surge uma divergência que exige uma nova conferência. O pedido volta para ajustes, o cliente espera uma resposta e […]
{{brizy_dc_image_alt entityId=
Podcast Gratuito: Como usar IA para acelerar suporte e desenvolvimento
A Inteligência Artificial deixou de ser uma tendência distante e passou a fazer parte da rotina de empresas, consultorias e equipes de tecnologia. O que antes parecia algo complexo e restrito a grandes organizações, hoje está acessível para profissionais que buscam mais produtividade, agilidade e qualidade em suas entregas. Pensando nisso, preparamos um encontro especial […]
{{brizy_dc_image_alt entityId=
5 sinais de que sua empresa precisa de um BPM como o Fluig
Sua empresa está crescendo, mas os processos continuam os mesmos? Toda empresa sonha em crescer. Mais clientes, mais vendas, mais colaboradores, mais oportunidades e mais resultados. O problema é que, em muitos casos, o crescimento acontece mais rápido do que a capacidade da organização de estruturar seus processos internos. O resultado é um cenário que […]
{{brizy_dc_image_alt entityId=
Como impedir a alteração da numeração da Nota Fiscal sem perder a facilidade do Ctrl+C
Em projetos de sustentação e melhorias no Protheus, muitas vezes encontramos situações que parecem pequenas, mas que podem gerar grandes dores de cabeça no dia a dia da operação. Recentemente nos deparamos com um cenário interessante em um cliente. Durante o processo de faturamento, os usuários precisavam consultar a numeração da Nota Fiscal antes da […]