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=
Corrigindo o erro de não encontrar SmartClient na unidade X no Protheus
Se você já abriu o Protheus e deu de cara com a mensagem abaixo, sabe como ela é estranha: “x:\smartclient.exeO sistema não pode encontrar a unidade especificada.” E aí começa a dúvida:É problema no servidor? É mapeamento de rede? É instalação do SmartClient? Ou pior… algo mais crítico? Calma.Na maioria dos casos, esse erro tem […]
{{brizy_dc_image_alt entityId=
O que significa ser um Trusted Advisor em ERP (e por que sua empresa precisa de um agora)
Seu ERP está rodando. As notas estão sendo faturadas, os boletos estão sendo gerados, os impostos estão sendo calculados e os relatórios até aparecem quando alguém pede. Mas deixa eu te fazer uma pergunta direta: o seu ERP está ajudando sua empresa a crescer ou ele só está mantendo a máquina funcionando? Essa é a […]
{{brizy_dc_image_alt entityId=
Trusted Advisor em ERP: Como Transformar TI em Estratégia de Negócio
Você já parou para pensar se sua empresa usa o ERP para registrar o passado… ou para construir o futuro? Muitas organizações investem pesado em sistemas robustos como o Protheus, estruturam módulos financeiros, fiscais, estoque, contratos, produção, mas continuam tomando decisões estratégicas no feeling. Projetos atrasam. Demandas se acumulam. A TI vive apagando incêndios. O […]
{{brizy_dc_image_alt entityId=
TOTVS, Nvidia e Big Techs: o que os últimos movimentos revelam sobre o novo jogo da tecnologia
O mercado de tecnologia vive um momento de reorganização estratégica. Não estamos falando apenas de lançamentos pontuais, mas de decisões estruturais que mostram para onde o setor está caminhando: mais investimento proprietário, mais pressão por retorno financeiro e uma corrida intensa por infraestrutura de alta performance. Nesta semana, seis movimentos chamaram atenção e ajudam a […]