Procedimientos programados y grupos de recálculo#
Un procedimiento programado llama a su hora a un procedimiento almacenado de la base de datos del cliente: anotar una carga, preparar unas tablas, cerrar un periodo. Un grupo de recálculo encadena un procedimiento previo, el recálculo de varios libros a la vez y un procedimiento posterior: el cierre diario típico, en el que primero se cargan los datos, después se recalculan los libros y al final se marca el cierre.
Antes de empezar#
- Necesita Administración de libros y Administración del sistema.
- Elija la conexión en la que va a trabajar: las tareas son de la conexión activa.
- El procedimiento tiene que existir en la BD del cliente y el usuario de la conexión tiene que poder ejecutarlo.
- Los libros de un grupo tienen que ser de la conexión y usted tiene que poder abrirlos. Solo se recalculan sus documentos que conservan datos.
Crear un procedimiento programado#


- En Planificación, pulse Nuevo y elija Procedimiento programado….
- Escriba el Nombre de la tarea (hasta 100 caracteres), por ejemplo «Registro de la carga nocturna».
- En Llamada, escriba el nombre del procedimiento, con el esquema si hace falta y sin paréntesis:
COMERCIAL.ANOTAR_CARGA. - Añada sus argumentos en orden con Añadir argumento (véase la tabla siguiente).
- En Cuándo, elija la programación (abajo) y compruebe las Próximas ejecuciones.
- Deje marcada Activa si quiere que se ejecute sola.
- Pulse Crear procedimiento.
La tarea aparece en Procedimientos programados. Para probarla, ábrala y pulse Ejecutar ahora.
Los argumentos#
Cada argumento tiene un tipo y un valor, y se pasa al procedimiento como un parámetro, nunca escrito dentro de la sentencia:
| Tipo | Valor | Ejemplo | Se pasa como |
|---|---|---|---|
| Texto | Cualquier texto. Vacío, se pasa NULL. |
Carga nocturna |
'Carga nocturna' |
| Número | Un número, con coma o punto decimal. | 12,5 |
12.5 |
| Fecha | Un día del calendario. | 30/09/2026 |
Esa fecha |
| Día de la ejecución | El día en que se ejecuta, más o menos un número de días (−1 es ayer). | −1 |
La fecha de ayer en cada ejecución |
En el detalle de la tarea, Llamada la enseña completa: COMERCIAL.ANOTAR_CARGA('Carga nocturna', hoy − 1 día). El botón con el aspa de cada argumento lo quita.
Cómo se escribe el nombre#
El nombre del procedimiento se cita como las tablas de la conexión:
- Si la conexión tiene Citar los nombres de tablas y columnas, escríbalo exactamente como está en la BD, con sus mayúsculas.
- Si no, escriba un nombre llano (letras, cifras,
_); se escribirá en la sentencia tal cual.
Si falta o lleva paréntesis, el diálogo no deja guardar y dice «Falta el procedimiento» o «El procedimiento es su nombre, con el esquema si hace falta, sin paréntesis».
Qué pasa con las transacciones#
| Motor | Cómo se llama |
|---|---|
| PostgreSQL | Fuera de una transacción: el CALL es su propia transacción y el procedimiento puede confirmar por dentro (por ejemplo, por lotes). Lo que confirme queda confirmado aunque después falle. |
| Oracle | En una transacción que se confirma si termina bien y se deshace si falla. Un COMMIT dentro del procedimiento confirma. |
| SQL Server | En una transacción que se confirma si termina bien y se deshace si falla. Una transacción dentro del procedimiento queda anidada y no confirma hasta la de fuera. |
Un error del procedimiento es un fallo de la ejecución, con el mensaje de la BD en su paso.
Crear un grupo de recálculo#


- En Planificación, pulse Nuevo y elija Grupo de recálculo….
- Escriba el Nombre, por ejemplo «Cierre comercial diario».
- En Libros, marque los libros del grupo. Buscar libro filtra la lista por el nombre; los marcados se quedan a la vista. El título dice cuántos lleva marcados.
- En Reintentos de un libro que falla, escriba cuántas veces se vuelve a intentar un libro que falla, de 0 a 10.
- En Procedimientos, marque si hace falta:
- Procedimiento previo (si falla, no se recalcula ningún libro), y escriba su llamada como en un procedimiento programado.
- Procedimiento posterior (solo si todos los libros terminan bien), y su llamada.
- En Cuándo, elija la programación y deje marcada Activa.
- Pulse Crear grupo.
Si falta el nombre o no hay libros marcados, el pie del diálogo lo dice («Falta el nombre», «Elija los libros del grupo») y no deja crearlo.
Cómo se ejecuta un grupo#
- Si tiene procedimiento previo, lo llama. Si falla, el grupo falla y no se recalcula ningún libro.
- Recalcula todos los libros a la vez, cada uno en sus trabajos (en la cola normal, con los límites de cada clase). Un libro que falla se reintenta hasta el número de reintentos, también si falló al lanzarlo.
- Si algún libro sigue fallando tras sus reintentos, el grupo falla y no se llama al posterior.
- Si todos terminan bien, llama al procedimiento posterior.
Cada libro recalculado bien avisa de ello: el portal publica una versión si el libro se publica «después de cada recálculo», y las suscripciones y alertas de datos «tras el recálculo» se envían o se evalúan. Un libro puede estar en varios grupos y tener además su propio recálculo programado.
La programación#
La sección Cuándo es la misma en las tres clases de tarea:
| Programación | Opciones |
|---|---|
| Sin programación (solo a mano) | Solo se ejecuta con Ejecutar ahora. |
| Diaria | Hora de inicio y Cada cuántos días; o repetida Repetir cada tantos minutos u horas Hasta las una hora. Si la franja acaba a la hora de inicio, se repite todo el día; si acaba antes, pasa al día siguiente. |
| Semanal | Hora de inicio y los días de la semana. |
| Mensual | Hora de inicio y el Día del mes: el primero, el último o uno concreto. |
| Una sola vez | Un día y una hora. Una vez pasada, las próximas dicen «Ninguna: ya ha pasado». |
Próximas ejecuciones las calcula el servidor con su zona horaria (ecenter.scheduling.zone, por defecto la del servidor; ponga TZ en la instalación). La siguiente ejecución es siempre posterior al momento en que se guarda o se lanza la tarea. En el cambio de hora de otoño, una hora que se repite se ejecuta una sola vez; en el de primavera, lo que cae en la hora que no existe se ejecuta al pasarla.
Tiempos máximos#
| Qué | Límite | Propiedad |
|---|---|---|
| Cada intento de recalcular un libro | 2 horas. Al agotarse se cancelan sus trabajos y cuenta como fallido, así que se reintenta. | ecenter.scheduling.recalc-timeout |
| Un procedimiento programado | 2 horas | ecenter.scheduling.procedure-timeout |
| El procedimiento previo o el posterior de un grupo | 30 minutos | ecenter.scheduling.step-timeout |
| Tareas en marcha a la vez en una instancia | 4. Las que tocan mientras hay 4 en marcha esperan a la siguiente vuelta; Ejecutar ahora no espera. | ecenter.scheduling.max-running |
El grupo no tiene un tiempo total: cada libro y cada procedimiento tienen el suyo.
Modificar, desactivar y eliminar#
- Modificar… abre el mismo diálogo. Al guardar, usted pasa a ser el responsable de la tarea.
- El interruptor Activa la desactiva sin borrarla: no se ejecuta sola, pero se puede ejecutar a mano y conserva su historial.
- Eliminar… pide confirmación («Dejará de ejecutarse. Su historial de ejecuciones se conserva.»). Una tarea en marcha no se puede eliminar: deténgala antes.
- Borrar un libro borra su recálculo y lo saca de los grupos; un grupo puede quedarse sin libros (el detalle dice «Ninguno (se eliminaron)»).
- Guardar como un libro no copia su programación, y restaurar una copia del libro no la cambia.