# Emitir etiquetas y reportes

> Qué emite una corrida en el Arranque y en la Finalización, en qué orden, por qué cola, qué queda congelado en el archivo de la corrida, y cómo se graba cada entrega.

Una corrida emite sus documentos a través de las **acciones** de su modelo: grupos con nombre de
comandos, cada comando emitiendo una etiqueta o un reporte en el Arranque de la corrida o en su
Finalización, declarados en Preparación > [Acciones](process-actions) y seleccionados por el
[procedimiento](process-procedures) como grupos enteros. Las plantillas con las que renderizan los
comandos son las dos bibliotecas de esta raíz: el diseño de un comando de reporte viene de
[Reportes](process-reports), el archivo de un comando de etiqueta de [Etiquetas](process-labels).
Esta página es lo que pasa en cuanto una corrida llega a un límite.

## Los dos límites {#the-two-boundaries}

En un límite los comandos disparan en el orden de la lista del modelo entre los grupos
seleccionados y, dentro de cada grupo, en su propio orden, las etiquetas antes que los reportes. Cada
comando está aislado: una plantilla que falta, una composición que lanza un error o una cola que
rechaza quedan en el diario, no cambian nada de la corrida y nunca detienen a los comandos que van
detrás.

| Límite | Cuándo | Qué está disponible | Qué se emite |
| --- | --- | --- | --- |
| Arranque | En cuanto la corrida se materializa, después de reservar los contadores secuenciales y escribir los metadatos; la corrida ya está grabando mientras los documentos se componen, a través del propio archivo abierto de la corrida. | La identidad de la corrida, los metadatos, el instante de arranque y el estado En marcha. | Todo comando de etiqueta con el disparador Arranque; todo comando de reporte con el disparador Arranque y un diseño: una hoja de ruta en la que las secciones sin evidencia todavía se dejan fuera y la fila Receta imprime la receta planeada. |
| Finalización | Después de sellar el estado terminal y la instantánea de la corrida y de soltar la unidad; primero las etiquetas, y los reportes en segundo plano justo después. | Todo lo del Arranque más el instante de fin, la duración, el estado terminal, el veredicto, el motivo de terminación y los criterios juzgados. | Todo comando de etiqueta y de reporte con el disparador Finalización cuyo filtro de veredictos admita el veredicto de la corrida. |

El filtro de veredictos (OK, NOK, Indeterminado, Sin veredicto) se lee solo en la Finalización; en el
Arranque todavía no hay veredicto. Una corrida que terminó Fallida no tiene instantánea terminal: sus
etiquetas de finalización graban un artefacto fallido y no se publica ningún reporte de finalización.
Un comando de reporte cuyo diseño se eliminó, y un comando de reporte sin diseño, no publican nada.
Reiniciar la aplicación nunca repite los documentos de Arranque: una corrida reanudada después de un
reinicio lleva los artefactos que ya emitió.

## Reportes {#reports}

Un comando de reporte con un diseño publica su PDF en su límite pase lo que pase con lo demás que
haya pedido. El archivo se nombra con la base de exportación de la corrida más el nombre del grupo
(`<base> - <group>.pdf`), así que la hoja de ruta y el reporte de cierre de una misma corrida quedan
uno al lado del otro; dos grupos cuyos nombres caerían en el mismo archivo se distinguen por la
identidad del comando. Un renderizado posterior del mismo comando reemplaza el documento de ese
comando y nada más. Las dos opciones del comando deciden qué pasa con el documento:

| Opción | Efecto |
| --- | --- |
| Imprimir automáticamente | El PDF publicado se manda además a la cola de reportes en vigor para la unidad en ese límite. Una unidad sin cola en esa ranura graba el intento como fallido ("No hay ninguna cola de impresión configurada para esta acción en la Unidad."). |
| Conservar una copia dentro de la corrida | El PDF terminado se guarda en el archivo de la corrida, así que un reenvío posterior manda esos bytes exactos incluso después de que el diseño se edite o se elimine, o de que el archivo publicado lo reemplace un renderizado posterior. La corrida lleva entonces el tamaño del documento. |

Un comando que pidió cualquiera de las dos registra el documento en la corrida (el registro que
Históricos lista en **Reporte**); un comando que no pidió ninguna publica el archivo y no registra
nada, porque generar es una exportación del archivo de la corrida y nunca una escritura en él.

## Etiquetas {#labels}

Un comando de etiqueta renderiza su plantilla con una fuente por marcador. En el Arranque resuelven
solo las fuentes confirmadas en el Arranque aceptado: los metadatos, el nombre y la revisión del
modelo, el nombre y el código de la unidad, el nombre y el código del procedimiento, el identificador
de la corrida, el instante de arranque y el estado de la corrida; un marcador asignado a cualquier
otra cosa rechaza la etiqueta de Arranque ("El marcador '{{RESULT}}' no está disponible cuando
arranca una corrida."). En la Finalización resuelve el catálogo entero, el resultado de un criterio
por su identidad estable y un ciclo explícito (un ciclo que falta nunca significa "el último").

Toda generación anexa primero un **artefacto** inmutable al archivo de la corrida: los bytes finales
del comando, el nombre de la plantilla, su archivo de origen y el hash de su contenido, el nombre del
grupo, el disparador, los valores resueltos con sus fuentes, o el motivo por el que no se pudo generar
ningún comando. Después los bytes van a la cola de etiquetas en vigor para la unidad en ese límite
como un documento RAW llamado `Ganter Lab · <group>`. Una unidad sin cola en esa ranura graba un
intento fallido ("No hay ninguna cola de impresión configurada para esta etiqueta en la Unidad."); una
plantilla que ya no está graba "Falta la plantilla de etiqueta configurada.". Todo intento de entrega
se anexa al artefacto: **Enviando** antes de llamar al administrador de trabajos, y después **Enviado
a la cola** o **Fallido**; un intento en cuya mitad se detuvo la aplicación se queda como **Envío
incierto** y nunca se reintenta automáticamente, porque la impresora puede haber producido ya la
etiqueta. "Enviado a la cola" confirma que Windows aceptó la carga, no que haya salido papel.

## Impresoras {#printers}

En qué cola aterriza un documento se decide en Definición > [Impresoras](process-printers): el modelo
declara cuatro ranuras predeterminadas, una por combinación de qué se emite y cuándo (etiqueta o
reporte, en el Arranque o en la Finalización), y cada unidad sigue las cuatro del modelo o conserva
cuatro propias. Un comando resuelve su destino por su propia clase y su disparador, a través del
modelo para una unidad que lo sigue y a través de las ranuras de la unidad para una separada, así que
un grupo que comparten dos procedimientos imprime por un solo destino elegido una vez. Las colas son
las colas de impresión de Windows instaladas para el usuario con el que corre la estación; una
etiqueta sale como bytes RAW, un reporte se rasteriza y se dibuja sobre el dispositivo, así que una
impresora de documentos común sirve para los reportes y una impresora de etiquetas para las etiquetas.

## Después {#afterwards}

Todo lo que emitió una corrida se lee en su registro en Históricos ([Etiquetas y
reportes](histories-documents)): los artefactos, los registros y cada intento con su estado. Ahí el
par de gestos es el mismo para los dos medios: un documento **nuevo** a partir de la evidencia
congelada de la corrida (una etiqueta nueva con un comando configurado o una plantilla asignada a
mano, un PDF nuevo con cualquier diseño), y la **reemisión** de uno grabado (una reimpresión de los
bytes congelados de un artefacto, un reenvío del PDF registrado), que no vuelve a resolver nada.

## Qué no hace la emisión {#what-emission-does-not-do}

Nunca lee un valor en vivo: una etiqueta resuelve solo lo que congeló el archivo de la corrida, y un
reporte renderiza solo a partir del archivo. Nunca cambia una corrida: la falla de un documento deja
el veredicto, el estado y el archivo exactamente como estaban. Nunca confirma la impresión. Y nunca
emite para una instantánea ni para una corrida de evaluar ahora, que no llevan procedimiento ni
acciones.
