1. No se permiten tablas de movimiento más compartidas que tablas de registro

En ninguna parte del sistema se permite el uso de tablas de movimiento más compartidos que las tablas de registro.

Esto porque dejar la tabla de movimiento más compartida que la tabla de registros causará división en la integridad referencial de las tablas. 

En verdad, este concepto se aplica a cualquier tabla que tenga relación 1:n (uno para muchos). Puede ser registro vs. movimiento, encabezado vs. ítem, etc.

 

Por ejemplo:

Tablas: Registro de clientes (SA1) y títulos por cobrar (SE1)

Relación: (relación 1:n → es decir, debe existir uno, y solamente un registro de clientes para muchos títulos por cobrar)

Usos compartidos adecuados: Mismo nivel de uso compartido entre ambas tablas o tabla de registros de clientes (SA1) más compartida que la tabla de títulos por cobrar (SE1).

¿Qué ocurre si la tabla de títulos por cobrar fuera más compartida que la tabla de registro de clientes? Habrá margen para la existencia de un registro en la tabla de títulos por cobrar relacionada a más de un cliente, dividiendo la integridad referencial de las tablas.

Tabela SA1Tabela SE1¿Permitido?

Compartido

Compartido

Compartido

Exclusivo

Exclusivo

Compartido

No

Exclusivo

Exclusivo


Algunos ejemplos de tablas que tienen la relación 1:n (uno para muchos) en el módulo financiero incluyen, pero no se limitan a:

Un registro

Para muchos registros

SA1

SE1

SA2

SE2

SA3

SE1

SEH

SE1

SEH

SE2

SA6

FK5

SA6

SEE

SA6

SEA

SA6

SE8

Esto significa que SE1 no puede compartirse más que SA1, SE2 no puede compartirse más que SA2 y así en adelante.


Nota para los desarrolladores

Intentar solucionar escenarios de uso compartido indebido (talvez utilizando variables de entorno o campos MSFIL y FILORIG) ocasionará en código de alta complejidad, la creación de débitos técnicos y pérdida de desempeño. Esta práctica no se recomienda. La relación debe utilizar la clave extranjera.

2. ¿Qué significa "más compartida"?

En entornos configurados con gestión de empresas, el Protheus permite el uso compartido de las tablas en tres niveles diferentes: Empresa, Unidad de negocio y Sucursal. Cuando una tabla está compartida en más niveles que otra, se dice que esta es más compartida que la otra.


Ejemplo: Tabla SA1 más compartida que SE2

* C = Compartida, E = Exclusiva


Tabla

SA1SE1

Empresa

CE

Unidad de negocio

CE

Sucursal

CE

Tabla

SA1SE1

Empresa

CE

Unidad de negocio

CE

Sucursal

CC

Tabla

SA1SE1

Empresa

CE

Unidad de negocio

CC

Sucursal

CC
TabelaSA1SE1
EmpresaEE
Unidade de negócioCE
FilialC

E

Tabla

SA1SE1

Empresa

EE

Unidad de negocio

CE

Sucursal

C

C

Tabla

SA1SE1

Empresa

EE

Unidad de negocio

EE

Sucursal

C

E

3. ¿Cómo saber cuál es la relación entre las tablas?

Esta información puede obtenerse en la tabla Relaciones (SX9).

Los campos Dominio (X9_DOM) y Contradominio (X9_CDOM) indican las tablas que se están relacionando, y los campos Cardinalidad del dominio (X9_LIGDOM) y Cardinalidad del contradominio (X9_LIGCDOM) indican cómo es la relación.

En el ejemplo de SA1 vs. SE1, vemos que la relación es 1:n.

Más información: SX9 – Relación entre tablas

4. Otras informaciones

Uso compartido de tablas relacionadas al Registro de clientes

Importante

Cualquier modificación en el diccionario de datos o en la estructura de la base de datos debe ser realizada por un Administrador de base de datos (DBA) u otro profesional igualmente calificado.