Un error de script al abrir plantillas o informes en Siemens COMOS (habitualmente asociado a la función LoadPicture) ocurre cuando una plantilla hace referencia a la ruta física de un archivo de imagen ubicado dentro de la estructura de carpetas de una capa de trabajo (Working Layer) específica. Cuando esa capa de trabajo se libera (Release) o se exporta a otro entorno, el archivo se traslada a la capa superior o cambia de carpeta de proyecto (WOxxxxx), pero la ruta absoluta guardada en el script no se actualiza dinámicamente. Para solucionar este fallo de manera permanente, las imágenes e iconos reutilizables deben almacenarse en carpetas independientes del mecanismo de capas (como la carpeta de recursos globales del proyecto SO1\Icons\) y referenciarse mediante rutas relativas o estructuras globales en los scripts de la plantilla.
Tabla de contenido
- Causa técnica: por qué fallan las rutas absolutas tras liberar o migrar una capa de trabajo
- Requisitos previos
- Método 1: Almacenamiento centralizado de imágenes en carpetas independientes del proyecto (Recomendado)
- Método 2: Corrección de rutas relativas y resolución mediante a.FullFileName en código AutoScript
- Verificación
- Limitaciones y precauciones operativas
- Preguntas frecuentes para ingenieros
- Artículos relacionados
- Etiquetas relacionadas
Causa técnica: por qué fallan las rutas absolutas tras liberar o migrar una capa de trabajo
Al arrastrar y soltar un archivo de imagen (.jpg, .jpeg, .bmp) directamente en el Navegador de COMOS dentro de una capa de trabajo activa, el sistema copia físicamente el archivo dentro de la estructura de directorios asignada a esa capa específica (por ejemplo, ...\COMOSPT\WO00002\aa\ABC12DEF.jpg).
Si el script de la plantilla o del encabezado de informe utiliza la función LoadPicture apuntando a una ruta fija o absoluta en el servidor:
VBScript
' Script de plantilla con ruta absoluta a una capa de trabajo específica
Set p = LoadPicture("\\servidor\share\Comosdoc\COMOSPT\WO00002\aa\ABC12DEF.jpg")
Set picture = p
Ocurren dos problemas críticos durante el ciclo de vida del proyecto:
- Liberación de capa de trabajo (Working Layer Release): Al consolidar la capa de trabajo hacia la capa superior (por ejemplo, hacia la capa base
WO00000), el archivo físico de la imagen se desplaza en el sistema de archivos del servidor para reflejar la nueva jerarquía. Sin embargo, el texto del script dentro del informe conserva la cadena de caracteres con la ruta antigua (WO00002). Al abrir la plantilla, la funciónLoadPictureno encuentra el archivo en la ubicación original y detiene la ejecución arrojando un error de script. - Exportación y despliegue entre servidores: Al exportar un proyecto base o una capa de trabajo desde un servidor de desarrollo hacia un servidor de producción, la estructura de carpetas
WOxxxxxno siempre se exporta automáticamente de forma idéntica si los recursos gráficos no forman parte de las carpetas de recursos del proyecto base (SO1).
Requisitos previos
- Software: Siemens COMOS con acceso a entornos de edición de informes (Report Templates) y evaluador de scripts (Object Debugger / AutoScript).
- Derechos de usuario: Permisos de administración o de diseñador de proyectos en el sistema de gestión de objetos base (Base Objects) de COMOS.
- Acceso a red: Privilegios de lectura y escritura en la carpeta compartida de documentos de COMOS (
Comosdoc/ archivos de base de datos) en el servidor de archivos.
Método 1: Almacenamiento centralizado de imágenes en carpetas independientes del proyecto (Recomendado)
Se utiliza mejor cuando: Se crean plantillas de informes, logos corporativos, símbolos e iconos estándar que deben ser válidos para todos los usuarios, capas de trabajo y servidores del proyecto.
Procedimiento
- Abra el Explorador de archivos de Windows y navegue a la carpeta compartida de documentos de COMOS en el servidor donde se aloja la base de datos (por ejemplo,
\\servidor\share\Comosdoc\DB\SO1\). - Cree una carpeta dedicada fuera del árbol de capas de trabajo
WOxxxxx, denominada por ejemploIconsoPictures(ruta completa:...\SO1\Icons\). - Copie los archivos de imagen e iconos reutilizables (
MyIcon001.jpg,HeaderLogo.jpeg) directamente dentro de esta carpeta del sistema de archivos. - Abra COMOS, ingrese a la plantilla del informe o al objeto de cabecera en modo de diseño.
- Edite el script del objeto de imagen sustituyendo la ruta asignada a la función
LoadPicturepor la ubicación global e independiente del proyecto:
VBScript
' Asignación mediante ruta global independiente de las capas de trabajo
Dim sImagePath, p
sImagePath = "\\servidor\share\Comosdoc\DB\SO1\Icons\MyIcon001.jpg"
Set p = LoadPicture(sImagePath)
Set picture = p
- Guarde la plantilla de informe y libere los cambios en el proyecto base.
Resultado esperado: La plantilla localizará la imagen siempre en la carpeta SO1\Icons\, independientemente de cuántas capas de trabajo creadas por los usuarios se abran, liberen o eliminen.
Verificación: Abra un informe generado a partir de la plantilla desde cualquier capa de trabajo secundaria. Confirme que la imagen se cargue en la cabecera sin desplegar mensajes de error de script.
Método 2: Corrección de rutas relativas y resolución mediante a.FullFileName en código AutoScript
Se utiliza mejor cuando: Las imágenes están vinculadas dinámicamente a objetos del Navegador de COMOS y se requiere que el código resuelva la ubicación del archivo en tiempo de ejecución sin importar a qué capa de trabajo se haya movido el objeto.
Procedimiento
- Abra COMOS y acceda a las propiedades del objeto de plantilla donde se adjunta la imagen.
- Utilice el depurador de objetos (Object Debugger) para evaluar la propiedad de ruta física del objeto documento. En COMOS, la propiedad
a.FullFileNamedevuelve automáticamente la ruta absoluta actualizada del archivo considerando la capa de trabajo activa en ese instante:
VBScript
' Ejemplo de código en AutoScript para resolución dinámica de ruta
Dim oDocObject, sResolvedPath, objPic
Set oDocObject = Report.Block("Header").Item("CompanyLogo")
' Evaluar la ruta real del archivo gestionado por COMOS
If Not oDocObject Is Nothing Then
sResolvedPath = oDocObject.Spec("PictureFile").LinkObject.FullFileName
If sResolvedPath <> "" Then
Set objPic = LoadPicture(sResolvedPath)
Set picture = objPic
End If
End If
- Reemplace las cadenas de texto estáticas por llamadas a la propiedad
.FullFileNamede los objetos enlazados. - Guarde el script y pruebe la ejecución en la capa de trabajo de desarrollo.
Resultado esperado: El motor de COMOS consulta la ubicación física real del archivo en la base de datos antes de llamar a LoadPicture, adaptando la ruta automáticamente cuando el objeto es promovido a una capa superior.
Verificación
El procedimiento de resolución de errores de script en imágenes se ha completado correctamente cuando:
- Al abrir la plantilla de informe en la capa de trabajo original, la imagen se visualiza correctamente y no se generan emergentes de error de script.
- Después de ejecutar la función de liberación de capa de trabajo (Release Working Layer), la plantilla se abre en la capa superior sin perder la referencia del archivo gráfico.
- Al exportar el proyecto base hacia un servidor secundario, la copia manual o sincronizada de la carpeta
SO1\Icons\permite que los informes mantengan los logotipos e iconos sin requerir re-edición de scripts.
Limitaciones y precauciones operativas
- Despliegue entre servidores: La carpeta
SO1\Icons\creada manualmente en el sistema de archivos de Windows no se exporta automáticamente cuando se utiliza la herramienta de exportación de capas de trabajo de proyectos base en COMOS. Al realizar el despliegue en un nuevo servidor, el administrador debe copiar físicamente la carpetaIconsen el directorio de destino del nuevo servidor. - Formato de imagen: Asegúrese de utilizar formatos gráficos totalmente compatibles con el método
LoadPicturede VBScript (como.jpg,.jpego.bmp). Formatos vectoriales o archivos PNG con transparencia alfa no nativa pueden causar fallos adicionales en el motor de renderizado de informes.
Preguntas frecuentes
¿Por qué COMOS no actualiza la ruta del script al liberar una capa de trabajo?
Porque el motor de capas de trabajo de COMOS gestiona la reubicación de los archivos físicos y las referencias en la base de datos de objetos, pero no analiza ni reescribe las cadenas de texto estáticas (hardcoded strings) que el programador introduce manualmente dentro del código VBScript de las plantillas.
Si exporto un proyecto base a otro servidor, ¿se incluyen los archivos de la carpeta SO1\Icons?
No automáticamente. La exportación por capas de trabajo dentro de COMOS transfiere la estructura de la base de datos. Los archivos externos depositados directamente en carpetas del sistema de archivos (como SO1\Icons\) deben copiarse o respaldarse manualmente en el servidor de destino.
¿Cuál es la diferencia entre usar a.FullFileName y una ruta absoluta estática?
Una ruta estática escribe textualmente la dirección en el disco (ej. C:\COMOSPT\WO00002\...), la cual deja de existir cuando la capa WO00002 se consolida. La propiedad a.FullFileName consulta dinámicamente en tiempo de ejecución a la API de COMOS la ubicación exacta del archivo, adaptándose a cambios de servidor, letras de unidad y capas de trabajo.
Artículos relacionados
- Cómo depurar scripts VBScript en Siemens COMOS utilizando el Object Debugger
- Gestión y consolidación de capas de trabajo (Working Layers) en Siemens COMOS
- Configuración de plantillas de cabecera e informes en proyectos base de COMOS
Etiquetas relacionadas
Code: C298