SB1 — Produtos
Tabela central de produtos. Cadastra todos itens: materia-prima, produto acabado, servico, embalagem. Chave B1_FILIAL+B1_COD.
SB1 e a tabela mestre de produtos. Tudo que se compra, fabrica, vende ou consome no Protheus tem registro aqui — incluindo servicos (B1_TIPO = "SV"). E uma das tabelas mais consultadas do sistema.
Campos principais
| Campo | Tipo | Descricao |
|---|---|---|
| B1_FILIAL | C | Filial |
| B1_COD | C | Codigo do produto |
| B1_DESC | C | Descricao |
| B1_TIPO | C | MP=Materia Prima, PA=Produto Acabado, ME=Mercadoria, PI=Produto Intermediario, SV=Servico, BN=Beneficiamento, EM=Embalagem, MO=Mao de Obra |
| B1_UM | C | Unidade medida (UN, KG, MT, L...) |
| B1_LOCPAD | C | Armazem padrao (geralmente "01") |
| B1_GRUPO | C | Grupo (SBM) |
| B1_POSIPI | C | NCM (classificacao fiscal — 8 digitos) |
| B1_ORIGEM | C | 0=Nacional, 1=Importado direto, 2=Importado adquirido, etc |
| B1_PICM | N | Aliquota ICMS |
| B1_IPI | N | Aliquota IPI |
| B1_PRV1 | N | Preco de venda 1 (tabela) |
| B1_CUSTD | N | Custo medio (atualizado por calc custo) |
| B1_QE | N | Quantidade na embalagem |
| B1_PESO | N | Peso liquido |
| B1_PESBRU | N | Peso bruto |
| B1_MSBLQL | C | 1=Bloqueado |
| B1_RASTRO | C | S=Rastreado por lote, L=Lote, N=Sem rastreio |
| B1_EMIN | N | Estoque minimo (alerta) |
| B1_EMAX | N | Estoque maximo |
Tipos B1_TIPO — uso pratico
| Tipo | Quando |
|---|---|
| MP | Insumo de producao (sera consumido em OP) |
| PA | Produto vendido pra cliente (saida via NF) |
| PI | Semi-acabado, usado em outra OP |
| ME | Mercadoria revendida (compra direta + venda) |
| SV | Servico — nao tem estoque |
| EM | Embalagem (caixa, palete) |
Indices principais
| Ordem | Chave |
|---|---|
| 1 | B1_FILIAL+B1_COD |
| 2 | B1_FILIAL+B1_DESC |
| 3 | B1_FILIAL+B1_TIPO+B1_COD |
| 4 | B1_FILIAL+B1_GRUPO+B1_COD |
Codigo tipico
// Buscar produto
SB1->(DBSetOrder(1))
If SB1->(DBSeek(xFilial("SB1") + "100001"))
cDescr := AllTrim(SB1->B1_DESC)
cUM := SB1->B1_UM
nPreco := SB1->B1_PRV1
// Validar se ativo
If SB1->B1_MSBLQL == "1"
Help(" ", 1, "BLOQ", , "Produto bloqueado", 1, 0)
Return .F.
EndIf
EndIf
Tabelas relacionadas
| Tabela | Relacao |
|---|---|
| SB2 | Saldo em estoque por armazem |
| SBF | Saldo por endereco/lote (WMS) |
| SBM | Grupo de produtos (cadastrado em B1_GRUPO) |
| SBZ | Tributacao por produto |
| SD3 | Movimentos de estoque |
| SG1 | Estrutura (BOM) — produto pai + componentes |
| SC6 | Itens de pedido de venda |
| SD1/SD2 | Itens de NF entrada/saida |
Pegadinhas
- B1_COD tem tamanho variavel por projeto — sempre use
TamSx3("B1_COD")[1]. - SB1 e geralmente compartilhada (X2_MODO = 'C') — produto cadastrado vale pra todas filiais.
- NCM e ORIGEM sao fiscais — erro aqui rejeita NFe.
- Produto com rastreio (B1_RASTRO = S) exige lote em movimentacoes — operacao sem lote falha.
- Produto SV (servico) nao tem estoque — operacoes de SB2 falham.