Error al clonar operación

Hola,

Estoy clonando operaciones entre dos proyectos Toba.

Inicialmente tuve algunos problemas con las consultas php y los usuarios, que la operación clonar no traslada al proyecto destino (por ende si no existe la consulta/s y/o usuario/s la operación de clonar devuelve un error).
Ambas cosas las pude solucionar con un par de queries que migran ambas cosas de un proyecto a otro.

Otra cosa que estoy resolviendo manualmente es el error que indica que ya existe un DT en el proyecto origen, debo desvincular los DTs en la operación del proyecto origen, clonar la operación, y luego vincular nuevamente los DTs en la operación del proyecto origen (y luego en la operación clonada en el proyecto destino).

El error por el cual consulto es el siguiente, al querer clonar una operación me devuelve el error, sin mayor información que:

AP_TABLA: [apex_objeto_cuadro_col_cc]: ERROR en la carga de una columna externa.

Alguna idea de como obtener algún detalle adicional o por donde encarar la búsqueda?

Gracias

Saludos
Leonardo

Hola Leonardo

Eso sale en
toba_ap_tabla_db.php – usar_metodo_sql_fila()

por ahi podes ver algo mas en las variables que se usan.

Emilio

A mi me ha pasado, exactamente lo de la columna externa, y que por ejemplo, el nombre de la variable externa es XX y en el cuadro donde la muestro, la llamo de otra forma.

Saludos

Buenas Leo la ese error me paso otras veces cuando también quise clonar una operación.
Al igual que como hiciste con los datos tabla, también tenes que eliminar los cortes de control de los cuadros y ya estaría andando.

José, efectivamente le saqué los cortes de control al cuadro y anduvo correctamente. Gracias!

Hola Emilio, ya apareció el motivo del error, de todas formas gracias por el dato, es muy útil para poder tener mas info de cualquier otro error.

Hola Leo,

Te referis a consultas incluidas dentro de los metadatos o a archivos de consultas que se estan usando desde los componentes?.

Otra cosa que estoy resolviendo manualmente es el error que indica que ya existe un DT en el proyecto origen, debo desvincular los DTs en la operación del proyecto origen, clonar la operación, y luego vincular nuevamente los DTs en la operación del proyecto origen (y luego en la operación clonada en el proyecto destino).

Esta parte no la entendi, te referis al proyecto destino no?, eso es asi porque desde la version 1.0.1 una misma tabla no puede tener mas de un objeto de persistencia dentro del mismo proyecto.

El error por el cual consulto es el siguiente, al querer clonar una operación me devuelve el error, sin mayor información que:

AP_TABLA: [apex_objeto_cuadro_col_cc]: ERROR en la carga de una columna externa.

Alguna idea de como obtener algún detalle adicional o por donde encarar la búsqueda?

Esto es un bug que surge porque se intenta actualizar el valor de una columna externa la cual participa a nivel informativo de la tabla… pero que por la estructura de la relacion (un rombo), termina intentando actualizarse en respuesta a la sincronizacion de uno de sus padres, eso genera que se busquen registros en la otra tabla padre que aun no fueron persistidos, como el dato esta marcado ‘obligatorio’ se genera el error.

Aca hay dos temas:

  • No tiene sentido que esta columna sea obligatoria, ya que solo se usa con fines visuales a partir de un valor que si lo es.
    Este cambio ya lo subí, lo que mitiga el problema por ahora.

  • Hay que ver la forma de determinar cuando corresponde disparar una actualizacion de columnas externas en una relacion tipo rombo, actualmente se dispara como consecuencia de la sincronizacion de cada padre, habria que ver si se puede manejar sin tener que hacer un overhauling de todo el proceso.

En que rama estas trabajando? asi te mergeo el fix del editor.
De todas maneras, el clonador es bastante viejo y muchas cosas se cambiaron en el medio, asi que puede que te encuentres con algunas fallas mas.
Yo lo usaria unicamente para clonar componentes individuales dentro del mismo proyecto, para hacer cosas inter-proyectos usaria el asistente de importacion, que tiene en cuenta otros aspectos como puntos de montaje, etc.

Saludos

Hola Richard,

En principio te cuento el contexto en el que estoy clonando operaciones para que sirva de referencia.
Estoy trabajando en SIU Calchaquí, se creo un nuevo proyecto toba con la versión 2, y se fueron moviendo operaciones de SIU Calchaquí 1 a 2 en forma gradual.

Con consultas me refiero a los datos de las consultas que se guardan en la tabla apex_consulta_php, si el registro no existe la operación devuelve error y no se clona, lo solucioné moviendo los registros de las consultas que necesitaba con un INSERT SELECT (desde Calchaquí 1 a 2) previo a clonar la operación.

Si, entiendo, pero en esos casos no se puede realizar la vinculación al objeto de persistencia existente en el proyecto destino?

Gracias por el dato, donde encuentro documentación sobre el asistente de importación?
Por el contexto que te comentaba estoy utilizando mucho la operación de clonar para mover operaciones de un proyecto a otro, las cosas que fuí encontrando las puse en el foro por si alguien tiene un escenario parecido (de hecho me sirvió un post que publicaron sobre como renombrar un proyecto toba, con la secuencia de pasos que había realizado para poder hacerlo con éxito).

Saludos
Leo

Si, ese es un inconveniente que tiene el clonado, como lo que se guarda es la fk hacia esa tabla… al querer buscarla en el otro proyecto no la encuentra y palma, el tema con clonar tambien esos archivos de consultas (consulta_php) es que pueden tener referencias a archivos puntuales del proyecto, con lo cual zafas la clonacion de los metadatos pero se rompe en runtime.

El proceso para solucionarlo es molesto, eso es indiscutible… el tema es poder meter un caso particular en el esquema de clonacion (que requiere una revisada seguro), para salvaguardar este caso puntual, quizas clonando igual pero sin los datos para esa consulta, aunque deberia ser una decision del usuario.

[quote="richard post:7, topic:7536"] Esta parte no la entendi, te referis al proyecto destino no?, eso es asi porque desde la version 1.0.1 una misma tabla no puede tener mas de un objeto de persistencia dentro del mismo proyecto. [/quote] Si, entiendo, pero en esos casos no se puede realizar la vinculación al objeto de persistencia existente en el proyecto destino?

Si, habria que hacer una busqueda en el proyecto destino, por el momento el clonador replica a lo bobo y hay que salvaguardar estos casos a mano.

[quote="richard post:7, topic:7536"] Esto es un bug que surge porque se intenta actualizar el valor de una columna externa la cual participa a nivel informativo de la tabla.. pero que por la estructura de la relacion (un rombo), termina intentando actualizarse en respuesta a la sincronizacion de uno de sus padres, eso genera que se busquen registros en la otra tabla padre que aun no fueron persistidos, como el dato esta marcado 'obligatorio' se genera el error.

Aca hay dos temas:

  • No tiene sentido que esta columna sea obligatoria, ya que solo se usa con fines visuales a partir de un valor que si lo es.
    Este cambio ya lo subí, lo que mitiga el problema por ahora.

  • Hay que ver la forma de determinar cuando corresponde disparar una actualizacion de columnas externas en una relacion tipo rombo, actualmente se dispara como consecuencia de la sincronizacion de cada padre, habria que ver si se puede manejar sin tener que hacer un overhauling de todo el proceso.

En que rama estas trabajando? asi te mergeo el fix del editor.
De todas maneras, el clonador es bastante viejo y muchas cosas se cambiaron en el medio, asi que puede que te encuentres con algunas fallas mas.
Yo lo usaria unicamente para clonar componentes individuales dentro del mismo proyecto, para hacer cosas inter-proyectos usaria el asistente de importacion, que tiene en cuenta otros aspectos como puntos de montaje, etc.

Saludos
[/quote]
Gracias por el dato, donde encuentro documentación sobre el asistente de importación?
Por el contexto que te comentaba estoy utilizando mucho la operación de clonar para mover operaciones de un proyecto a otro, las cosas que fuí encontrando las puse en el foro por si alguien tiene un escenario parecido (de hecho me sirvió un post que publicaron sobre como renombrar un proyecto toba, con la secuencia de pasos que había realizado para poder hacerlo con éxito).

No hay documentacion hasta donde recuerdo, aunque habia unos videos pero no se si siguen funcionando, igual son muy windows like y autoexplicativos… asi que no creo que tengas problemas.

Vendria a ser un derivativo del Calchaqui este nuevo proyecto no?.. probablemente te vayas encontrando con algunas cosas mas, asi que postealas nomas, vamos a intentar darte la mejor solucion posible.

Saludos

Perfecto, pruebo de usar el asistente de importación en las próximas operaciones que tenga que importar, no conocía esta forma de importar operaciones, por eso utilizaba el clonar.
Si bien es SIU Calchaquí (se le asignó versión 2), vendría a ser un derivativo de su versión anterior, con la cual no existe necesidad de compatibilidad entre versiones (solo se toman los datos de la BD de negocio que se generaron en la versión anterior), cada año se saca una nueva versión.

Saludos

Como solucionaste esos primeros errores con "queries "? Gracias

Hola,

Te paso los queries, pero antes te comento que Richard recomendó utilizar el Asistente para importar operaciones en vez de usar la opción Clonar (y en mi experiencia utilizando el Asistente la clonación de operaciones funciona mucho mejor).

Incluso estos queries solo resuelven una parte de los problemas que podés tener al usar la operación Clonar.

Esto pasa todos los queries de un proyecto a otro:


insert into desarrollo.apex_consulta_php
select '{proyecto nuevo}', consulta_php, clase, archivo_clase, archivo, descripcion, '{punto de acceso proyecto nuevo}' from desarrollo.apex_consulta_php where proyecto = '{proyecto viejo}'

Esto pasa todos los usuarios de un proyecto a otro:


insert into desarrollo.apex_usuario_grupo_acc
select '{proyecto nuevo}', usuario_grupo_acc, nombre, nivel_acceso, descripcion, vencimiento, dias, hora_entrada, hora_salida, listar, permite_edicion from desarrollo.apex_usuario_grupo_acc where nombre <> 'Administrador'

Saludos
Leo