O preenchimento de opções em campos Combobox no Protheus falha quando informado apenas a lista de descrições (ex: TESTE1;TESTE2;TESTE3) porque o sistema exige o formato "Chave=Valor" no atributo X3_CBOX do Dicionário de Dados. A chave é o valor armazenado no banco (ex: T1), e o valor é a descrição exibida (ex: TESTE1). Sem essa estrutura, a interface não associa o dado visual ao real, causando falha na exibição.
Tempo aproximado para leitura: 00:02:00 min
Dúvida
Por que o preenchimento de opções em campos do tipo Combobox (CBOX) no Dicionário de Dados falha ao informar apenas a lista de descrições (como TESTE1;TESTE2;TESTE3), resultando em campo vazio na interface ou quebra de renderização no Browser, não apresentado o conteudo contido nele?
Ambiente
Cross Segmento - TOTVS Backoffice (Linha Protheus) - Estoque/Custos - Todas as versões.
Solução
O comportamento ocorre porque a arquitetura do Protheus em ADVPL para campos do tipo Combobox exige o formato de "Chave=Valor" no atributo de opções (X3_CBOX) do Dicionário de Dados.
Quando são informadas apenas as descrições sem o sinal de igualdade, o framework de interface (FWmBrowse) não consegue montar a matriz interna de opções, pois não identifica o que deve ser gravado no banco de dados em relação ao que foi selecionado pelo usuário.
A estrutura correta deve separar explicitamente o dado de armazenamento e o dado de exibição, conforme a regra abaixo:
Chave (antes do sinal de igual): É a chave relacional e o dado real que será armazenado fisicamente na coluna da tabela no banco de dados (exemplo: T1, T2, T3). Esse valor geralmente corresponde e otimiza o tamanho exato do campo (X3_TAMANHO).
Valor (depois do sinal de igual): É a descrição visual ou rótulo que será renderizado no SmartClient para leitura do usuário final (exemplo: TESTE1;TESTE2;TESTE3).
A ausência deste mapeamento impede o componente de tela de associar a descrição visual ao valor real do banco de dados, quebrando a integridade de exibição.
OBS: Não esqueça de marcar como "Usado/Browser" para que ele seja apresentado.
Maneira incorreta:
TESTE1;TESTE2;TESTE3
Maneira correta:
T1=TESTE1;T2=TESTE2;T3=TESTE3
Saiba mais:
Clique aqui para mais informações sobre a MATA010
Clique aqui e veja mais artigos sobre Cadastros e Configurações no Estoque
0 Comentários