Documentos dinámicos
Qué es un documento dinámico de Flex, los cinco tipos que distingue el servidor, sus preguntas, su código y por dónde sale el resultado.
Un documento dinámico es una plantilla HTML, JSON o XML con bloques de DinaScript entre <!--: y :-->. El servidor ejecuta el código con los datos de un registro y devuelve el texto ya relleno.
Antes de empezar
- Licencia con Flex y acceso a FlexHub → Documentos en Play. Las pantallas están en Documentos.
- Una sección desde la que se imprime: la primera pregunta de tipo Relación apunta a ella y no se puede cambiar después.
Las piezas
| Pieza | Qué es | Dónde se edita |
|---|---|---|
| Contenido | El HTML con los bloques <!--: ... :-->. Fuera de las marcas, el texto sale tal cual; dentro va DinaScript. | Pestaña Contenido |
| Preguntas | Las variables que el documento pide antes de ejecutarse. En el código se leen con v.: la pregunta factura es v.Factura. | Pestaña Preguntas |
| Metadatos | Claves que el código fija con F.MetaData_Set(clave, valor) y que el visor lee al terminar: nombre del fichero, correo, firma. | Código |
| Nombre, categoría y Se imprime | Los datos de archivo. Sin categoría el documento no aparece en el menú de impresión de la ficha. | El Nombre, encima de las pestañas; el resto, en la pestaña General |
<!--: F.MetaData_Set('titulo', F.Concat('Factura ', v.Factura.NumeroDeFacturaCompleto)) :-->
<!doctype html>
<html>
<body>
<h1><!--: F.Write(v.Factura.NumeroDeFacturaCompleto) :--></h1>
<p><!--: F.WriteText(v.Factura.DenominacionRazonSocialCliente) :--></p>
</body>
</html>Tipos
FlexHub crea los documentos como Documento - Libre y no ofrece cambiar el tipo desde su ventana. Por la Flex API, la clave tipodoc del alta elige otro.
| Valor | Nombre | Qué produce |
|---|---|---|
| 1 | Diseño Informe | El diseño de impresión de un informe. |
| 3 | API Lectura - Libre | Datos para otro sistema, en JSON o XML, sin escribir en el ERP. |
| 5 | API Escritura | Un documento que recibe datos y crea o modifica registros. |
| 7 | Documento - Libre | Una página HTML: impresión, correo, firma o panel. Es el tipo por defecto. |
| 8 | Documento - Contable | Documentos con acceso a las funciones de contabilidad. |
La casilla Se imprime (Es_Impresion) determina si el documento sale en el menú de impresión de la ficha. La API la devuelve como esimpresion.
Por dónde sale el resultado
| Salida | Cómo | Página |
|---|---|---|
| El visor de Play | Menú de impresión de la ficha. Botones Imprimir, Enviar por email o Enviar a firmar y Cerrar. | Mostrar e imprimir |
| Correo | Los metadatos email_* rellenan la vista previa del correo. Con email_body el documento viaja como PDF adjunto. | Envío de emails |
| Firma | email_sign cambia el botón de correo por Enviar a firmar y propone los firmantes. | Documentos para firmar |
| API pública | POST /api/dynamicdocuments?id=<guid> con las respuestas en el cuerpo JSON. | API REST |
| SDK .NET | DynamicDocuments_ExecuteAsync(documentId, params) devuelve DynamicDocumentsGetResponse con Content, Name y Metadata. | SDK .NET |
La API REST devuelve el documento como texto. El SDK recibe además Name (el metadato titulo), Metadata (todas las claves fijadas con F.MetaData_Set) y Status.
Metadatos que lee el servidor
| Clave | Efecto |
|---|---|
titulo | Nombre del fichero. El SDK lo devuelve en Name, y el visor lo usa para el PDF si no hay email_attachment_name. |
enurl | Con 1, el servidor sube el resultado a un fichero temporal y devuelve su URL en vez del contenido. |
seguridad_ip, seguridad_ip1 a seguridad_ip100 | Lista de IP autorizadas. Con alguna rellena, cualquier otra IP recibe 401. |
seguridad_encriptacion | Clave AES. El contenido vuelve cifrado y en Base64. |
email_* | Correo y firma. Tabla completa en Envío de emails. |
Por dónde empezar
Crea el documento
Crear documento dinámico: alta, una pregunta y un F.Write.
Copia una plantilla real
Ejemplos: la factura y el libro registro que trae DemoUp.
Rellena los metadatos
Fija titulo y las claves email_* para que el visor tenga el nombre del PDF, el destinatario y el asunto.
Siguiente: Crear documento dinámico. Pantallas: FlexHub → Documentos.