Campos

Los formatos de un campo de Flex, la diferencia entre formato y rol, y las propiedades que publica el servidor y muestra la ventana de un campo.

Un campo es una columna de una sección: el dato que se rellena en la ficha y la columna física de su tabla. En la Flex API es el tipo FlexObjectTypes.Fields. Un campo se define con dos decisiones: el formato (el tipo físico de la columna) y el rol (la máscara que define cómo se trata el dato).

Antes de empezar

  • Ser Administrador de la empresa. Los campos se crean y se colocan en Diseñando la ficha; su ficha se explica en La ficha de un campo.
  • El formato y el rol se eligen al crear y no se cambian: los dos determinan el tipo de la columna. Para cambiarlos hay que borrar el campo y crear otro.

El formato

El formato es el enum FieldFormatE del SDK.

ValorFieldFormatERótuloQué guarda
1BOOLSí/NoUna casilla marcada o no.
2INTEnteroUn número sin decimales.
3DECDecimalUn número con decimales.
5STRTextoUna línea de texto. El rol recorta la longitud (60 caracteres con Email, 100 con Web).
6DateAndTimeFecha y horaUn instante, en UTC. La ficha lo muestra en la zona horaria del usuario.
7DATEFechaUn día, sin hora.
8TIMEHoraUna hora del día, sin fecha.
9GuidRelaciónEl identificador de una ficha de otra sección. Exige la sección de destino.
11virtualBotónUn campo que no crea columna: un botón o un contenedor de la ficha.

Un campo Entero se crea con el control de tamaño estándar, o pequeño si su rol es un enum o Año.

Un campo de archivo o de imagen es una relación a la tabla de imágenes con un identificador fijo; no se crea desde FlexHub.

Formato y rol

El rol es el enum RoleFieldE del SDK. Con formato Texto y rol Email el campo valida y muestra un correo; con formato Decimal y rol Moneda, un importe. FlexHub ofrece 22 combinaciones preparadas en la ventana ¿Qué tipo de campo?, que abre cada fila de Nuevos campos en el diseñador; el catálogo entero está en Roles de campo.

Al crear con el SDK, Flex_CreateObjectAsync(FlexObjectTypes.Fields, sectionId, patch) recibe el formato, el rol y, en un contenedor, el renderizado en el mismo patch. El servidor también admite la posición, el tamaño, la pestaña y si es obligatorio.

Cada alta consolida el esquema y tarda unos 11 segundos. Con la clave consolidar a 0 en el patch, el servidor crea el campo sin consolidar: la columna existe, pero el campo no sale en la ficha ni admite ediciones hasta la siguiente consolidación. Crea así todos los campos y llama una vez a Flex_ConsolidateAsync. El diseñador de FlexHub crea así los campos de Nuevos campos.

Identidad

La ventana de un campo en FlexHub abre con la Etiqueta a lo ancho, encima de las pestañas, y debajo el Nombre interno. Las dos notas están en la card Ayudas de la pestaña General.

ColumnaRótulo en FlexHubQué es
etiquetaEtiquetaLo que lee el usuario. Obligatoria, mínimo 3 caracteres. Cambiarla cambia la palabra clave del campo.
informacionAyuda para quien lo rellenaTexto de ayuda en la ficha.
infodevNota para quien lo programaNota interna.

El servidor rechaza las etiquetas reservadas del motor: destinador, autor del alta, empleado principal, contenedor-listado, exportar en módulos, fecha del dato, fecha de alta y hora local. Son los valores de CampoEspecialE.

Comportamiento

Las columnas que publica Flex_GetEditablesAsync(FlexObjectTypes.Fields) y su enum, cuando lo tienen. En FlexHub están en la pestaña En la ficha: las cuatro primeras en su primera card y los bloqueos en la card Quién puede escribirlo.

ColumnaRótulo en FlexHubValores
visibleSe ve en la fichaSí/No. Oculto, la ficha no lo muestra nunca.
obligatorioHay que rellenarloSí/No. No deja guardar la ficha vacío.
rendertypeCómo se muestraRenderizadoEspecialCampoE: Genérico (0), Pequeño (1), Sí/No (2), Gigante (3), Desplegable (4), Desplegable no editable (5), Contenedor (6), Texto (7), Botón (8), Botón pequeño (9), Botón gigante (10), Contenedor de Archivo (11).
validadoreQué se validaCriterioValidacionCampoE: Cualquier valor numérico (0), Mayores que 0 (1), Menores que 0 (2), Positivos o 0 (3), Negativos o 0 (4), Diferente de 0 (5).
serverlockeBloqueo en el servidorCriterioBloqueoCampoServerE: Nunca (0), Ediciones (1), Si está rellenado (2), Si está vacío (3).
lockrestBloqueo por la API RESTCriterioBloqueoRestE: Automático (0), Bloquear al Agregar (1), Bloquear al Editar (2), Bloquear Siempre (3), Nunca (4).
bloqueoeBloqueado, en el menú del campo del diseñadorCriteroBloqueoCampoE: Nunca (0), Siempre (1), Ediciones (2), Si está rellenado (3), Si se ha agregado al listado (4). El diseñador pasa de Nunca a Siempre y al revés. La ventana del campo no lo muestra.
indxSí/No. El índice en la base de datos. Cambiarlo exige consolidar. FlexHub no lo muestra.

Los tres bloqueos actúan en sitios distintos: la ficha (bloqueoe), el servidor al escribir cualquier registro (serverlocke) y la API REST (lockrest). Un bloqueo del servidor con Ediciones impide cambiar el valor una vez creado el registro; con Si está rellenado, solo cuando ya tiene valor.

Dónde sale en la ficha

La geometría viaja en las columnas pestana, pestanaorden, posicionx, posiciony, ancho, alto, etiquetaizquierda y etiquetaizquierdaancho. Se cambian arrastrando en Diseñando la ficha, o en lote con Flex_ApplyLayoutAsync, que escribe todo o nada. La ficha mide 1018 px de ancho. En la ventana de un campo, la card Dónde sale el campo de la pestaña En la ficha lleva al diseñador con Abrir el Diseñador.

Qué guarda

La card Qué guarda de la pestaña General muestra lo que define el campo. Todo es de solo lectura menos la sección a la que apunta una relación: cambiar el resto convertiría el campo en otro.

DatoColumnaQué es
Tipo de datoformatoEl formato.
Enteros y decimalesdecimalescalcSolo en un decimal.
Apunta a la secciónrelaciontablaSolo en una relación. Siempre una sección principal: ni plantillas base ni tablas de líneas. Se puede cambiar.
Valor únicoesuniqueSi el valor no se repite en dos fichas.
SecciónLa ficha de la que es el campo.
Campo basecampobaseidSolo en el campo de una sección derivada. Abrir lo edita en otra ventana: ahí se cambia lo que se decide en la base, como Confidencial.

Cambiar la sección a la que apunta

Elige la sección nueva en Apunta a la sección, pulsa Aceptar y después Consolidar ahora. Consolidar rehace los informes que pasan por el campo.

  • Los registros que ya tienen el campo relleno no se convierten: siguen apuntando a fichas de la sección anterior.
  • En el campo de la sección base, el cambio pasa al mismo campo en todas sus derivadas.
  • En una derivada solo se puede elegir la sección a la que apunta el campo base o una derivada de ella. Para apuntar a otra, cambia el campo en la sección base.
  • Los campos del sistema y los de archivo o imagen no cambian de sección.

Lo que administra el motor

Estas columnas llegan en Values y FlexHub no las muestra:

ColumnaQué es
idEl GUID del campo.
nombrecampoEl nombre de la columna, pr_ seguido de un número.
campobaseidEl campo de la plantilla base del que hereda.
tcCampoEspecialE. Personalizado (1) es lo normal. Los demás son los campos que el motor reserva: Autor Del Alta (3), Destinación Destinador (4), Contenedor Listado (8), Empleado Principal (10), Criterio exportación (12), Fecha Dato (13), Fecha Alta (14), Hora local (15).
tfDedicatedFunctionalityE en el SDK. Ordinaria (0) es lo normal. El resto marca el papel del campo en una transacción o en la cotización de un documento de compra-venta. Los de la API: API - ID Externa (Principal) (23), API - Versión Externa (24) y API - ID Externa (Relación) (25).

El Nombre interno, debajo de la etiqueta en FlexHub, es con el que se lee y escribe el campo desde un script: C. seguido del nombre. La Flex API no publica quién creó un campo ni cuándo.

Relaciones

Un campo de formato Relación guarda el id de una ficha de la sección de destino. Con relaciones se navega de una factura a su cliente. Un algoritmo de tipo Relacionado agrega las líneas de un documento, y un informe cruza datos de varias secciones. En un script, el campo se lee con C. seguido de su nombre interno, y una relación se recorre encadenando el nombre interno del campo de la ficha de destino, un nivel. Ver Scripts.

Siguiente: Roles de campo.

En esta página