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:
| Fila | Prefijo del título | Qué es | En el DTO |
|---|---|---|---|
| Principal | ninguno | La que se abre y guarda datos. La única que se navega. | IsBase = false, IsList = false |
| Plantilla base | Base - | 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íneas | Lista - | 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íneas | Base 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
| Dato | Qué es |
|---|---|
Label | El título. Sale en el menú y en los listados. Único en la empresa, distinguiendo mayúsculas. Mínimo 4 caracteres. |
Keyword | El 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. |
ModuleName | Vací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, Obsolete | Baja 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. |
Version | La 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.
| Columna | Rótulo en FlexHub | Qué hace |
|---|---|---|
titulo | Título | El nombre de la sección. Obligatorio. |
etiquetasingular, etiquetaplural | Etiqueta singular, Etiqueta plural | Con qué palabra el ERP escribe «Nueva factura» en vez de «Nuevo registro». En blanco, el servidor usa el título. |
etiquetaesfemenino | El nombre es femenino | Concordancia de los textos automáticos. |
descripcion | Descripción | Texto libre. |
textoprincipaletiqueta | Etiqueta del texto principal | El nombre del dato que se lee de un registro en una lista, en un desplegable o dentro de otra ficha. |
textoprincipalauto | Texto principal automático | El motor compone la frase; la etiqueta pasa a valer Referencia y se bloquea. |
nombresrepetidos | Permitir nombres repetidos | Dos registros con el mismo texto principal. Solo surte efecto en la plantilla base. |
nonuevosdirectos | Mensaje al intentar agregar una ficha | Con texto, bloquea el alta y ese texto es lo que lee el usuario. Vacío, se puede agregar. |
noeliminardatosmensaje | Mensaje al intentar eliminar una ficha | Igual, para eliminar. |
mensajenomodificar | Mensaje al intentar editar una ficha | Igual, para editar. |
obsoleto | Marcar esta sección como obsoleta | Retira la sección. Ver Retirar una sección. |
derivable | Si de esta plantilla base pueden derivar otras secciones. FlexHub no lo muestra. | |
colorhex | El color de la ventana de la sección, en hexadecimal (ColorHex en el DTO). | |
iconobase64 | El 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)conobsoletoa1o a0. - 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:
| Columna | Qué guarda |
|---|---|
id | El identificador del registro, un GUID. Clave primaria. |
nombre | El texto principal del registro. |
plantillapid | La sección a la que pertenece la fila. |
eliminado | Baja lógica: 0 activo, 1 eliminado. |
fecha | La fecha de alta del dato, en UTC (FechaAltaDato_UTC en el SDK). |
fecham | La última modificación, en UTC (FechaUltimaModificacion_UTC). |
fechaia | El índice de actividad, en UTC (FechaIndiceActividad_UTC): la marca con la que sincroniza PG Sync. Tiene índice. |
fechasyn | La fecha de sincronización, en UTC (Fechadesincronizacion_UTC). |
posicion | El orden manual de la fila. Tiene índice. |
usuarioid | El usuario que creó el dato (UsuarioCreadorDelDAto). |
ubicacion | La 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.