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=
Diferença entre ERP e CRM: por que confundir os dois trava o crescimento da empresa
Se tem uma confusão clássica no mundo da gestão empresarial é essa: ERP e CRM. Muita empresa pesquisa, conversa com fornecedores, investe dinheiro e só percebe o erro meses depois, quando a operação continua desorganizada, os dados não batem e o time segue trabalhando no improviso. O problema não é falta de tecnologia. É falta […]
{{brizy_dc_image_alt entityId=
Quais módulos são essenciais em um software ERP para pequenas e médias empresas?
Se você já ouviu alguém dizer que “ERP é caro, complicado e não funciona”, há uma grande chance de essa pessoa ter escolhido os módulos errados — ou todos de uma vez. Para pequenas e médias empresas, o problema quase nunca é o ERP em si, mas sim a falta de critério na escolha do […]
{{brizy_dc_image_alt entityId=
Por que projetos em equipes híbridas sempre estouram prazo (e ninguém assume a culpa)
Projetos em equipes híbridas raramente atrasam de forma abrupta. Na maioria das vezes, eles seguem avançando aparentemente bem, com reuniões acontecendo, mensagens trocadas e atividades sendo executadas, até que em algum momento tudo desacelera, o prazo começa a pressionar e ninguém consegue explicar exatamente onde o problema começou. Esse cenário é mais comum do que […]
{{brizy_dc_image_alt entityId=
Configurador de Tributos x TES: entenda as diferenças na prática
Se você trabalha com Protheus há alguns anos, provavelmente já ouviu — ou falou — a frase “é só ajustar o TES”. Durante muito tempo, isso foi verdade. O TES deu conta do recado, segurou o crescimento de muita empresa e virou o pilar da tributação dentro do ERP. O problema é que o cenário […]