Skip to content

Valores Dinámicos en Propiedades (dynamic_values)

En la arquitectura de metadatos de Axol Systems, las propiedades (properties) de cualquier entidad cuentan con un diccionario de configuración ejecutable de tipo JSONB llamado dynamic_values.

Este objeto otorga comportamiento reactivo en tiempo de ejecución a los atributos de una entidad sin necesidad de alterar el código fuente de la aplicación cliente ni el esquema físico en PostgreSQL.

{
"dynamic_values": {
"formula": "...",
"visible": "...",
"sum_obj_list": { ... },
"sum_from": { ... },
"lookup": "...",
"snapshot": { ... },
"default": "...",
"sequence": true,
"only_read": true,
"visible_in_create": false,
"id_array": "...",
"foreign_table": "...",
"junction_table": "..."
}
}

Las llaves configurables dentro de dynamic_values se dividen en dos categorías fundamentales:

  1. Llaves Operativas: Funciones y directivas opcionales que pueden aplicarse a múltiples tipos de propiedades (números, texto, fechas, booleanos, virtuales, etc.) para alterar su cálculo en caliente, su visibilidad dinámica o realizar agregaciones estadísticas.
  2. Llaves de Propiedad: Configuraciones obligatorias o exclusivas para tipos de datos específicos (como colecciones array, listas de objetos objList y referencias reference), requeridas para su correcto enlace con el modelo relacional y los componentes de interfaz.

Bloque I: Llaves Operativas (Comportamiento Opcional)

Section titled “Bloque I: Llaves Operativas (Comportamiento Opcional)”

1. formula (Fórmulas y Cálculos Dinámicos)

Section titled “1. formula (Fórmulas y Cálculos Dinámicos)”

La llave "formula" permite definir expresiones lógicas, aritméticas y de transformación que la aplicación cliente y el backend evalúan dinámicamente sobre los registros en caliente.

Para hacer referencia al valor de otra propiedad dentro del mismo objeto o contexto, se utiliza el código técnico de la columna (ej. t0c1, t0c2) o la sintaxis explícita con llaves {t0c1}.

Admite operaciones matemáticas estándar con precedencia de operadores y agrupación mediante paréntesis (...):

  • Suma (+)
  • Resta (-)
  • Multiplicación (*)
  • División (/)

C. Redondeo y Formateo de Resultados (round y r)

Section titled “C. Redondeo y Formateo de Resultados (round y r)”
  • Redondeo (round): round(expresión, decimales, [dirección])
    • Permite especificar el número de decimales a conservar.
    • Opcionalmente acepta una dirección de redondeo: 'up' (hacia arriba) o 'down' (hacia abajo).
  • Unidad de retorno (r): r(unidad); o r(unidad, round(decimales, dirección));
    • Establece la unidad de medida asignada al resultado del cálculo.
    • Ejemplo: r(USD, round(2, up)); t0c1 * t0c2

Permite aplicar lógica condicional para retornar distintos valores según se cumpla o no una premisa:

  • Sintaxis: if : condición ? valor_si_verdadero : valor_si_falso
  • Operadores de comparación: ==, !=, >, >=, <, <=.
  • Ejemplo: if : t0c1 > 100 ? t0c1 * 0.9 : t0c1

E. Acceso a Estados Anteriores ({snapshot:...})

Section titled “E. Acceso a Estados Anteriores ({snapshot:...})”

Permite consultar el valor que tenía una columna antes de ser modificada en la sesión actual de edición:

  • Sintaxis: {snapshot:t0c1}
  • Uso común: Cálculo de variaciones netas, deltas de inventario o comparaciones históricas inmediatas.
  • now: Retorna la fecha y hora actual del servidor/cliente.
  • res: Hace referencia al resultado de la sentencia previa en fórmulas compuestas multilínea (separadas por punto y coma ;).

Permite declarar un arreglo var dentro de dynamic_values para definir sub-evaluaciones o agregaciones intermedias y utilizarlas limpiamente dentro de la expresión de formula.

  • Identificadores admitidos: Numéricos (0, 1) o alias de texto ("entradas", "salidas").
  • Sintaxis de invocación: var(id) o {var:id}.
  • Reutilización: Una misma variable puede referenciarse múltiples veces dentro de la fórmula (ej. (var(0) - var(1)) / var(0)).
{
"formula": "var(entradas) - var(salidas)",
"var": [
{
"id": "entradas",
"value": {
"sum_obj_list": {
"obj_list_column": "t0c1",
"sum_columns": ["t1c1"],
"filter": {
"column": "t1c2",
"value": "ENTRADA"
}
}
}
},
{
"id": "salidas",
"value": {
"sum_obj_list": {
"obj_list_column": "t0c1",
"sum_columns": ["t1c1"],
"filter": {
"column": "t1c2",
"value": "SALIDA"
}
}
}
}
]
}

2. visible (Visibilidad Dinámica por Expresión)

Section titled “2. visible (Visibilidad Dinámica por Expresión)”

Controla si una propiedad debe ser renderizada o permanecer oculta en la interfaz de usuario en tiempo real, evaluando dinámicamente los datos del registro actual.

  • Booleano directo: "visible": true o "visible": false.
  • Expresión condicional dinámica: Permite definir una condición lógica mediante una cadena de texto ejecutada en caliente:
    • Si la expresión evalúa a true, el campo se muestra en el formulario o tabla.
    • Si evalúa a false, el campo se oculta automáticamente sin alterar los datos del objeto.
{
"visible": "t0c1 > 0"
}
{
"visible": "t0c2 == 'RECHAZADO'"
}

3. sum_obj_list (Sumatoria de Objetos en Lista Local)

Section titled “3. sum_obj_list (Sumatoria de Objetos en Lista Local)”

Permite realizar cálculos de agregación (sumatoria) directamente sobre las colecciones de objetos relacionados mediante una propiedad de tipo ObjectList o sub-tabla perteneciente a la misma entidad.

ParámetroTipoRequeridoDescripción
obj_list_columnTextoSíCódigo de columna de la propiedad de sub-tabla contenedora (ej. t0c1).
sum_columns / target_fieldArray / TextoSíColumna o columnas numéricas de la tabla hija cuyos valores se sumarán.
filterObjetoOpcionalCriterio de filtrado (column, value) para restringir los registros sumados.
{
"sum_obj_list": {
"obj_list_column": "items_pedido",
"target_field": "t1c5"
}
}

4. sum_from (Sumatoria Externa y Relacional)

Section titled “4. sum_from (Sumatoria Externa y Relacional)”

Realiza cálculos de agregación dinámica sobre registros ubicados en tablas externas o sub-tablas relacionales asociadas al objeto actual.

ParámetroTipoRequeridoDescripción
table / target_tableTextoSíTabla o entidad externa donde residen los registros a sumar (ej. table20).
column / target_fieldTextoSíColumna numérica que contiene el valor a sumar (ej. t20c1).
matchArrayOpcionalCondiciones relacionales o de filtrado (local, foreign, from_form, value, op).
sign_byObjetoOpcionalAsigna signo positivo o negativo según el valor de una columna discriminadora.
formulaTextoOpcionalExpresión matemática que opera sobre la sumatoria resultante mediante la variable this.
  • from_form: Permite enlazar dinámicamente una condición de match con el valor de un campo del formulario activo ({ "foreign": "t3c2", "from_form": "t5c2" }), haciendo que el cálculo reaccione a selecciones en tiempo real (por ejemplo, filtrar existencias según el almacén actualmente seleccionado en el formulario).
  • value múltiple: Acepta arreglos de valores (["CNC-1", "CNC-2"]) para comparaciones IN / NOT IN.
  • op: Operador de comparación explícito: "eq", "neq", "gt", "gte", "lt", "lte".
  • sign_by: Permite balancear entradas y salidas en una sola agregación:
{
"sum_from": {
"table": "table20",
"column": "t20c1",
"match": [
{
"local": "t19c0",
"foreign": "t20c0"
},
{
"foreign": "t20c6",
"value": ["SCRAP", "RECHAZO"],
"op": "neq"
}
],
"sign_by": {
"column": "t20c5",
"positive": ["ENTRADA", "CONVERSION"],
"negative": ["SALIDA"]
}
}
}

Expresiones Matemáticas Integradas (formula y this)

Section titled “Expresiones Matemáticas Integradas (formula y this)”

El bloque sum_from admite el parámetro "formula", permitiendo operar directamente sobre el resultado acumulado de la agregación utilizando la variable reservada this:

{
"sum_from": {
"table": "table10_stock",
"column": "existencia",
"match": [
{ "local": "t3c1", "foreign": "id_producto" }
],
"formula": "this - t3c5"
}
}
  • this: Representa el valor numérico total acumulado resultante de la sumatoria previa de sum_from.
  • Operaciones compuestas: Es posible combinar this con cualquier operador aritmético y códigos de columnas del registro actual (por ejemplo, restar la cantidad capturada this - t3c5 para calcular el saldo remanente, o aplicar factores de conversión e impuestos this * 1.16).

5. lookup (Resolución de Propiedades Foráneas y Rutas Relacionales)

Section titled “5. lookup (Resolución de Propiedades Foráneas y Rutas Relacionales)”

La llave "lookup" permite proyectar en caliente el valor de una propiedad perteneciente a otra entidad foránea relacionada, sin necesidad de duplicar ni persistir información redundante en la base de datos física.

Se utiliza comúnmente en propiedades virtuales o de solo lectura que deben mostrar datos contextuales del registro relacionado (por ejemplo, mostrar el nombre o RFC de un cliente a partir de su ID de referencia).

Indica directamente el código de la columna foránea que se desea proyectar desde la entidad asociada a la referencia actual:

{
"lookup": "t1c3"
}

Cuando la información requerida se encuentra a más de un nivel de distancia relacional (por ejemplo: Registro Actual ➔ Referencia A ➔ Referencia B ➔ Columna Destino), se especifica una ruta separada por comas indicando la secuencia de columnas intermedias hasta la columna final:

{
"lookup": "t0c4, t1c2"
}
  • t0c4: Código de la propiedad de tipo reference en el objeto actual.
  • t1c2: Código de la columna destino en el objeto foráneo enlazado.

C. Compatibilidad con Sub-tablas e Inversas

Section titled “C. Compatibilidad con Sub-tablas e Inversas”

El motor de resolución de lookup soporta traversal automático a través de:

  • Propiedades de tipo reference.
  • Registros pertenecientes a sub-tablas (objList).
  • Sub-tablas inversas donde el registro hijo accede a los atributos del objeto primario padre mediante primary_table.
{
"virtual": {
"is": true
},
"lookup": "t0c1, t2c5"
}

6. snapshot (Persistencia Inmutable de Cálculos)

Section titled “6. snapshot (Persistencia Inmutable de Cálculos)”

Por defecto, las propiedades calculadas mediante sum_from o formula se revalúan dinámicamente en tiempo de ejecución. Al incorporar la directiva "snapshot", el valor resultante calculado al momento de guardar se estampa físicamente en la columna correspondiente de la tabla de PostgreSQL, congelando el dato y evitando recálculos posteriores que pudieran distorsionar la integridad histórica.

Esta funcionalidad es fundamental para preservar:

  • Costos unitarios históricos o precios pactados al momento de emitir una orden.
  • Saldo o existencias resultantes al momento exacto de un movimiento de inventario (Kardex).
  • Totales facturados inalterables ante cambios futuros de listas de precios o tipos de cambio.
  • Booleano directo: "snapshot": true habilita la persistencia física del valor calculado con la configuración predeterminada (update_on_edit: false).
  • Objeto de configuración: Permite regular si el valor debe recalcularse al editar registros:
{
"snapshot": {
"update_on_edit": false
}
}
ParámetroTipoPor DefectoDescripción
update_on_editBooleanofalseSi es false, el valor congelado en la creación inicial se preserva inmutable incluso si el registro se abre y guarda nuevamente en edición. Si es true, revalúa la fórmula o sumatoria y sobreescribe la columna física al modificar el registro.

7. default (Valores por Defecto y Tokens Dinámicos)

Section titled “7. default (Valores por Defecto y Tokens Dinámicos)”

Permite inicializar y precargar automáticamente valores en los campos durante la apertura del formulario de creación de un nuevo objeto (ctxFormCreate), agilizando la captura y garantizando la consistencia de datos de auditoría y fechas.

  1. Valores Literales Estáticos:

    • Cadenas de texto: "PENDIENTE", "NORMAL".
    • Valores numéricos: 0, 100.
    • Booleanos: true, false.
  2. Tokens Dinámicos de Sesión y Contexto:

    • {user.name}: Nombre completo o alias del usuario actualmente autenticado en la sesión.
    • {user.id}: UUID del usuario en sesión.
    • {user.rol} / {user.role}: Rol o nivel de seguridad del usuario activo.
    • {today}: Fecha actual del sistema en formato ISO (YYYY-MM-DD).
    • {now}: Fecha y hora exacta actual en formato ISO (YYYY-MM-DD HH:mm:ss).
  3. Plantillas Compuestas Interpoladas: Permite mezclar texto fijo con uno o múltiples tokens contextuales dentro de una misma cadena:

{
"default": "Registrado por {user.name} ({user.rol}) el {today}"
}
{
"default": "{today}"
}

8. sequence (Generación Correlativa Automática)

Section titled “8. sequence (Generación Correlativa Automática)”

Instruye al motor backend a calcular y asignar automáticamente el siguiente número correlativo o folio secuencial para la entidad en el momento exacto de persistir el registro en la base de datos.

{
"sequence": true
}
  • Garantía transaccional: El incremento se calcula de forma atómica en el servidor, evitando duplicidades o saltos de folio entre múltiples usuarios que capturen en paralelo.
  • Integración habitual: Se combina usualmente con "only_read": true para impedir que el usuario altere el folio, o con "visible_in_create": false si se prefiere no mostrar el número hasta que el registro haya sido confirmado y guardado.

9. only_read / only_view (Bloqueo de Edición en Formularios)

Section titled “9. only_read / only_view (Bloqueo de Edición en Formularios)”

Bloquea de forma incondicional la edición manual de un campo en los formularios de captura y actualización, manteniéndolo completamente visible y legible para el usuario.

{
"only_read": true
}

[!NOTE] La directiva acepta indistintamente "only_read": true o su alias equivalente "only_view": true.

  • Protección de cálculos e integridad: Impide la manipulación manual de columnas alimentadas por sequence, cálculos de formula, estampados de snapshot o tokens de sesión en default.
  • Diferencia con block_field: Mientras que block_field está diseñado para evaluaciones condicionales complejas según el estado de otras columnas, only_read establece un bloqueo permanente y ligero a nivel de interfaz.

10. visible_in_create (Visibilidad Contextual en Creación)

Section titled “10. visible_in_create (Visibilidad Contextual en Creación)”

Regula si una propiedad debe mostrarse u ocultarse específicamente durante la fase de creación inicial de un nuevo registro (ctxFormCreate).

{
"visible_in_create": false
}
  • Al crear (ctxFormCreate): Si está en false, el campo se omite visualmente en el formulario de alta inicial, reduciendo la sobrecarga cognitiva del operador.
  • Al editar (ctxFormEdit) o consultar detalles: El campo se renderiza normalmente, permitiendo revisar folios asignados por el backend, estados calculados post-creación, firmas o fechas de resolución.
  • Diferencia con visible: La llave visible evalúa expresiones condicionales sobre datos para ambos modos (creación y edición), mientras que visible_in_create actúa como un interruptor de flujo exclusivo para la fase de alta.

LlaveTipoUso / Descripción
visible_inArrayLista explícita de vistas o modos de la interfaz donde la propiedad está habilitada (ej. ["form_create", "form_edit"]).
virtual (Deprecación planeada)ObjetoDeclara que la propiedad es virtual y no genera columna física en la tabla de PostgreSQL ({ "is": true, "visible_in": [...] }). Aviso: Se planea dejar de usar esta llave en una próxima actualización.
block_fieldObjeto / ExpresiónBloquea la edición del campo en la interfaz bajo condiciones dinámicas evaluadas en tiempo real.
valid_saveObjetoRegla de validación condicional previa al guardado a nivel de campo.
max_obj_listObjetoEstablece un límite máximo de elementos hijos permitidos en una sub-tabla.

Bloque II: Llaves de Propiedad (Configuración Estructural)

Section titled “Bloque II: Llaves de Propiedad (Configuración Estructural)”

Estas llaves son requeridas para la inicialización y funcionamiento de tipos de propiedades específicos.


1. Propiedades de Colección y Selectores (Prop.array)

Section titled “1. Propiedades de Colección y Selectores (Prop.array)”

Las propiedades de tipo array representan selectores simples (Dropdown) o multiselectores basados en catálogos de opciones estandarizados.

{
"dynamic_values": {
"id_array": "c4b3a1d2-0000-0000-0000-000000000001",
"allowed_values": {
"t0c2 == 'ACTIVO'": ["OPCION_A", "OPCION_B"]
}
}
}
LlaveTipoObligatoriaDescripción
id_arrayUUID / StringSíIdentificador único del catálogo de opciones registrado en la tabla arrays de PostgreSQL. Vincula las opciones seleccionables (array_list) o valores atómicos (atomic_values).
allowed_valuesObjeto / ArrayNoRegla de restricción dinámica que limita las opciones disponibles del catálogo según el valor de otra propiedad del registro.

2. Propiedades de Lista de Objetos y Sub-tablas (Prop.objList)

Section titled “2. Propiedades de Lista de Objetos y Sub-tablas (Prop.objList)”

Las propiedades de tipo objList representan colecciones de registros secundarios (sub-tablas relacionales 1:N o N:M) embebidas dentro de la entidad principal.

{
"dynamic_values": {
"foreign_table": "table_partes_detalle",
"junction_table": "junction_ordenes_partes",
"column_show": ["t2c1", "t2c2", "t2c3"],
"sort": {
"column": "t2c1",
"ascending": true
},
"filters": [
{ "column": "t2c4", "op": "eq", "value": "ACTIVO" }
],
"inherit": {
"t2c5": "t0c1"
}
}
}
LlaveTipoObligatoriaDescripción
foreign_tableTextoSíNombre físico de la tabla foránea secundaria donde se almacenan y consultan los registros hijos del objList.
junction_tableTextoSí*Nombre de la tabla física intermedia de unión (junction) que almacena las parejas de claves primarias (id_obj_primary_table e id_obj_foreign_table). Requerida en relaciones intermedias N:M.
primary_tableTextoCondicionalNombre de la tabla del objeto primario en sub-tablas inversas, permitiendo al registro secundario acceder a la información de su objeto contenedor.
column_showArray (String[])NoLista blanca explícita de códigos de columnas de la entidad hija a mostrar. Oculta automáticamente todas las demás.
column_hideArray (String[])NoLista de códigos de columnas de la entidad hija (["t2c0", "t2c4"]) que se ocultan de forma predeterminada en la vista embebida de la sub-tabla.
sortObjetoNoDefine el criterio de ordenamiento inicial para los elementos de la sub-tabla (column, ascending).
filtersArray (ObjListFilter[])NoFiltros persistentes predefinidos para condicionar qué registros hijos se despliegan en la sub-tabla.
inheritObjetoNoMapeo de sincronización/herencia de campos desde el objeto contenedor padre hacia los ítems hijos al crearlos ({ "col_hijo": "col_padre" }).
column_filterObjetoNoRegla para filtrar dinámicamente las filas o columnas visibles de la sub-tabla en función del valor de otra propiedad del objeto primario.

Cuando la colección opera bajo una relación directa estrictamente 1 a N, el sistema detecta automáticamente la cardinalidad y oculta el botón de vincular registros existentes (“Agregar existente”). De esta manera, se restringe la interacción exclusivamente a la creación y gestión de nuevos registros dependientes.

Selección Explícita de Columnas (column_show)

Section titled “Selección Explícita de Columnas (column_show)”

El parámetro column_show define de forma positiva y explícita qué columnas de la entidad foránea se muestran en la cuadrícula de la sub-tabla o vista embebida:

{
"column_show": ["t2c1", "t2c2", "t2c5"]
}
  • Ventaja respecto a column_hide: En entidades foráneas con un número elevado de atributos, evita tener que enumerar decenas de columnas a ocultar, garantizando que solo las columnas necesarias permanezcan visibles.

Filtros Persistentes (filters / ObjListFilter)

Section titled “Filtros Persistentes (filters / ObjListFilter)”

Permite aplicar condiciones de filtrado fijas a la colección secundaria desplegada en la sub-tabla:

{
"filters": [
{
"column": "t2c4",
"op": "eq",
"value": "ACTIVO"
}
]
}
  • Campos soportados: column (código de columna foránea), op (operador relacional: "eq", "neq", "gt", "gte", "lt", "lte", "in"), y value (valor de comparación o lista de valores).

Sincroniza y precarga automáticamente valores desde las columnas del registro principal padre hacia las columnas correspondientes de las nuevas filas creadas dentro de la sub-tabla:

{
"inherit": {
"t2c5": "t0c1",
"t2c8": "t0c3"
}
}
  • Estructura: Diccionario donde cada clave corresponde al código de columna del registro hijo ("col_hijo"), y cada valor corresponde al código de columna del registro contenedor padre ("col_padre").
  • Beneficio: Elimina errores de captura y evita que el usuario tenga que seleccionar manualmente claves foráneas o contextos repetitivos (como folios, almacenes o proyectos vinculados).

3. Propiedades de Referencia (Prop.reference)

Section titled “3. Propiedades de Referencia (Prop.reference)”

Las propiedades de tipo reference almacenan identificadores foráneos (UUID) que apuntan a un único objeto de otra entidad del sistema.

{
"dynamic_values": {
"reference_table": "table_productos",
"reference_link": "t0c4"
}
}
LlaveTipoObligatoriaDescripción
reference_tableTextoSíNombre físico de la tabla destino donde reside el objeto foráneo consultado.
reference_linkTextoNoCódigo de propiedad vinculada para establecer selecciones dependientes en cascada entre referencias.
foreign_virtualObjetoNoInyección de propiedades virtuales calculadas en el modal de selección de catálogo (ReferenceSelectDialog).
filtersArrayNoFiltros dinámicos para el catálogo foráneo, compatibles con condiciones reactivas de formulario (when).

Inyección de Propiedades Virtuales (foreign_virtual)

Section titled “Inyección de Propiedades Virtuales (foreign_virtual)”

Permite inyectar columnas calculadas en tiempo real dentro del diálogo modal de selección de registros (ReferenceSelectDialog o multi_reference_view), sin necesidad de añadir columnas físicas ni persistir datos redundantes en la tabla foránea:

  • Casos de uso: Visualizar existencias disponibles en vivo mediante sum_from, precios vigentes calculados o indicadores de estado antes de confirmar la selección.

Contexto de Formulario Activo (from_form en sum_from)

Section titled “Contexto de Formulario Activo (from_form en sum_from)”

Dentro de la sección match de una agregación sum_from (en foreign_virtual o referencias), el atributo from_form vincula una columna de la tabla foránea con el valor de un campo del formulario actual:

{ "foreign": "t3c2", "from_form": "t5c2" }

Esto permite que los cálculos del modal respondan al contexto seleccionado en la cabecera del documento (por ejemplo, calcular el stock filtrado estrictamente por el almacén seleccionado en el formulario).

Filtros Condicionales Reactivos (when en filters)

Section titled “Filtros Condicionales Reactivos (when en filters)”

Permite aplicar filtros dinámicos al catálogo foráneo condicionados al estado del formulario activo:

{
"reference_table": "table_productos",
"foreign_virtual": {
"column": "v_stock_actual",
"name": "Stock Disponible",
"type": 2,
"dynamic_values": {
"virtual": { "is": true },
"sum_from": {
"table": "table_movimientos",
"column": "t3c5",
"sign_by": {
"column": "t3c4",
"positive": ["ENTRADA", "COMPRA"],
"negative": ["SALIDA", "VENTA", "MERMA"]
},
"match": [
{ "local": "id_table_productos", "foreign": "t3c1" },
{ "foreign": "t3c2", "from_form": "t5c2" }
]
}
}
},
"filters": [
{
"column": "v_stock_actual",
"op": "gt",
"value": 0,
"when": {
"column": "t5c1",
"op": "eq",
"value": "SALIDA"
}
}
]
}
  • Comportamiento reactivo: Si el tipo de movimiento (t5c1) en el formulario es "SALIDA", la condición when se cumple y el catálogo oculta productos sin existencias (v_stock_actual > 0). Si el movimiento es "ENTRADA", la condición no se cumple y el selector despliega todos los productos.

Tipo de PropiedadLlaves de Propiedad ObligatoriasLlaves de Propiedad OpcionalesLlaves Operativas Compatibles
Texto / Numérico / Fecha / BoolNingunaNingunaformula, visible, visible_in, visible_in_create, only_read, sequence, default, virtual, lookup, block_field, valid_save
Colección / Selector (array)id_arrayallowed_valuesvisible, visible_in, visible_in_create, only_read, default, block_field, valid_save
Lista de Objetos (objList)foreign_table, junction_tablecolumn_show, column_hide, sort, filters, inherit, column_filter, primary_tablevisible, visible_in, visible_in_create, max_obj_list, sum_obj_list
Referencia (reference)reference_tablereference_link, foreign_virtual, filtersvisible, visible_in, visible_in_create, only_read, default, lookup, block_field, valid_save
Virtual / Calculada (formula)Ningunavarformula, visible, visible_in, visible_in_create, only_read, snapshot, virtual, sum_from, sum_obj_list