Secciones

Qué es una sección de Flex, las cuatro filas de su familia, las columnas que el motor pone en toda tabla y sus propiedades.

Una sección es una tabla de datos de la empresa: clientes, facturas, vehículos, expedientes. Cada registro de la sección es una fila; cada campo es una columna. En la Flex API es el tipo FlexObjectTypes.Sections.

Antes de empezar

  • Ser Administrador de la empresa para crear o cambiar secciones. Ver FlexHub.
  • Una sección de un módulo de fuera se lee pero no se cambia. Lo que sí se cambia: lo propio y, en una licencia de desarrollo, lo del módulo que desarrolla. Ver Dinaup Flex.

La familia de una sección

Una sección está formada por cuatro filas de la estructura. Al crear Artículos, el servidor crea estas cuatro:

FilaPrefijo del títuloQué esEn el DTO
PrincipalningunoLa que se abre y guarda datos. La única que se navega.IsBase = false, IsList = false
Plantilla baseBase - Sus campos los heredan las secciones que derivan de ella. No guarda datos.IsBase = true; la principal apunta a ella en BaseSectionId
Tabla de líneasLista - Las filas que dependen de un registro de la principal (las líneas de una factura).IsList = true; la principal apunta a ella en ListSectionId
Base de la tabla de líneasBase Lista - La plantilla base de la tabla de líneas.IsBase = true, IsList = true

Los prefijos los pone el servidor: un título que empiece por Base - , Lista - , EDU - , Base Lista - , Base EDU - o Base Lista EDU - se rechaza al crear. El vínculo entre las filas son las columnas BaseSectionId y ListSectionId de FlexObjectLiteDTO, no el texto del nombre.

Una tabla de líneas solo se usa si su sección principal tiene activada la columna contienelista. Un campo de formato Relación solo puede apuntar a una sección principal: el motor rechaza apuntar a una plantilla base o a una tabla de líneas.

Nombre, palabra clave y origen

DatoQué es
LabelEl título. Sale en el menú y en los listados. Único en la empresa, distinguiendo mayúsculas. Mínimo 4 caracteres.
KeywordEl nombre interno. Con él llaman a la sección el SDK, los scripts y las integraciones. Renombrar cambia la palabra clave: lo que invoque el nombre viejo deja de encontrarla.
ModuleNameVacío si la sección la ha creado esta empresa. Con texto, el módulo que la trae y la sobrescribe en cada actualización.
Deleted, ObsoleteBaja lógica y marca de no usar. Una sección no se borra ni se restaura por la Flex API: Flex_DeleteObjectAsync y Flex_UndeleteObjectAsync la rechazan. Lo que sí se hace es retirarla: ver Retirar una sección.
VersionLa versión de la fila. Se reenvía al guardar para que el servidor rechace la escritura si alguien tocó la fila entre la lectura y el guardado.

Propiedades que publica el servidor

Las columnas editables de una sección las publica Flex_GetEditablesAsync(FlexObjectTypes.Sections). En la ventana de FlexHub, el Título va encima de las pestañas. Identidad, Parámetros y Retirar la sección son cards de la pestaña General, y los tres mensajes están en la pestaña Bloqueos.

ColumnaRótulo en FlexHubQué hace
tituloTítuloEl nombre de la sección. Obligatorio.
etiquetasingular, etiquetapluralEtiqueta singular, Etiqueta pluralCon qué palabra el ERP escribe «Nueva factura» en vez de «Nuevo registro». En blanco, el servidor usa el título.
etiquetaesfemeninoEl nombre es femeninoConcordancia de los textos automáticos.
descripcionDescripciónTexto libre.
textoprincipaletiquetaEtiqueta del texto principalEl nombre del dato que se lee de un registro en una lista, en un desplegable o dentro de otra ficha.
textoprincipalautoTexto principal automáticoEl motor compone la frase; la etiqueta pasa a valer Referencia y se bloquea.
nombresrepetidosPermitir nombres repetidosDos registros con el mismo texto principal. Solo surte efecto en la plantilla base.
nonuevosdirectosMensaje al intentar agregar una fichaCon texto, bloquea el alta y ese texto es lo que lee el usuario. Vacío, se puede agregar.
noeliminardatosmensajeMensaje al intentar eliminar una fichaIgual, para eliminar.
mensajenomodificarMensaje al intentar editar una fichaIgual, para editar.
obsoletoMarcar esta sección como obsoletaRetira la sección. Ver Retirar una sección.
derivableSi de esta plantilla base pueden derivar otras secciones. FlexHub no lo muestra.
colorhexEl color de la ventana de la sección, en hexadecimal (ColorHex en el DTO).
iconobase64El identificador del icono de la sección (IconId en el DTO). FlexHub no lo escribe: ver El icono.

categoria y subcategoria no existen en una sección: en FlexObjectLiteDTO llegan vacías, y eso significa que este tipo no se archiva por categoría.

Los mensajes de bloqueo sirven para cerrar una sección que se rellena desde un script o una integración. En una sección cuyos datos administra el motor, dejar en blanco uno de los tres no abre la acción: al consolidar, el servidor vuelve a poner el suyo.

Retirar una sección

Retirar es marcar la sección como obsoleta, con la columna obsoleto. Una sección obsoleta no sale en el menú, no aparece en la API y no se le crean índices nuevos. Sus datos siguen ahí y se pueden consultar. En una plantilla base, sus derivadas también quedan obsoletas.

  • En FlexHub, en la card Retirar la sección de la pestaña General, marca Marcar esta sección como obsoleta y pulsa Aceptar. Desmarcarlo la vuelve a ofrecer. Si el servidor de la empresa no publica obsoleto, la card no sale.
  • Por la Flex API, Flex_UpdateObjectAsync(FlexObjectTypes.Sections, id, patch) con obsoleto a 1 o a 0.
  • En una tabla de líneas se rechaza: se retira retirando la sección que la lista.

Retirar no es eliminar. Eliminar una sección borra sus tablas, y la Flex API no lo hace.

El icono

El icono de la cabecera de la ventana de una sección se cambia pulsándolo. Solo se ofrece con la sección ya creada, si es tuya (propia o del módulo que desarrollas) y si no está bloqueada. La imagen se publica en el CDN de Dinaup con el identificador de la sección; no pasa por iconobase64. La ventana del icono está en El icono de una sección.

Las columnas que pone el motor

Aparte de los campos que se definen, el motor garantiza estas columnas en toda sección y en su tabla de líneas:

ColumnaQué guarda
idEl identificador del registro, un GUID. Clave primaria.
nombreEl texto principal del registro.
plantillapidLa sección a la que pertenece la fila.
eliminadoBaja lógica: 0 activo, 1 eliminado.
fechaLa fecha de alta del dato, en UTC (FechaAltaDato_UTC en el SDK).
fechamLa última modificación, en UTC (FechaUltimaModificacion_UTC).
fechaiaEl índice de actividad, en UTC (FechaIndiceActividad_UTC): la marca con la que sincroniza PG Sync. Tiene índice.
fechasynLa fecha de sincronización, en UTC (Fechadesincronizacion_UTC).
posicionEl orden manual de la fila. Tiene índice.
usuarioidEl usuario que creó el dato (UsuarioCreadorDelDAto).
ubicacionLa empresa a la que pertenece la fila (Empresa).

El SDK expone estos nombres como constantes de ParametrosDeConfiguracionDeAplicacionesD. Al escribir con ToWriteOperation(), DinaupRowBase quita fecha, fecham, fechaia, fechasyn, modificado, eliminado, usuarioid y ubicacionid del diccionario: las pone el servidor.

Estas columnas se piden por su nombre en los filtros y en el orden de POST /api/reports. Ver Referencia de la API REST.

Crear una sección o un campo consolida el esquema de toda la empresa y tarda unos 11 segundos. Mientras dura, nadie puede cambiar la estructura. Para crear varios campos seguidos, envíalos con consolidar a 0 y consolida una vez al final con Flex_ConsolidateAsync. En una edición, FlexEditableDTO.NeedsConsolidation dice qué columnas lo exigen.

Cómo se crea y se consulta

  • Desde Play: Crear una sección. El servidor crea las cuatro filas de la familia y FlexHub abre la ventana de la sección nueva en General. Al abrir una sección desde su tarjeta, la ventana entra por Contenido → Campos.
  • Desde el SDK: Flex_CreateObjectAsync(FlexObjectTypes.Sections, ...) con el patch de columnas. Ver Cliente Dinaup.
  • Para leer el esquema publicado, con secciones, campos y relaciones: Esquema.
  • Las secciones que trae toda instalación: Secciones del núcleo.

Siguiente: Campos.

En esta página