Em nenhuma parte do sistema é permito o uso de tabelas de movimentos mais compartilhadas do que as tabelas de cadastro.
Isso porque deixar a tabela de movimento mais compartilhada do que a tabela de cadastros causará quebra na integridade referencial das tabelas.
Na verdade, esse conceito se aplica a quaisquer tabelas que possuam relacionamento 1:n (um para muitos). Pode ser cadastro x movimento, cabeçalho x item etc..
Por exemplo:
Tabelas: Cadastro de clientes (SA1) e títulos a receber (SE1)
Relacionamento: (relacionamento 1:n → isto é, deve existe um, e somente um registro de cadastro de clientes para muitos títulos a receber)
Compartilhamentos adequados: Mesmo nível de compartilhamento entre ambas as tabelas ou tabela de cadastros de clientes (SA1) mais compartilhada do que a tabela de títulos a receber (SE1).
O que ocorre se a tabela de títulos a receber for mais compartilhada do que a tabela de cadastro de clientes? Haverá margem para a existência de um registro na tabela de títulos a receber relacionada a mais de um cliente, quebrando a integridade referencial das tabelas.
Tabela SA1 | Tabela SE1 | Permitido? |
---|---|---|
Compartilhado | Compartilhado | Sim |
Compartilhado | Exclusivo | Sim |
Exclusivo | Compartilhado | Não |
Exclusivo | Exclusivo | Sim |
Alguns exemplos de tabelas que possuem o relacionamento 1:n (um para muitos) no módulo financeiro incluem, mas não se limitam a:
Um registro | Para muitos registros |
---|---|
SA1 | SE1 |
SA2 | SE2 |
SA3 | SE1 |
SEH | SE1 |
SEH | SE2 |
SA6 | FK5 |
SA6 | SEE |
SA6 | SEA |
Isso significar que SE1 não pode ser mais compartilhada do que SA1, SE2 não pode ser mais compartilhada do que SA2 e asism por diante.
Tentar contornar cenários de compartilhamento indevido (talvez utilizando variáveis de ambiente ou campos MSFIL e FILORIG) acarretará em código de alta complexidade, criação de débitos técnicos e perda de performance. Essa prática não é recomendada. |
Em ambientes configurados com gestão de empresas, o Protheus permite o compartilhamento das tabelas em três níveis diferentes: Empresa, Unidade de negócio e Filial. Quando uma tabela está compartilhada em mais níveis do que outra, dizemos que ela é mais compartilhada do que a outra.
Exemplo: Tabela SA1 mais compartilhada do que SE2
* C = Compartilhada, E = Exclusiva
Tabela | SA1 | SE1 |
---|---|---|
Empresa | C | E |
Unidade de negócio | C | E |
Filial | C | E |
Tabela | SA1 | SE1 |
---|---|---|
Empresa | C | E |
Unidade de negócio | C | E |
Filial | C | C |
Tabela | SA1 | SE1 |
---|---|---|
Empresa | C | E |
Unidade de negócio | C | C |
Filial | C | C |
Tabela | SA1 | SE1 |
---|---|---|
Empresa | E | E |
Unidade de negócio | C | E |
Filial | C | E |
Tabela | SA1 | SE1 |
---|---|---|
Empresa | E | E |
Unidade de negócio | C | E |
Filial | C | C |
Tabela | SA1 | SE1 |
---|---|---|
Empresa | E | E |
Unidade de negócio | E | E |
Filial | C | E |