Campos Personalizáveis - Suporte
Home arrow_circle_right Funcionalidades

Campos Personalizáveis - Suporte

7min Atualizado por Lu Martinez em 24/04/2026 Criado por Lu Martinez em 24/03/2026

Os campos personalizáveis podem ser criados exclusivamente por usuários com perfil master (suporte técnico). Atualmente, a funcionalidade está disponível apenas nos módulos de Orçamento e Cadastro de Visitas, com previsão de expansão para todos os módulos que utilizam esse recurso.


Tipos de Campos Personalizáveis
É possível criar diversos tipos de campos, conforme a necessidade do cliente, inclusive expressões para campos calculados e casos mais complexos.

Localização dos Campos no Sistema
Os campos criados ficam disponíveis na capa do formulário do módulo, organizados no grupo “Campos Personalizáveis". Nesse grupo, são exibidos apenas os campos criados pelo suporte, pois os campos padrão do Publi permanecem fixos em seus locais originais.

Ordenação dos Campos
É possível reordenar os campos criados conforme a necessidade, destacando as informações mais relevantes. A ordem definida é aplicada a todos os usuários que utilizam o módulo.

⚙️Exemplos de Configuração de Campos Personalizáveis 
Imagem exemplo núm. 1
Imagem exemplo núm. 2

 

No exemplo abaixo, é utilizada a expressão: FormataValor(CP_BUDGET - CP_IMPOSTO - CP_CUSTO)

Importante: após a criação dos campos, é obrigatória a execução do PDBU para que a coluna seja criada no módulo correspondente.
Imagem exemplo núm. 3

Informações essenciais

  • A criação e exclusão de campos personalizáveis é permitida apenas para usuários com perfil master (suporte técnico).

  • Usuários comuns podem alterar somente propriedades abertas do campo, sendo elas: Nome de Exibição, Ordem e Descrição

  • O campo Opções/Expressão é restrita ao usuário master, evitando que alterações incorretas comprometam listas de opções ou expres­sões de cálculo.

  • Após a criação de um campo personalizável, não é possível alterar o nome da coluna nem o tipo do campo, nem mesmo pelo usuário master. Caso seja necessária qualquer alteração nesses itens, o campo deverá ser excluído, a coluna removida do banco, e um novo campo criado.

  • Sempre que um campo personalizável for criado, é obrigatório executar o PDBUpdbu  para que a coluna seja criada no módulo correspondente. Caso contrário, o sistema apresentará erro informando que a coluna não existe.

  • Um campo criado em uma empresa estará disponível automaticamente nas demais. Essa abordagem evita inconsistências em módulos multitabela (ex.: orc01, orc03) e garante compatibilidade com visões de listagem, que também são compartilhadas entre empresas.

  • Todo campo personalizável criado pelo usuário master utiliza o prefixo CP_ no nome da coluna, garantindo padronização e a prevenção de conflitos com colunas criadas via código.

  • O nome da coluna possui limite máximo de 30 caracteres, incluindo o prefixo CP_. Esse limite é aplicado automaticamente no formulário de criação.

  • Apenas a Visibilidade e Obrigatoriedade são configuráveis por departamento. As demais propriedades do campo: Nome de Exibição; Ordem; Opções/Expressão e Descrição são definidas no modelo do campo personalizável e valem para todos os departamentos.

Imagem exemplo núm. 5
Imagem exemplo núm. 6
Imagem exemplo núm. 7

 

Estrutura de Banco de Dados

Para atendar à funcionalidade de campos personalizáveis, foram criadas três tabelas no banco de dados. Cada uma possui uma responsabilidade específica dentro da arquitetura da solução.

 

Tabela custom_props

  • Tabela principal onde são armazenados os modelos dos campos personalizáveis.

  • Para cada campo personalizável, seja ele fixo ou criado dinamicamente pelo usuário master, existe apenas um registro nesta tabela (apenas uma linha).
     

Tabela custom_props_configs

  • Responsável por armazenar as configurações do campo por departamento relacionado a um campo modelo.
  • Possui a coluna CUSTOM_PROP_ID, que atua como chave estrangeira, referenciando o RECNO da tabela custom_props.

  • Podem existir vários registros associados ao mesmo campo, mas de diferentes departamentos.

 

Tabela custom_props_options

  • Tabela responsável por armazenar as opções fixas relacionadas aos campos personalizáveis.

  • As opções disponíveis são fixas no sistema. Não é possível criar novas opções ou alterá-las sem intervenção via código.

  • Atualmente, existem duas opções disponíveis: 
    Sempre exibir campos preenchidos: quando habilitada, o campo será exibido no formulário sempre que possuir valor, mesmo que não esteja marcado como visível.
    Permitir exibir todos os campos: habilita o “switch” localizado ao lado do botão que abre a “dialog” dos campos personalizáveis. Quando acionado, todos os campos serão exibidos no formulário, independentemente da configuração de visibilidade.

     
  • Assim como em custom_props_configs, podem existir vários registros para a mesma opção, diferenciados por departamento.

 

Enum de Tipos de Campos

  • É o número que será salvo na coluna TIPO da tabela custom_props.

Imagem exemplo núm. 8

 

 

 

 

 

 

 

 

Imagem exemplo núm. 9

 

 

 

 

 

 

 

Enum de Tipos de Opções Gerais: 

Imagem exemplo núm. 10

 

 

 


 

Imagem exemplo núm. 11

 

 

 

 

 

 

 

 

 

 

 

Campos do Formulário de Inclusão e Edição

Imagem exemplo núm. 12

Nome de exibição: define o texto que será apresentado ao usuário no formulário, funcionando como o label do campo. Pode ser alterado após a criação.

Nome da coluna: define o nome da coluna que será criada no banco de dados, na tabela correspondente ao módulo onde o campo está sendo configurado. Não deve ser alterado após a criação, pois está diretamente ligado à estrutura do banco de dados.

Exemplo:

  • Se for criada uma custom prop com o nome CP_CAMPO na tela de Visitas:

  • Será criada a coluna CP_CAMPO na tabela de visitas (relator).

     

Ordem : define a posição em que o campo será exibido no formulário, em relação aos demais campos personalizáveis criados pelo usuário.
  • Quanto maior o valor, mais ao final do formulário o campo será exibido.

  • Campos com valores menores aparecem antes.

  • O valor padrão é 0.

  • A ordem não se aplica aos campos criados via código no Publi.

Exemplo:

Dois campos criados:

  • CP_A com ordem 0

  • CP_B com ordem 0
    Ambos aparecem na ordem padrão de criação.
     

  • Para que CP_A apareça depois de CP_B:
    Defina a ordem de CP_A como 1.

     

  • Para que CP_B apareça antes de CP_A:
    Defina a ordem de CP_B como -1.

  • Valores negativos são aceitos e úteis para posicionar campos no início do formulário.

 

Tipo: define o tipo do campo no formulário e também o tipo da coluna criada no banco de dados. Essa definição impacta diretamente como o usuário interage com o campo e como os dados são armazenados.

A seguir, os tipos disponíveis:

  • Texto: campo de texto livre em uma única linha.
    Limite de até 255 caracteres.
    Indicado para informações curtas.
    Exemplo: Nome do Produto

  • Texto Longo: campo de texto de múltiplas linhas.
    Limite de até 1000 caracteres.
    Indicado para descrições mais completas.
    Exemplo: Observações

  • Link: campo para inserção de links clicáveis.
    Limite de até 255 caracteres.
    Possui dois modos de funcionamento: modo de edição e modo de visualização:
    -→ Quando o campo está vazio, ele é exibido automaticamente em modo de edição, permitindo que o usuário já insira o link.
    -→ Quando o campo está preenchido, ele é exibido em modo de visualização, permitindo que o usuário clique no link.
    -→ No modo de visualização, ao clicar no campo, o link é aberto em uma nova aba do navegador.
    -→ Para alterar o link, o usuário pode clicar no ícone de edição.
    Exemplo: Site

  • Checkbox / Booleano: campo do tipo marcação (ligado/desligado).
    -→ Por padrão, o campo inicia desativado (valor 0) e, ao ser marcado pelo usuário, passa para o estado ativado (valor 1).
    Exemplo: Aceitou proposta

     

  • Hora: campo específico para registro de horário. Permite maior precisão no registro do tempo.
    Formato: HH:MM:SS
    Exemplo: Hora do atendimento

     

  • Data: campo específico para registro de datas.
    Formato: DD/MM/AAAA
    Exemplo: Data do atendimento

     

  • Inteiro: campo numérico para valores inteiros.
    -→ Aceita números positivos e negativos.
    Exemplo: Quantidade

     

  • Decimal: campo numérico para valores com casas decimais.
    Suporta até 6 casas decimais.
    Indicado para valores que exigem maior precisão, como valores monetários.
    Exemplo: Valor unitário

     

  • Seletor Simples: campo de seleção com opções pré-configuradas.
    -→ O usuário pode selecionar apenas uma opção.
    -→ As opções são definidas na configuração do campo.
    Exemplo:
    Sexo:
    Masculino
    Feminino
    Indeterminado

     

  • Seletor Múltiplo: campo de seleção com opções pré-configuradas.
    → O usuário pode selecionar uma ou mais opções (0 a N).
    → As opções são definidas na configuração do campo.
    Exemplo:
    Módulos comprados:
    Atendimento
    Financeiro
    Produção
    Mídia

     

  • Expressão : é um campo calculado e de somente leitura. O usuário não pode editar o valor manualmente.
    → O valor é calculado dinamicamente com base em uma expressão.
    → Utiliza a lógica de expressões (eval), semelhante às fórmulas do Excel.
    → Não é necessário usar o símbolo # no início ou no fim da fórmula.
    → Na expressão, são utilizadas variáveis, que correspondem aos valores de propriedades do sistema.

    → Para acessar propriedades da entidade do módulo atual (por exemplo, a entidade de Orçamento), utilize o formato:
    model.{PROPRIEDADE}, como model.Verba

    → Para acessar valores de campos personalizáveis criados pelo usuário, utilize diretamente o nome da coluna:
    CP_QUANTIDADE

 

  • Todas as funções e variáveis disponíveis para uso em expressões estão documentadas neste artigo da base de conhecimento: Funções e Variáveis - Usando Operadores 

     

  • Exemplos de expressões:
    FORMATAVALOR(CP_QUANTIDADE * CP_VALOR_UNITARIO)
    FORMATAVALOR(CP_BUDGET - CP_IMPOSTO - CP_CUSTO)

  • Caso o valor retornado pela expressão comece com um protocolo conhecido, como https, o campo será exibido como um link clicável no formulário.
    Exemplo: Concat("https://publi.com.br", "?cliente=", model.CodigoCliente)

     

 

  • Opções/Expressão: campo de múltiplas linhas utilizado para informar as opções dos campos do tipo Seletor (simples ou múltiplo) ou a expressão (fórmula), quando o tipo do campo for Expressão.
    → No caso dos seletores, cada opção deve ser inserida em uma linha, separadas por quebra de linha.
    Exemplo:
    Masculino
    Feminino
    Indefinido

     

  • Descrição: campo de múltiplas linhas destinado à descrição do campo personalizável. Campo apenas informativo.
    → A descrição é exibida somente na janela (dialog) de configuração dos Campos Personalizáveis.
    → Não é exibida no formulário para o usuário final.

    Exemplo:
    Campo calculado que multiplica a quantidade pelo valor unitário.

     

  • Seção de Opções: seção onde o usuário pode configurar propriedades adicionais do campo, como: Visibilidade e Obrigatoriedade

    Observação: em alguns casos, essas opções podem estar desabilitadas (somente leitura) devido a regras internas do sistema, não permitindo alterações.

     

  • Criado por: campo informativo, utilizado para identificar a origem do campo personalizável.
    → Esse campo auxilia o suporte a identificar se o campo é padrão do sistema ou customizado.
    Publi: campo criado via código (campo fixo do sistema).
    Usuário: campo criado manualmente por um usuário master ou pelo suporte.

 

Migração de configuração antiga
Sempre que os campos personalizáveis são carregados, o sistema verifica se já existem configurações no novo formato. Caso nenhuma configuração seja encontrada, o Publi executa automaticamente o processo de migração das configurações antigas, que estão armazenadas no publiCfg.

O processo de migração funciona da seguinte forma:

→ Se forem encontradas configurações antigas no publiCfg, cada configuração de campo será migrada para o novo formato, gerando uma linha de configuração para cada campo. Caso não exista uma configuração específica para determinado campo, será utilizada a configuração geral identificada pelo rótulo “– TODOS –”.
→ Se nem a configuração específica nem a configuração geral existirem, o sistema utilizará a configuração padrão, baseada no código do Publi.

 

Futuro
Estão previstas as seguintes evoluções:

  • Inclusão de novos tipos de campos, como:
    Assistente de usuário
    Rich Text
    Entre outros

  • Implementação dos campos personalizáveis em todos os módulos que atualmente fazem uso dessa funcionalidade.




 

 

 

 

 

Este artigo foi útil?

O que deu errado?

Por que você não gostou?

O que poderia ser melhor?

Caso queira, escreva sobre o que poderia melhorar no artigo. Não inclua informações pessoais.

Novidades

Artigos Populares

Últimos Acessados

Artigos salvos