No es una "bala de plata", pero casi...
Si alguna vez experimentáis problemas a nivel de la base de datos interna de cimplicity (como por ejemplo un error de "duplicate record" cuando modificáis una clase con objetos instanciados) puede deberse a que el servidor tiene restos de una configuración anterior (points o objetos mal borrados) que generan duplicidades al actualizar cambios en la configuración.
Esto no es un problema habitual, pero puede llegar a darse en configuraciones muy grandes, en las que los cambios son lentos y a veces nos hacen pensar que el Workbench se haya colgado (o simplemente que den fallo por la complejidad de los cambios a implementar).
Recientemente desde el equipo de soporte nos hemos con el problema, y la solución ha sido re-indexar los ficheros de configuración. De esta forma, hemos podido llegar a actualizar la clase (que era el cambio de configuración que estábamos intentando implementar). No ha sido necesario tener que borrar los objetos y re-importarlos, cosa que por cierto se intentó anteriormente y NO resolvió el problema.
La forma de hacer esto ha sido utilizando la instrucción "dcheck", que se lanza por línea de comando contra los diferentes ficheros *.idx a actualizar. En el caso nuestro, teníamos sospechas de que los registros duplicados podían estar en la configuración de datalogging, así que se lanzó los siguientes comandos
- dcheck -b log_event
- dcheck -b log_attrib
- dcheck -b object
- dcheck -b object_attrib
- dcheck -b object_routing
Tras estos cambios, el problema quedó corregido y ya fue posible actualizar normalmente la clase
Temas a tener en cuenta:
- El proyecto debe estar parado
- Es imprescindible por seguridad tener un backup del proyecto antes de pasar el "dcheck"
- Tras pasar el "dbcheck", hay que cerrar CMD y Workbench. Cuando se re-abre Workbench, aplicamos un "Configuration Update" para que los cambios hechos a nivel interno queden plenamente vigentes
Todos los detalles en esta interesante technote de GE Digital:
https://digitalsupport.ge.com/s/article/Failure-to-Delete-Record?language=en_US
Cualquier duda al respecto, podéis contactar con nuestro equipo de soporte support@opertek.com, o abriendo un ticket en este mismo portal