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
SX2diz quais tabelas existem;SX3diz quais campos cada uma tem.- Onde conferir
- com o dicionário no banco, um
SELECTnaSX3010responde 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
SA1, 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
| Tabela | Guarda | Identifica o registro | Aprofunda em |
|---|---|---|---|
SX2 | Tabelas: alias, nome em três idiomas, modo de acesso, chave única | X2_CHAVE (o alias, ex.: SA1) | Tabela customizada |
SX3 | Campos: tipo, tamanho, título, validação, inicializador, contexto, pasta | X3_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 pesquisa | INDICE + ORDEM | Índices |
SX7 | Gatilhos: campo de origem, regra, campo de destino | X7_CAMPO + X7_SEQUENC | Gatilhos |
SXA | Pastas e agrupamentos da tela de cadastro | XA_ALIAS + XA_AGRUP + XA_ORDEM (pasta tem XA_AGRUP em branco) | Pastas e agrupamentos |
SXB | Consultas padrão (a lupa do F3) | XB_ALIAS + XB_TIPO + XB_SEQ + XB_COLUNA | Consulta padrão |
SX1 | Perguntas de relatórios e rotinas | X1_GRUPO + X1_ORDEM | Perguntas |
SX5 | Tabelas genéricas: listas fixas de código e descrição | X5_TABELA + X5_CHAVE (com X5_FILIAL) | Tabelas genéricas |
SX6 | Parâmetros MV_* | X6_VAR (com X6_FIL) | Parâmetros |
SXG | Grupos de campos: tamanho mínimo, máximo e atual de um dado repetido em muitas tabelas | XG_GRUPO | Grupo 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_VIRTUALeIX_VIRCUSTtêm. Nas outras tabelas, a coluna começa pelo nome da tabela sem oS(X2_,X3_,X7_,XA_…). - A
SX5e aSX6tê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:
Exemplos reais de cada ligação:
X3_ARQUIVO:B1_CODpertence àSB1.X3_F3:C5_CLIENTEabre a consultaSA1;A1_ESTusa12, a tabela de estados da SX5.X3_FOLDER:B1_BITMAPfica na pasta5do SB1.X3_GRPSXG:B1_CODpertence ao grupo030;C5_CLIENTE, ao001.X3_TRIGGER: no dicionário padrão, todo campo que tem gatilho na SX7 está marcado comSnessa 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):
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_ORDEMA tabela, o modo de acesso e a chave única:
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:
SELECT ORDEM, CHAVE, DESCRICAO, NICKNAME, SHOWPESQ
FROM SIX010
WHERE INDICE = 'SB1'
AND D_E_L_E_T_ = ' '
ORDER BY ORDEME um parâmetro MV_*, para ver tipo, descrição e conteúdo:
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_F3do campo e a consulta naSXB. - “Não consigo aumentar esse campo”: veja se ele tem
X3_GRPSXG. Se tiver, o tamanho se muda pelo grupo, naSXG. - “Esse valor vem de onde?”: gatilho na
SX7, inicializador emX3_RELACAOou parâmetro naSX6.
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
TDNtdn.totvs.com
TDN — SX2, Tabelas de DadosTDNtdn.totvs.com
TDN — Tabelas disponíveis SX3TDNtdn.totvs.com
TDN — Dicionário de Dados (CFGX034 - SIGACFG)TDNtdn.totvs.com
TDN — Atualizar Base de Dados (CFGX034 - SIGACFG)
Continue por aqui
- Vídeo
ProtheusTutorial
Privilégios no Protheus: a diferença entre não permitido e negado
Privilégios no Protheus: como montar um privilégio de só pesquisar e visualizar, vinculá-lo a usuário ou grupo, e por que negado vence permitido.