Documentación

Fórmulas y expresiones

Calcular un valor, plantear una condición, dar formato a una fecha o a un número, en un campo Fórmula o en una plantilla.

En un texto de plantilla o en un campo Fórmula, todo lo que está entre llaves se calcula; el resto se imprime tal cual.

Lot {reference}-{serial}          →  Lot AX-100-000042

Los nombres se escriben en inglés, sea cual sea el idioma; los mensajes y la ayuda siguen el idioma de la interfaz.

Lo esencial

  • Un nombre solo imprime un valor: un campo ({reference}) o un elemento de ceelab ({date}, {copy}, {language}…).
  • Una función se escribe con sus paréntesis: {upper(reference)}.
  • Una condición se escribe if … then … else …, siempre con su else: {if quantity > 100 then "Pallet" else "Box"}.
  • Un texto se escribe entre comillas rectas: "Box". Un número se escribe con punto: 1.2.
  • Para imprimir una llave, duplíquela: {{ y }}.

El campo Fórmula

Campo Fórmula: expresión, resultado con los valores de ejemplo, campos usados y plantillas que lo usan.Campo Fórmula: expresión, resultado con los valores de ejemplo, campos usados y plantillas que lo usan.

Un campo Fórmula calcula su valor a partir de los demás campos del tipo, aunque estén situados más abajo. El editor muestra el resultado con los valores de ejemplo, lo que la fórmula usa y por qué es usada, y la lista de campos y elementos de ceelab que se pueden insertar.

Al guardar, ceelab lo comprueba todo: errores de escritura, nombres desconocidos, cálculos imposibles o circulares. La parte afectada se subraya y se propone Corregir cuando la corrección es evidente.

Al imprimir, una fórmula que falla lo detiene todo sin consumir ningún número. Los resultados se guardan en el historial: una reimpresión devuelve exactamente el mismo documento.

El editor de expresiones

Tanto en el campo Fórmula como en el laboratorio:

  • el texto aparece coloreado: campos, funciones, textos, números, y los nombres desconocidos resaltados;
  • Ctrl+Espacio, o escribir un nombre, propone los campos del tipo con su nombre y su valor de ejemplo, los elementos de ceelab, las funciones y las palabras esperadas en ese lugar; escribir «pes» propone weight si su nombre es «Peso»;
  • ↑ ↓ para elegir, Intro o Tab para insertar, Esc para cerrar;
  • dentro de una función, la ayuda muestra lo que hay que escribir en ese lugar, por ejemplo los formatos de fecha;
  • al pasar el cursor sobre una variable se ven su nombre, su naturaleza y su valor de ejemplo; Funciones y elementos abre la ayuda de todo el lenguaje.

Ejemplos

Tipo de ejemplo «Etiqueta de producto», documento en francés del 7 de octubre de 2026: producto «Vis inox M4», referencia «AX-100», cantidad 150, embalaje «Carton», número de serie 42 (contador de 6 cifras), fabricado ese mismo día.

Necesidad Escritura Resultado
Embalaje según la cantidad {if quantity > 100 then "Pallet" else "Box"} Pallet
Cantidad y embalaje {quantity} · {packaging} 150 · Carton
Número de serie con 8 cifras N° {pad(serial, 8)} N° 00000042
Bulto n de N, solo si hay varios {if copies > 1 then "Colis " + text(copy) + "/" + text(copies) else ""} 3.er ejemplar de 12: Colis 3/12
Fecha con el formato de cada idioma {format_date(manufacturing_date, "short")} 07/10/2026 (en Oct 7, 2026, de 07.10.2026)
Mención según el idioma {if language == "de" then "Mindestens haltbar bis" else if language == "en" then "Best before" else "À consommer de préférence avant"} À consommer de préférence avant
Fecha de consumo preferente, mes y año {format_date(add_days(manufacturing_date, 365), "mm/yyyy")} 10/2027
Mes en letras {format_date(manufacturing_date, "mmmm yyyy")} octobre 2026 (de Oktober 2026)
Código de lote con fecha L{format_date(date, "yymmdd")}-{pad(serial, 4)} L261007-0042
Prefijo de la referencia {upper(left(reference, 3))} AX-

Con campos añadidos: weight (Número, introducido «12,50»), price (Número, «0.1»), fragile (Sí/No, sin marcar), lot (Texto opcional, vacío), expiry (Fecha opcional, vacía).

Necesidad Escritura Resultado
Peso tal como se introdujo Net {weight} kg Net 12,50 kg
Clase de peso {if weight > 30 then "Heavy" else if weight > 10 then "Medium" else "Light"} Medium
Peso aumentado, 2 decimales como máximo {round(weight * 1.2, 2)} 15
Siempre 2 decimales {decimals(weight * 1.2, 2)} 15,00
Total {decimals(price * quantity, 2)} € 15,00 €
Peso unitario (una división siempre se redondea) {decimals(weight / quantity, 3)} kg 0,083 kg
Mención según un campo Sí/No {if fragile then "FRAGILE" else ""} (nada)
Línea opcional {if lot == "" then "" else "Lot " + lot} (nada)
Fecha opcional {if expiry == empty then "" else "À utiliser avant le " + format_date(expiry, "dd/mm/yyyy")} (nada)

Los cálculos son exactos y el separador decimal sigue el idioma del documento: decimals(total, 2) escribe 37,50 en francés.

Leer un dato de ceelab

lookup lee un dato que ceelab conoce. Por ejemplo, el nombre de un tipo de documento a partir de su clave:

{lookup("document_types", "key", "shipping-label", "name")}

Si el dato no existe, no se imprime nada y ceelab se lo indica.

Los errores habituales

Escrito Lo correcto
{if quantity = 100 then …} == para comparar
{reference | upper} o {reference.upper()} upper(reference)
{"Lot " + quantity} "Lot " + text(quantity)
{"Lot " & lot} + para unir textos
{if weight > 30 then "Heavy"} añadir else …: una expresión siempre tiene un valor
{if weight > 30 alors "a" sinon "b"} then y else, en inglés
{quantity > 100} una condición no se imprime: if quantity > 100 then "Oui" else "Non"
{total / 3} redondear: round(total / 3, 2)
{round(12,5)} 12.5
{0 < weight < 10} 0 < weight and weight < 10
{format_date(date, "jj/mm/aaaa")} dd/mm/yyyy
{“Box”} comillas rectas: "Box"

in busca un fragmento de texto: "E" está «en» "FR BE CH". Para una lista de valores, escriba country == "FR" or country == "BE" or country == "CH".

Resumen

  • Palabras: if then else and or not in true false empty.
  • Operadores: + - * / (+ también une dos textos); == != < <= > >=; in (texto contenido); and, or, not.
  • Funciones: upper, lower, left, right, replace, number, text, round, decimals, pad, format_date, add_days, lookup.
  • Elementos: date, date_long, date_iso, time, year, month, day, copy, copies, document_type, location y, solo en las expresiones, language (idioma del documento), app_language (idioma de la interfaz del equipo), label_printer y document_printer (impresoras configuradas).
  • Patrones de fecha: yyyy, yy, mmmm, mm, dd; formatos short, long, iso.
  • Vacío: x == empty; con un vacío no se puede calcular.

Fechas: lo que todavía no se puede escribir

  • Día sin cero («7 octobre 2026»): format_date(date, "long") lo escribe en cada idioma.
  • Texto dentro de un patrón: "dd de mmmm" se rechaza; componga format_date(date, "dd") + " de " + format_date(date, "mmmm").
  • Mes en un idioma distinto del del documento: todavía no es posible; use una condición sobre month o un segundo tipo de documento en el otro idioma.