advpl-specialist
Referencia Interna

SX Configuration

Templates e regras de validacao para gerar scripts de configuracao do dicionario SX do TOTVS Protheus - SX2, SX3, SIX, SXG, SXA, SX1, SX5, SXB e SX7

SX Configuration

Templates e regras de validacao para gerar scripts de configuracao do dicionario de dados Protheus. Cobre SX2 (cabecalho de tabela), SX3 (campos), SIX (indices), SXG (grupos de campos), SXA (pastas de cadastro), SX1 (perguntas de relatorio), SX5 (tabelas genericas), SXB (consultas padrao F3) e SX7 (gatilhos).

Quando Usar

  • Registrar uma nova tabela customizada (cabecalho)
  • Criar novos campos customizados para uma tabela
  • Definir indices para tabelas customizadas
  • Agrupar campos relacionados entre tabelas (grupos de campo)
  • Organizar campos em pastas/abas em formularios MVC
  • Configurar perguntas de parametros de relatorio
  • Criar tabelas genericas de lookup
  • Configurar consultas padrao F3
  • Configurar gatilhos de campo

SX2 -- Mapeamento de Tabelas

Define a propria tabela: alias, nome fisico, modo de compartilhamento e modo de acesso. Deve ser criada antes de gerar campos SX3 para uma nova tabela customizada.

Campos Obrigatorios

CampoDescricaoExemplo
X2_CHAVEAlias da tabela (3 chars)ZA1
X2_PATHCaminho (geralmente vazio — usa o padrao)
X2_ARQUIVOPadrao do nome fisicoZA1990
X2_NOMEDescricao pt-BROrdens de Servico
X2_NOMESPADescricao esOrdenes de Servicio
X2_NOMEENGDescricao enService Orders
X2_MODOModo de compartilhamento: C/E/MC
X2_MODOEMPModo de compartilhamento por empresaC
X2_MODOUNModo de compartilhamento por filialC
X2_TTSTabela transacional (Sim/Nao)Sim
X2_PYMEDisponivel na edicao PYME (Sim/Nao)Sim
X2_USROPERAuditoria de usuario (Sim/Nao)Sim

Referencia de Modo de Compartilhamento

X2_MODOSignificadoCaso de Uso
CCompartilhado (entre todas as empresas/filiais)Tabelas de lookup globais, parametros
EExclusivo (por filial)Maioria das tabelas transacionais (SA1, SE1, SF2)
MMisto (depende de X2_MODOEMP/X2_MODOUN)Casos especiais multi-tenant

Regras

  • Alias deve ter 3 chars maiusculos; tabelas customizadas usam prefixo Z (ZA1-ZZZ, Z01-Z99).
  • O nome fisico (X2_ARQUIVO) e o nome base antes do padding de empresa/filial (ex.: ZA1990). Em tempo de execucao, o DBAccess acrescenta o codigo da empresa, produzindo ZA1990010.
  • Use RetSqlName("ZA1") em tempo de execucao — nunca hardcode o nome fisico.
  • X2_TTS = Sim habilita controle transacional via BeginTran/EndTran. Obrigatorio para qualquer tabela modificada dentro de blocos RecLock que precisem de rollback.
  • Para novas tabelas customizadas: registre SX2 primeiro, depois SX3, depois SIX, e por fim SXG/SXA/SXB/SX7 opcionais.

SX3 -- Definicao de Campo

Campos Obrigatorios

CampoDescricaoExemplo
X3_ARQUIVOAlias da tabelaZA1
X3_ORDEMOrdem do campo (2 digitos)01
X3_CAMPONome do campo (ALIAS_FIELD)ZA1_CODIGO
X3_TIPOTipo: C, N, D, L, MC
X3_TAMANHOTamanho6
X3_DECIMALCasas decimais (para N)0
X3_TITULOTitulo pt-BR (max 15 chars)Codigo
X3_TITSPATitulo es (max 15 chars)Codigo
X3_TITENGTitulo en (max 15 chars)Code
X3_DESCRICDescricao pt-BRCodigo da OS
X3_DESCSPADescricao esCodigo de la OS
X3_DESCENGDescricao enOS Code
X3_PICTUREFormato de exibicao@!
X3_VALIDExpressao de validacaoNaoVazio()
X3_USADOEm uso (Sim/Nao)Sim
X3_OBRIGATObrigatorio (Sim/Nao)Sim
X3_BROWSEExibir no browse (Sim/Nao)Sim
X3_VISUALModo de edicao: Alterar/VisualizarAlterar
X3_CONTEXTContexto: Real/VirtualReal
X3_CBOXOpcoes de combo (val1=desc1;val2=desc2)
X3_RELACAOExpressao de valor inicial
X3_F3Alias de lookup F3SA1
X3_VLDUSERExpressao de validacao do usuario
X3_TRIGGERTem gatilho (Sim/Nao)Nao

Regras de Validacao

RegraCondicaoAcao
Formato do nome do campoDeve ser ALIAS_XXXXXX (6 chars apos underscore)Erro se invalido
Tamanho tipo C1-254 caracteresAviso se > 100
Tamanho tipo NMax 18 digitos incluindo decimalErro se > 18
Tamanho tipo DSempre 8Auto-definir para 8
Tamanho tipo LSempre 1Auto-definir para 1
Tamanho tipo MSempre 10Auto-definir para 10
Picture para C@! (maiuscula), @R (mascara), ou customizadoSugerir @! para codigos
Picture para N@E 999,999,999.99 (ajustar ao tamanho)Auto-gerar a partir de tamanho/decimal
Picture para D(nao necessario)Deixar vazio
Obrigatorio + ValidacaoSe X3_OBRIGAT = Sim, adicionar NaoVazio() a X3_VALIDAuto-adicionar
Lookup F3Se X3_F3 definido, validacao deve incluir ExistCpoSugerir adicionar
CBOX + ValidacaoSe X3_CBOX definido, adicionar Pertence() a X3_VALIDAuto-adicionar
Auto-incrementoSe chave primaria, definir X3_RELACAO = GetSXENum()Sugerir para primeiro campo
GatilhoSe F3 definido e campo de exibicao relacionado necessario, gerar SX7Auto-gerar

Validacoes Comuns

ValidacaoQuando usarSintaxe
NaoVazio()Campo obrigatorioNaoVazio()
ExistCpo(alias, M->field)Lookup de chave estrangeiraExistCpo("SA1", M->ZA1_CLIENT)
ExistChav(alias, M->field, order)Verificacao de chave unicaExistChav("ZA1", M->ZA1_CODIGO, 1)
Pertence(values)Validacao de comboPertence("1234")
Positivo()Deve ser > 0Positivo()
Vazio() .Or. ExistCpo()Chave estrangeira opcionalVazio() .Or. ExistCpo("SA1", M->ZA1_CLIENT)

Pictures Comuns

TipoPictureExemplo de exibicao
Codigo (maiuscula)@!ABC123
CNPJ@R 99.999.999/9999-9912.345.678/0001-90
CPF@R 999.999.999-99123.456.789-00
Telefone@R (99) 99999-9999(11) 98765-4321
Moeda@E 999,999,999.991,234.56
Percentual@E 999.9915.50

SIX -- Definicao de Indice

Campos Obrigatorios

CampoDescricaoExemplo
INDICEAlias da tabelaZA1
ORDEMNumero de ordem do indice1
CHAVEExpressao de chave (campos concatenados)ZA1_FILIAL + ZA1_CODIGO
DESCRICAODescricao pt-BRCodigo
DESCSPADescricao esCodigo
DESCENGDescricao enCode
NICKNAMEApelido do indiceZA1_CODIGO
SHOWPESQExibir na pesquisa (Sim/Nao)Sim

Regras

  • Indice 1 e SEMPRE a chave primaria (FILIAL + campo unico)
  • FILIAL deve ser o primeiro componente de todo indice
  • Nickname deve ser unico dentro da tabela
  • Ordem deve ser sequencial comecando de 1

SXG -- Grupos de Campos

Grupos definem um contrato compartilhado de tamanho/decimais entre campos que devem permanecer alinhados (ex.: um campo de codigo de cliente que aparece em SA1, SE1, SC5 deve sempre ter o mesmo tamanho em todos os lugares). Alterar o grupo propaga a mudanca para todos os campos vinculados via ferramenta de atualizacao do dicionario.

Campos Obrigatorios

CampoDescricaoExemplo
XG_GRUPOCodigo do grupo (3 chars/digitos)033
XG_DESCRICDescricao pt-BRCodigo do Cliente
XG_DESCSPADescricao esCodigo del Cliente
XG_DESCENGDescricao enCustomer Code
XG_TAMANHOTamanho6
XG_DECIMALDecimais (para N)0
XG_PICTUREFormato de exibicao@!
XG_TIPOTipo: C, N, D, L, MC

Vinculando Campos SX3 a um Grupo

No registro SX3 de cada campo relacionado, preencha X3_GRUPO com o codigo do grupo:

X3_CAMPO   = A1_COD
X3_GRUPO   = 033
X3_TAMANHO = 6     (deve coincidir com XG_TAMANHO)
X3_TIPO    = C     (deve coincidir com XG_TIPO)

Regras

  • Codigo do grupo: 3 chars (TOTVS usa numerico 001-999; grupos customizados usam prefixo Z, como Z01).
  • Todos os campos SX3 com o mesmo X3_GRUPO devem concordar em X3_TIPO, X3_TAMANHO, X3_DECIMAL e X3_PICTURE.
  • Use um grupo sempre que o mesmo campo logico existir em 2 ou mais tabelas (codigos, chaves estrangeiras, totais).
  • A ferramenta de atualizacao do dicionario (UpdDistr/UPDDISTR) usa SXG para propagar alteracoes de tamanho — sem grupo, cada linha SX3 deve ser editada manualmente.

SXA -- Pastas de Cadastro

Define pastas (abas) usadas para organizar visualmente os campos em formularios MVC (AxCadastro, MVCAxCadastro, FormView). Sem o registro SXA, as views MVC retornam para uma unica aba padrao.

Campos Obrigatorios

CampoDescricaoExemplo
XA_ALIASAlias da tabelaZA1
XA_ORDEMOrdem da pasta (2 digitos)01
XA_DESCRICNome da pasta pt-BRCadastrais
XA_DESCSPANome da pasta esGenerales
XA_DESCENGNome da pasta enGeneral
XA_AGRUPCMAgrupamento visual (opcional)

Vinculando Campos SX3 a uma Pasta

Em cada linha SX3, defina X3_FOLDER com a ordem da pasta desejada:

X3_CAMPO  = ZA1_CODIGO
X3_FOLDER = 01            -- Vai para a pasta "Cadastrais"

X3_CAMPO  = ZA1_OBSERV
X3_FOLDER = 02            -- Vai para a pasta "Observacoes"

Regras

  • A ordem das pastas deve ser sequencial (01, 02, 03...) por tabela.
  • Um campo com X3_FOLDER vazio e alocado na pasta 01.
  • Os nomes das pastas aparecem traduzidos de acordo com o idioma do usuario (pt-BR / es / en).
  • Para telas master-detail complexas, combine SXA com a configuracao de view FWFormDetail (o SXA define as pastas; a View anexa as grids a elas).

SX1 -- Perguntas de Relatorio

Campos Obrigatorios

CampoDescricaoExemplo
X1_GRUPONome do grupo (corresponde ao alias do relatorio)ZA1
X1_ORDEMOrdem da pergunta (2 digitos)01
X1_PERGUNTTexto da pergunta pt-BRData Abertura De
X1_PERGSPATexto da pergunta esFecha Apertura De
X1_PERGENGTexto da pergunta enOpen Date From
X1_TIPOTipo: C, N, DD
X1_TAMANHOTamanho do campo8
X1_GSCGet/Select/Combo: G, S, CG
X1_VALIDExpressao de validacao
X1_DEF01Valor padraoSpace(8)
X1_F3Lookup F3 (para tipo C)SA1
X1_HELPTexto de ajudaData inicial

Regras

  • Perguntas vem em pares para filtros de faixa (De/Ate)
  • Tipo D sempre tem tamanho 8
  • Padrao para data "De": Space(8) ou primeiro dia do mes
  • Padrao para data "Ate": dDataBase ou ultimo dia do mes
  • Padrao para char "De": Space(tamanho)
  • Padrao para char "Ate": Replicate("Z", tamanho)
  • Se combo (C), X1_DEF01 contem o valor da opcao padrao
  • X1_GSC: G=Get (input de texto), S=Select (incomum), C=Combo

SX5 -- Tabelas Genericas

Campos Obrigatorios

CampoDescricaoExemplo
X5_FILIALFilial (geralmente vazio para global)
X5_TABELACodigo da tabela (2 chars)ZZ
X5_CHAVEValor da chave (2 chars)01
X5_DESCRIDescricao pt-BRPreventiva
X5_DESCSPADescricao esPreventiva
X5_DESCENGDescricao enPreventive

Regras

  • Codigo da tabela: 2 caracteres maiusculos (usar prefixo Z para custom: ZA, ZB, ZZ, etc.)
  • Chave: 2 caracteres, sequencial (01, 02, 03...)
  • Para usar no codigo: GetSX5("ZZ", "01") ou X5DESCRI("ZZ", "01")

SXB -- Consultas Padrao (F3)

Define a janela de lookup F3: o dialogo que abre quando o usuario pressiona F3 em um campo com X3_F3 preenchido. Configura colunas de pesquisa, colunas exibidas no resultado e o valor retornado ao campo de origem. Composto por 4 tipos de linha (XB_TIPO): 1 = definicao do lookup, 2 = indice de pesquisa, 3 = colunas de exibicao, 4 = expressao de retorno.

Campos Obrigatorios (cabecalho / tipo 1)

CampoDescricaoExemplo
XB_ALIASCodigo do lookup (coincide com X3_F3)SA1
XB_TIPOTipo da linha: 1, 2, 3, 41
XB_SEQSequencia (2 digitos)01
XB_COLUNAReferencia de coluna/ordemDB
XB_DESCRICDescricao pt-BRClientes
XB_DESCSPADescricao esClientes
XB_DESCENGDescricao enCustomers
XB_CONTEMConteudo (expressao de chave / nome de campo)SA1
XB_WCONTEMClausula when (opcional)

Referencia de Tipos de Linha

XB_TIPOFinalidadeO que vai em XB_CONTEM
1Cabecalho do lookup (um por alias)Alias da tabela de origem (ex.: SA1)
2Indice de pesquisaNumero de ordem do indice para pesquisa (ex.: 1, 3)
3Coluna de exibicao na janela de lookupNome do campo (ex.: A1_COD, A1_NOME)
4Expressao de retorno -- valor devolvido ao campo de origemExpressao AdvPL (ex.: SA1->A1_COD)

Exemplo: Lookup Customizado de SA1 por Nome

-- Tipo 1: Cabecalho
XB_ALIAS    = SACN  (codigo customizado de 4 chars)
XB_TIPO     = 1
XB_SEQ      = 01
XB_DESCRIC  = Clientes por Nome
XB_CONTEM   = SA1

-- Tipo 2: Pesquisa pelo indice 3 (A1_FILIAL + A1_NOMECOM)
XB_TIPO     = 2
XB_SEQ      = 01
XB_CONTEM   = 3

-- Tipo 3: Exibir A1_COD, A1_LOJA, A1_NOME no grid de lookup
XB_TIPO     = 3
XB_SEQ      = 01
XB_CONTEM   = A1_COD
XB_TIPO     = 3
XB_SEQ      = 02
XB_CONTEM   = A1_LOJA
XB_TIPO     = 3
XB_SEQ      = 03
XB_CONTEM   = A1_NOME

-- Tipo 4: Retornar A1_COD ao campo de origem
XB_TIPO     = 4
XB_SEQ      = 01
XB_CONTEM   = SA1->A1_COD

O campo de origem referencia o lookup assim:

X3_F3 = SACN

Regras

  • XB_ALIAS deve coincidir exatamente com X3_F3 (normalmente o proprio alias da tabela, mas codigos customizados de 4 chars como SACN sao validos para lookups alternativos na mesma tabela).
  • Sempre fornecer ao menos um registro de cada tipo 1, 2, 3 e 4 -- do contrario a janela de lookup ficara incompleta.
  • Multiplos registros do tipo 2 permitem ao usuario alternar entre indices de pesquisa (F12 no lookup).
  • Multiplos registros do tipo 3 definem as colunas exibidas -- a ordem importa.
  • A expressao do tipo 4 deve retornar um valor compativel com o tipo e tamanho do campo de origem.
  • A filtragem de D_E_L_E_T_ e feita implicitamente pelo indice subjacente -- o SXB usa Workarea (DbSeek) internamente, nao SQL direto.

SX7 -- Gatilhos

Campos Obrigatorios

CampoDescricaoExemplo
X7_CAMPOCampo de origemZA1_CLIENT
X7_SEQUENCSequencia (3 digitos)001
X7_REGRAExpressao a avaliarPosicione("SA1", 1, xFilial("SA1") + M->ZA1_CLIENT, "A1_NOME")
X7_CDOMINCampo de dominio (destino a preencher)ZA1_NMCLI
X7_TIPOTipo: P=PrimarioP
X7_SEEKExpressao de seekxFilial("SA1") + M->ZA1_CLIENT
X7_ALIASAlias de lookupSA1
X7_ORDEMOrdem do indice para seek1
X7_CHTEFILVerificar filial (Sim/Nao)Sim

Regras

  • Gatilhos disparam quando o campo de origem muda
  • Posicione() e a funcao padrao para lookups
  • Sempre incluir xFilial() na expressao de seek
  • Sequencia permite multiplos gatilhos no mesmo campo

Formato de Saida

Scripts sao formatados como blocos chave-valor, uma definicao de campo por bloco, separados por tracos. Este formato e legivel e pode ser usado como referencia para configuracao manual no Configurador ou para scripts de importacao.

Nesta pagina