SX8 — Numeradores Automaticos
Tabela de numeradores sequenciais — controla "proximo numero" de pedido, NF, OP, etc. Funcoes GetSXENum / ConfirmSX8 / RollbackSX8 leem daqui.
SX8 e o "contador" do sistema — proximo numero de pedido, NF, OP, lote. Tem controle de concorrencia (lock implicito) pra varios usuarios nao pegarem mesmo numero.
Campos principais
| Campo | Tipo | Descricao |
|---|---|---|
| X8_FILIAL | C | Filial |
| X8_ALIAS | C | Alias da tabela (SC5, SF2, SC2...) |
| X8_CAMPO | C | Campo numerico (C5_NUM, F2_DOC...) |
| X8_CHAVE | C | Chave composta (ex: serie da NF) |
| X8_NUMERO | C | Proximo numero a usar |
| X8_TIPO | C | A=Alfanumerico, N=Numerico |
Indices
| Ordem | Chave |
|---|---|
| 1 | X8_FILIAL+X8_ALIAS+X8_CAMPO+X8_CHAVE |
Codigo tipico
// Pegar proximo numero (com lock)
cNum := GetSXENum("SC5", "C5_NUM")
// Usuario tem 5 min pra confirmar ou cancelar
// Apos gravar com sucesso:
ConfirmSX8()
// Se rollback:
RollbackSX8()
Pegadinhas
- Esquecer ConfirmSX8 deixa numero "preso" — outros usuarios nao usam ate timeout (5 min).
- Em base SQL, locks da SX8 podem causar lentidao se muitos usuarios concorrentes.
- Numeracao customizada (codigo de produto) pode usar SX8 propria via X8_ALIAS = "SB1".