Crear documento dinámico

Da de alta un documento en FlexHub, añade una pregunta de texto y escribe su respuesta en la página con el primer bloque de DinaScript.

El documento más pequeño posible: una página que escribe «Hola» y el texto que responde quien lo abre. Sirve para ver dónde va cada pieza antes de copiar una plantilla real.

Antes de empezar

  • Acceso a FlexHub → Documentos en Play. Cada pestaña de la ventana está descrita en Documentos.
  • Una sección desde la que se imprime. Este ejemplo no lee ningún campo de ella.

Las plantillas

Un documento nuevo se crea a partir de una plantilla. La ventana Nuevo documento las ofrece en tres grupos, con Impresión marcada por defecto:

GrupoPlantillaContenido de partida
Para imprimirImpresiónUna hoja A4 con la cabecera de la empresa, el cuerpo y el pie con la fecha.
Para imprimirFacturaLa hoja anterior con emisor y cliente, tabla de conceptos y totales con IVA.
Para enviarPlantilla de correoEl cuerpo de un email, con el asunto y el destinatario en los metadatos.
Para enviarDocumento para firmarUn contrato con su bloque de firmas y el metadato que lo envía a Dinaup Sign.
Empezar de ceroJSON + VueSolo la cabecera de bibliotecas: jQuery, Vue, Bootstrap y el div#app.
Empezar de ceroDocumento en blancoEl esqueleto HTML mínimo que escribe el servidor. Sin nada dentro.

Todas crean el mismo tipo de documento: la plantilla solo cambia el contenido de partida. Mientras el documento no se ha creado, Cambiar plantilla, junto al editor de Contenido, vuelve a abrir la lista y sustituye lo escrito.

Crea el documento

Nuevo

En FlexHub → Documentos, o en Contenido → Documentos dentro de la ventana de la sección, pulsa Nuevo. En Nuevo documento elige Documento en blanco. Si has entrado desde FlexHub → Documentos, la ventana siguiente pide la sección de la que se imprime el documento.

Nombre y categoría

La ventana del documento abre en la pestaña General. Escribe el Nombre encima de las pestañas (mínimo 3 caracteres) y deja la Categoría en Documentos. La casilla Se imprime viene marcada: con ella, el documento sale en el menú de impresión de la ficha. Pulsa Aceptar: el servidor crea el documento en unos 11 segundos y la ventana se cierra.

Una pregunta de texto

Abre el documento con Editar en su fila: la pestaña Preguntas sale con el documento ya creado. Ya hay una, de tipo Relación: el servidor la pone al crear y apunta a la sección. El documento no se puede quedar sin una pregunta de tipo Relación, porque es la que dice de qué sección se imprime.

Pulsa Añadir pregunta y escribe la Etiqueta «Nombre». La Keyword se rellena sola con Nombre: es como la llama el código, v.nombre, y una vez guardada no se cambia. Elige Texto en Tipo de respuesta y pulsa Aceptar. La tarjeta es la misma que en los informes.

El contenido

En la pestaña Contenido, sustituye el HTML de partida por este cuerpo. El código va entre <!--: y :--> y la pregunta se lee con el prefijo v.:

<!doctype html>
<html>
<body>
  <p>Hola <!--: F.WriteText(v.nombre) :--></p>
</body>
</html>

El editor comprueba el código medio segundo después de dejar de escribir. Pulsa Aceptar: nombre, contenido y preguntas se guardan a la vez.

El editor de Contenido

BotónQué hace
AyudaAbre Ayuda del editor de documentos: la forma de cada línea, las funciones del motor y los datos de la sección, para pegarlos en el cursor.
MetadatosAbre la misma ayuda en su pestaña Metadatos: las claves para enviar por correo o enviar a firmar, listas para pegar.
ComprobarComprueba los bloques de código sin guardar nada.
Cambiar plantillaSolo antes de crear el documento. Sustituye el contenido por el de otra plantilla.
ReleerSolo con el documento creado. Lo vuelve a leer del servidor.

Los fallos salen en el panel de debajo del editor: al pulsar uno, el cursor salta a su línea. El botón del final de la barra de estado pone el editor en pantalla completa; se vuelve con Esc o con el mismo botón.

Ejecuta el documento

Desde la ficha de un registro de la sección, el documento aparece en el menú de impresión y abre el visor con las preguntas por responder.

Por la API pública, con una clave API y la URL de tu empresa, la de Tu endpoint base en Desarrollo → Inicio:

curl -X POST "https://<clave-de-conexion>.dinaup.io/api/dynamicdocuments?id=<id-del-documento>" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{ "<pregunta-de-la-seccion>": "<id-del-registro>", "nombre": "Ana" }'

El cuerpo es un diccionario clave: valor con una respuesta por pregunta; la clave es su nombre interno, sin v.. El de la primera pregunta sale de la etiqueta singular de la sección, sin espacios: «Pedido de venta» da PedidoDeVenta. La respuesta es 200 con el documento como texto. Si falta la respuesta de alguna pregunta, el documento no se ejecuta: el cuerpo llega vacío y, en el SDK, Status vale 3. Un id que no es GUID devuelve 400.

Desde el SDK .NET:

var respuesta = await client.DynamicDocuments_ExecuteAsync(
    "<id-del-documento>",
    new Dictionary<string, string> { ["<pregunta-de-la-seccion>"] = "<id-del-registro>", ["nombre"] = "Ana" });

string html = respuesta.Content;
string fichero = respuesta.FileName;

DynamicDocumentsGetResponse trae Content (el HTML), Name, FileName, Status, URL y Metadata.

Siguiente: Mostrar e imprimir. Plantilla completa: Plantilla de impresión de facturas.

En esta página