Pragiva — Tecnologia na prática

Dicionário de dados do Protheus: o mapa das tabelas SX

Dicionário de dados do Protheus: o que cada tabela SX guarda — SX2, SX3, SIX, SX7, SXA, SXB, SX1, SX5, SX6, SXG — e qual coluna liga uma à outra.

Protheus Referência técnica 4 min de leitura

Assista o vídeo Ver o fluxograma

Resposta rápida

O que é
um conjunto de tabelas SX que descreve as outras tabelas do sistema.
Onde se mantém
no Configurador, na rotina CFGX034, documentada pela TOTVS como Dicionário de Dados.
As duas centrais
SX2 diz quais tabelas existem; SX3 diz quais campos cada uma tem.
Onde conferir
com o dicionário no banco, um SELECT na SX3010 responde mais rápido que qualquer tela.

Quase toda configuração de tela, validação e regra de cadastro mora em uma destas dez tabelas.

Consulta rápida4 seções

O Protheus não guarda “a tabela de clientes” e pronto. Antes de existir a , existe uma linha na SX2 dizendo que ela existe, centenas de linhas na SX3 dizendo quais campos ela tem (no dicionário padrão, a SA1 passa de 250), linhas na SIX com os índices, na SX7 com os gatilhos, e assim por diante. Esse conjunto é o dicionário de dados. A tela de cadastro, a validação de um campo e o F3 que abre uma lista são montados a partir dele.

Este artigo é o mapa. Cada linha abaixo tem um artigo da série que aprofunda o assunto.

As dez tabelas e o que cada uma guarda

TabelaGuardaIdentifica o registroAprofunda em
SX2Tabelas: alias, nome em três idiomas, modo de acesso, chave únicaX2_CHAVE (o alias, ex.: SA1)Tabela customizada
SX3Campos: tipo, tamanho, título, validação, inicializador, contexto, pastaX3_CAMPO (dentro de X3_ARQUIVO, na ordem de X3_ORDEM)Tipos de campo
SIXÍndices: expressão da chave, descrição, nickname, se aparece na pesquisaINDICE + ORDEMÍndices
SX7Gatilhos: campo de origem, regra, campo de destinoX7_CAMPO + X7_SEQUENCGatilhos
SXAPastas e agrupamentos da tela de cadastroXA_ALIAS + XA_AGRUP + XA_ORDEM (pasta tem XA_AGRUP em branco)Pastas e agrupamentos
SXBConsultas padrão (a lupa do F3)XB_ALIAS + XB_TIPO + XB_SEQ + XB_COLUNAConsulta padrão
SX1Perguntas de relatórios e rotinasX1_GRUPO + X1_ORDEMPerguntas
Tabelas genéricas: listas fixas de código e descrição + (com )Tabelas genéricas
SX6Parâmetros MV_*X6_VAR (com X6_FIL)Parâmetros
SXGGrupos de campos: tamanho mínimo, máximo e atual de um dado repetido em muitas tabelasXG_GRUPOGrupo de campos

Duas observações que evitam confusão:

  • Na SIX, a maioria das colunas não tem prefixo: INDICE, ORDEM, CHAVE, DESCRICAO, DESCSPA, DESCENG, PROPRI, F3, NICKNAME, SHOWPESQ — só IX_VIRTUAL e IX_VIRCUST têm. Nas outras tabelas, a coluna começa pelo nome da tabela sem o S (X2_, X3_, X7_, XA_…).
  • A SX5 e a SX6 têm coluna de filial (X5_FILIAL, X6_FIL): o que elas guardam é conteúdo que pode variar por filial, não só estrutura. Para a SX5, veja também a página dela no catálogo de tabelas.

Como elas se ligam

A SX3 é o centro. Cada seta abaixo é uma coluna que aponta de uma tabela para outra:

Como as tabelas do dicionário se ligam
X2_CHAVE = X3_ARQUIVOX2_CHAVE = INDICEX3_TRIGGER = SX3_FOLDERX3_F3X3_F3X3_GRPSXGX1_F3X1_GRPSXGSX2tabelasSX3camposSIXíndicesSX7gatilhosSXApastasSX5tabelas genéricasSXBconsultas padrãoSXGgrupos de camposSX1perguntas

Exemplos reais de cada ligação:

  • X3_ARQUIVO: pertence à .
  • X3_F3: abre a consulta SA1; usa 12, a tabela de estados da SX5.
  • X3_FOLDER: fica na pasta 5 do SB1.
  • X3_GRPSXG: B1_COD pertence ao grupo 030; C5_CLIENTE, ao 001.
  • X3_TRIGGER: no dicionário padrão, todo campo que tem gatilho na SX7 está marcado com S nessa coluna.
  • X1_F3: é assim que uma pergunta de relatório ganha lupa.

Conferindo pelo SQL

Quando o dicionário está no banco, cada tabela SX é uma tabela física com o mesmo sufixo de empresa das tabelas de dados: SX3010, SX2010, SIX010. Os exemplos usam 010; o sufixo muda conforme a empresa do seu ambiente.

Todos os campos de uma tabela, na ordem do dicionário (X3_ORDEM):

Confira no seu ambienteSQL
SELECT X3_CAMPO, X3_TIPO, X3_TAMANHO, X3_DECIMAL, X3_TITULO,
       X3_CONTEXT, X3_F3, X3_FOLDER, X3_GRPSXG
  FROM SX3010
 WHERE X3_ARQUIVO = 'SB1'
   AND D_E_L_E_T_ = ' '
 ORDER BY X3_ORDEM

A tabela, o modo de acesso e a chave única:

Confira no seu ambienteSQL
SELECT X2_CHAVE, X2_NOME, X2_MODO, X2_MODOUN, X2_MODOEMP, X2_UNICO
  FROM SX2010
 WHERE X2_CHAVE = 'SB1'
   AND D_E_L_E_T_ = ' '

Os índices:

Confira no seu ambienteSQL
SELECT ORDEM, CHAVE, DESCRICAO, NICKNAME, SHOWPESQ
  FROM SIX010
 WHERE INDICE = 'SB1'
   AND D_E_L_E_T_ = ' '
 ORDER BY ORDEM

E um parâmetro MV_*, para ver tipo, descrição e conteúdo:

Confira no seu ambienteSQL
SELECT X6_FIL, X6_VAR, X6_TIPO, X6_DESCRIC, X6_CONTEUD
  FROM SX6010
 WHERE X6_VAR = 'MV_ULMES'
   AND D_E_L_E_T_ = ' '

Onde isso aparece no dia a dia

  • Campo que não aparece na tela: a resposta está na SX3 (uso, pasta, contexto) — não na tabela de dados.
  • “O F3 abre a lista errada”: confira o X3_F3 do campo e a consulta na SXB.
  • “Não consigo aumentar esse campo”: veja se ele tem X3_GRPSXG. Se tiver, o tamanho se muda pelo grupo, na SXG.
  • “Esse valor vem de onde?”: gatilho na SX7, inicializador em X3_RELACAO ou parâmetro na SX6.

Se precisar levantar o dicionário de uma customização inteira antes de uma atualização de versão, fale com a gente.

Referências

  1. TDNtdn.totvs.com

    TDN — SX2, Tabelas de Dados
  2. TDNtdn.totvs.com

    TDN — Tabelas disponíveis SX3
  3. TDNtdn.totvs.com

    TDN — Dicionário de Dados (CFGX034 - SIGACFG)
  4. TDNtdn.totvs.com

    TDN — Atualizar Base de Dados (CFGX034 - SIGACFG)

Continue por aqui