# Exportar una corrida

> Las copias portables y el PDF generado de una corrida: qué necesita cada verbo, cómo se nombran los archivos y qué contienen exactamente un CSV, un XLSX, un GLAB y un PDF.

La tira que encabeza la corrida abierta lleva primero las copias portables y después los
documentos generados ([El registro de la corrida](histories-record#the-strip)). Los cuatro
verbos de abajo exigen el permiso **Exportar/importar históricos**, y los cuatro son
lecturas del archivo de la corrida: siguen disponibles mientras el runtime está detenido y
mientras una unidad graba, y ninguno escribe nada en la corrida.

La tira lleva un quinto verbo, **Etiqueta nueva**, que no es ni una exportación ni una
lectura: emite una etiqueta en la corrida y queda grabada ahí como evidencia de ello, así que
exige **Ejecutar procedimientos** en vez del permiso de exportación y se describe con los
documentos a los que pertenece ([Etiquetas y reportes](histories-documents)).

| Verbo | Produce | Disponible para | Aterriza |
| --- | --- | --- | --- |
| Exportar CSV | El datalog en bruto como texto. | Cualquier corrida, incluida una que sigue grabando. | Una descarga del navegador, también en la ventana propia de la estación ("Exportado CSV · archivo"). |
| Exportar XLSX | Un libro de Excel con la identidad de la corrida, los metadatos y el datalog tipado. | Cualquier corrida, incluida una que sigue grabando; una corrida que todavía no ha grabado nada responde "La corrida todavía no tiene instantánea de encabezado. Inténtelo de nuevo en un momento." | Una descarga del navegador ("Exportado XLSX · archivo"). |
| Exportar GLAB | La corrida entera como un archivo `.glab` portable que otra estación puede importar. | Solo corridas Completadas, Abortadas o Fallidas. | Una descarga del navegador ("GLAB exportado · archivo (tamaño)"). |
| Generar PDF | Un PDF de reporte nuevo compuesto a partir de la corrida entera con el diseño que elige el selector. | Cualquier corrida que haya terminado de grabar. | La carpeta de reportes de la raíz de datos, y después se abre. |

Una exportación CSV o XLSX a mitad de corrida es una copia parcial coherente: el encabezado
congelado se escribe cuando la corrida arranca, así que la exportación lleva el conjunto
completo de columnas y las filas grabadas hasta ese momento, leídas a través de la grabación
en curso y no de una segunda conexión al archivo. Todas las fechas y horas de una
exportación siguen el formato configurado en [Ajustes](settings-localization), y cada
archivo declara la referencia en la que se leen sus marcas: "UTC" o "UTC±hh:mm", el desfase
de la estación en el momento de exportar.

## Nombres de archivo {#file-names}

CSV, XLSX, GLAB y PDF comparten un nombre base por corrida: el instante de arranque en el
formato de fecha y hora de la estación con los separadores hechos seguros para archivo, y
después los nombres del modelo, la unidad y el procedimiento ("02-09-2026 14-05-30 - Cámara
climática - Unidad 1 - Prueba de meseta"), cada parte acortada a 48 caracteres y limpiada de
los caracteres que Windows rechaza. La base queda reservada de forma persistente, así que
exportar la misma corrida varias veces conserva el mismo nombre entre reinicios, y solo una
corrida distinta que fuera a caer en el mismo nombre recibe un sufijo corto sacado de su
identidad. Un reporte emitido por una acción agrega el nombre del grupo detrás de la base; un
PDF generado aquí conserva la base simple. Todos los archivos se completan con un nombre
temporal y se publican solo cuando están completos, así que una exportación cancelada nunca
deja un archivo parcial con la extensión del producto.

## CSV {#csv}

Una columna **Timestamp**, encabezada "Timestamp (UTC-03:00)" con la referencia horaria, y
después, por cada canal grabado en el orden de columnas congelado, una columna de valor
encabezada con el nombre que la corrida congeló para esa columna, el alias en vigor en la unidad o
el nombre del canal cuando no había ninguno, y su unidad de ingeniería entre corchetes
("Temperatura [°C]"), y una columna de calidad a su lado ("Temperatura [°C] Quality") que dice
**Good** o **Unavailable**. Ese encabezado es el nombre que el gráfico y el reporte de la corrida
dan a la misma columna. La columna de valor conserva lo que guardó el datalog (en blanco cuando no
guardó nada), los booleanos se leen `true`/`false`, un canal de tipo fecha se lee en el
formato de la estación, y un valor que contiene el separador, una comilla o un salto de
línea se entrecomilla. Una celda de texto que empieza por `=`, `+`, `-` o `@` se prefija con
un apóstrofo para que la hoja de cálculo la lea como texto y no como fórmula: los nombres de
columna del encabezado y las lecturas de un canal de texto, que vienen del equipo. Los números
no se prefijan nunca, así que una lectura negativa sigue siendo un número.

El archivo sigue la preferencia de separador decimal de la estación: con decimales de punto
el separador de lista es `,`; con decimales de coma es `;`, para que el archivo se abra
limpio en una hoja de cálculo de esa configuración regional. Los números se escriben sin
separador de millares, con toda la precisión guardada por el datalog. El texto es UTF-8.

## XLSX {#xlsx}

El libro abre con una hoja **Run**, de dos columnas encabezadas Campo y Valor:

| Campo | Contenido |
| --- | --- |
| Run ID | La identidad única de la corrida. |
| Run Name, Model, Model Revision, Unit, Procedure | Los nombres congelados cuando la corrida grabó; un campo para el que la corrida no tiene valor queda en blanco. |
| Started At, Finished At | Los límites de la corrida. Una corrida que sigue grabando dice **In progress** en Finished At. |
| Time Zone | La referencia en la que se leen todos los instantes del libro. |
| State | El estado del ciclo de vida en el momento de exportar. |
| Result | El veredicto (OK, NOK, Indeterminate o None), o **In progress** mientras la corrida sigue grabando. |
| Termination | None, o StopInterlock. |
| Interval (ms) | El intervalo de grabación. |
| Imported At, Imported From | Solo en una copia importada de otra instalación: cuándo llegó aquí y el archivo recibido del que vino. Una corrida grabada aquí no lleva ninguna de las dos filas. |
| Notes | Las notas de la corrida. |

Sigue un segundo encabezado, Metadata y Value, con una fila por campo de metadatos grabado en el
Arranque, en el orden en que se pidieron. Después vienen una o varias hojas **Datalog**, en el mismo
orden de columnas y con los mismos encabezados de canal que el CSV, con la fila de encabezado
inmovilizada, un autofiltro en cada hoja y sin líneas de cuadrícula. Un datalog más largo que el
límite de 1,048,576 filas por hoja de Excel se parte automáticamente en **Datalog 2**,
**Datalog 3**, y así sucesivamente, cada una con su propio encabezado.

Los valores se escriben como celdas tipadas: los enteros y los decimales finitos como
números nativos con toda la precisión guardada por el datalog, los booleanos como TRUE/FALSE
nativos. Excel trabaja como máximo con 15 dígitos significativos, así que los dígitos que
pasen de ahí no se ven allí, aunque el archivo los lleve. Una lectura no finita, un canal de
tipo fecha y las marcas de tiempo son texto; una lectura cuya calidad es **Unavailable**
deja su celda de valor vacía, y la columna de calidad lo dice. Una corrida que necesitara más
de las 16,384 columnas de Excel, o una celda de texto que pasara de su límite de 32,767
caracteres, se rechaza con el motivo en vez de producir un libro truncado.

## GLAB {#glab}

El archivo `.glab` es una copia coherente, a nivel de página, del archivo SQLite propio de la
corrida, tomada en caliente: sin envoltorio de archivo comprimido, sin manifiesto, sin
documentos derivados y sin PDF publicado. Lleva todo lo que lleva el archivo de la corrida:
la instantánea congelada, las filas, los metadatos, las escrituras de receta, los criterios,
las ocurrencias, los comentarios, las anotaciones, los registros de producción, los
artefactos de etiqueta con sus bytes congelados y los registros de reporte con la copia que
hayan conservado. Usa el mismo nombre base que las demás exportaciones y solo se publica una
vez escrito por completo. Otra estación lo recupera mediante
[Importar corridas](histories-import).

## PDF {#pdf}

**Generar PDF** compone el reporte con el diseño que elige el selector que tiene al lado.
"(el reporte del procedimiento)" es el diseño que nombra hoy el primer comando de reporte de
finalización del procedimiento en orden de emisión (su primer comando de arranque cuando no
emite ninguno en la Finalización); un procedimiento que ya no está o que no emite ningún
reporte, y un diseño eliminado, recaen en el diseño predeterminado con todas las secciones,
así que una regeneración sobrevive a la configuración. Se puede elegir en su lugar cualquier
otro diseño de la biblioteca, porque el archivo de la corrida se basta a sí mismo. El PDF se
publica en la carpeta de reportes con el nombre base simple de la corrida, reemplazando al
renderizado manual anterior, y no registra nada en la corrida.

En la ventana propia de la estación el PDF terminado se abre en el visor de PDF del sistema,
y si eso falla se recae en una descarga del navegador ("No se pudo abrir el reporte. Se
descarga en su lugar."); en un navegador, local o remoto, se abre en una pestaña nueva. Lo
que contienen las páginas es [Diseños de reporte](process-reports#what-the-pdf-prints). El
reporte ya registrado para una corrida se reemite en cambio desde
[Etiquetas y reportes](histories-documents), que nunca lo vuelve a componer.
