Automatizar Sage 50 con scripts de S50Info¶
run ejecuta archivos Python con el contexto activo de S50Info. Úsalo para varias consultas, varias salidas, selección interactiva o una confirmación antes de una acción operativa.
Decide si necesitas un script¶
| Situación | Solución |
|---|---|
| Una consulta de diagnóstico | s50info sql |
| Una exportación puntual | s50info export |
| Varias operaciones relacionadas | s50info run |
| Selección de datasets preparados | s50info run script/ejemplo_lite_sage50bi.py |
| Revisión y posible vaciado de logs | s50info run script/visualizar_log_analisis_excel_reseteo.py |
Ejecutar archivos y carpetas¶
s50info run script/exportacion_articulos.py
s50info run script
s50info run
Cuando ejecutas una carpeta, un error no detiene los archivos siguientes. S50Info muestra cada fallo y devuelve un código de error al terminar si alguno falló.
Contexto disponible¶
S50Info inyecta el objeto proceso y funciones auxiliares. No necesitas duplicar la configuración de conexión.
| Recurso | Uso |
|---|---|
proceso.query_to_dict(sql, ...) |
Ejecuta una consulta y devuelve una lista de diccionarios. |
proceso.imprimir_diccionarios(datos, ...) |
Exporta a TXT, CSV, JSON, XML o XLSX. |
proceso.samplebi(nombre, ...) |
Ejecuta un dataset preparado. |
proceso.samples_disponibles() |
Lista los datasets disponibles. |
proceso.seleccionar_samples() |
Abre el selector de datasets. |
proceso.exportar_samples(nombres) |
Ejecuta varios datasets. |
proceso.reset_log() |
Vacía logs; úsalo solo tras confirmación explícita. |
Los scripts no heredan la garantía de solo lectura
El validador de lectura pertenece a los comandos sql y export. Los helpers de scripts no ofrecen esa garantía general. Revisa el código y los permisos antes de ejecutarlo.
datos = proceso.query_to_dict(
"select codigo, nombre from #clientes",
sqlyear="+",
)
if datos:
proceso.imprimir_diccionarios(
datos,
formato="xlsx",
nombre_archivo="clientes",
)
Ejecuta el archivo con s50info run ruta/al/script.py para que reciba el contexto.
Ejemplo: exportar artículos¶
s50info run script/exportacion_articulos.py
| Función | Operación | Salida |
|---|---|---|
exportar_articulos_base() |
Último ejercicio. | resultados/articulos_base.xlsx |
exportar_articulos_por_year() |
Ejercicio ilustrativo 2025JX. |
resultados/articulos_2025JX.csv |
exportar_articulos_multi_year_agrupados() |
Todos los ejercicios, agrupados por codigo. |
resultados/articulos_groupby.json |
exportar_formatos_posibles() |
Último ejercicio en dos formatos. | TXT y XML bajo resultados |
Sustituye 2025JX por un ejercicio que exista en la salida de s50info info antes de ejecutar el ejemplo completo.
Ejemplo: seleccionar datasets preparados¶
s50info run script/ejemplo_lite_sage50bi.py
El ejemplo permite seleccionar uno o varios datasets y crea un XLSX por cada resultado correcto. Es una muestra técnica desde la CLI; Sage50BI sigue siendo la opción visual para usuarios finales.
| Tecla | Acción |
|---|---|
| Flechas arriba y abajo | Mover el cursor. |
| Espacio | Marcar o desmarcar. |
T / N |
Seleccionar o deseleccionar todos. |
| Enter | Confirmar. |
| Esc | Cancelar. |
Ejemplo: revisar y vaciar logs¶
s50info run script/visualizar_log_analisis_excel_reseteo.py
El script consulta log_analisis, crea resultados/log_analisis.xlsx y solicita confirmación. Solo llama a proceso.reset_log() si respondes s, si, y o yes; esa acción vacía tanto log_analisis como log_error.
Checklist antes de programarlo¶
- El script se ejecuta con
s50info run. - Las rutas son estables y el usuario puede escribir en el destino.
- Los ejercicios y comunes corresponden al entorno de destino.
- Las listas vacías y los errores tienen una recuperación definida.
- Las acciones destructivas exigen una confirmación explícita.
- La tarea se ha probado con el mismo usuario y carpeta del Programador de tareas.
Crear tu propio script¶
Estructura mínima¶
# mi_script.py
# No necesitas importar nada: S50Info inyecta 'proceso' automáticamente.
datos = proceso.query_to_dict(
"select codigo, nombre from #clientes",
sqlyear="+",
)
if datos:
proceso.imprimir_diccionarios(
datos,
formato="xlsx",
nombre_archivo="resultado",
)
print(f"Exportados {len(datos)} registros.")
else:
print("Sin datos.")
Ejecutar¶
s50info run mi_script.py
Funciones disponibles¶
| Función | Descripción |
|---|---|
proceso.query_to_dict(sql, sqlyear="+") |
Consulta y devuelve lista de diccionarios. |
proceso.imprimir_diccionarios(datos, formato, nombre_archivo) |
Exporta a TXT, CSV, JSON, XML o XLSX. |
proceso.samplebi(nombre) |
Ejecuta un dataset de Sage50BI. |
proceso.samples_disponibles() |
Lista datasets disponibles. |
proceso.seleccionar_samples() |
Selector interactivo de datasets. |
proceso.exportar_samples(nombres) |
Ejecuta varios datasets. |
proceso.reset_log() |
Vacía logs (usar solo con confirmación). |
Consejos¶
- Usa
sqlyear="@"para procesar todos los ejercicios. - Guarda resultados en
resultados/para consistencia. - Incluye manejo de errores para entornos de producción.
- Prueba primero con
s50info sqlantes de automatizar.
Siguiente paso¶
Vuelve a la referencia de comandos o consulta Resolver problemas.
Enviar incidencia