[SOLUCIONADO]Comportamiento extraño luego de generar un PDF

Hola, les comento el problema que estoy teniendo:
Luego de generar una impresión en PDF (la hice extendiendo la clase ezpdf) al hacer un clic sobre cualquier evento no hace nada (no ejecuta ni invoca nada, revisé el log también) pero si luego volvemos a hacer un clic sobre el mismo evento sí responde a lo solicitado. La verdad no le encuentro una explicación a esto que ocurre.

Estoy trabajando con Toba 2.1.0
Php 5.3.5
Postgres 8.2
Apache 2.2

Espero haber sido claro.

Saludos.
Alejandro.

Hola Alejandro,

te hago una consulta, cuando le das el primer click al evento… viaja hasta el servidor?. Podrias postear el codigo del CI?

Saludos

Richard, te adjunto el log luego del 1er. click sobre un evento y luego del 2do. click sobre el mismo evento:

LUEGO DEL PRIMER CLICK
-o-o-o-o-o-
Fecha: 09-11-2011 12:13:10
Operacion: Alta o modificación de una DDJJ
Usuario: 29678502
Version-PHP: 5.2.5
Servidor: localhost
URI: /ddjj/1.0/aplicacion.php?ah=4eba8a5f5a534&ai=ddjj||23000015
Referrer: http://localhost/ddjj/1.0/aplicacion.php?tm=1&ai=ddjj||23000015
Host: 127.0.0.1

[DEBUG][ddjj] PUNTO DE MONTAJE: se cargó exitosamente el autoload del punto de montaje proyecto
[INFO][toba] Se detecto cambio de operación. Se limpia la memoria de la operacion
[DEBUG][toba] [SECCION] Iniciando componentes…
[INFO][ddjj] PUNTO MONTAJE: se cargó la clase realizar_declaracion_jurada/ci_realizar_declaracion_jurada.php del punto de montaje proyecto. El path del mismo es C:\2.1.0/proyectos/ddjj/php
[DEBUG][toba] componente(23000048): [callback][ ini__operacion ]
[DEBUG][toba] [SECCION] Procesando eventos…
[INFO][toba] componente(23000048): No hay señales de un servicio anterior, no se atrapan eventos
[DEBUG][toba] [SECCION] Configurando dependencias para responder al servicio…
[DEBUG][toba] componente(23000048): Pantalla de servicio: ‘pant_primera’
[DEBUG][toba] componente(23000048): [ callback ] ‘conf__pant_primera’
[DEBUG][toba] Se elimino el evento: alta_ddjj
[DEBUG][toba] Se elimino el evento: alta_ddjj_anterior
[DEBUG][toba] componente(23000048): [ callback ] ‘conf__cuadro_dddj_inicial’
[DEBUG][toba] [SECCION] Respondiendo al servicio__generar_html…

LUEGO DEL SEGUNDO CLICK
-o-o-o-o-o-
Fecha: 09-11-2011 12:13:26
Operacion: Alta o modificación de una DDJJ
Usuario: 29678502
Version-PHP: 5.2.5
Servidor: localhost
URI: /ddjj/1.0/aplicacion.php?ah=4eba8a766216c&ai=ddjj||23000015
Referrer: http://localhost/ddjj/1.0/aplicacion.php?ah=4eba8a5f5a534&ai=ddjj||23000015
Host: 127.0.0.1

[DEBUG][ddjj] PUNTO DE MONTAJE: se cargó exitosamente el autoload del punto de montaje proyecto
[DEBUG][toba] [SECCION] Iniciando componentes…
[INFO][ddjj] PUNTO MONTAJE: se cargó la clase realizar_declaracion_jurada/ci_realizar_declaracion_jurada.php del punto de montaje proyecto. El path del mismo es C:\2.1.0/proyectos/ddjj/php
[DEBUG][toba] componente(23000048): Pantalla de eventos: ‘pant_primera’
[DEBUG][toba] [SECCION] Procesando eventos…
[DEBUG][toba] componente(23000048): [ inicializar_dependencias ]
array (
0 => ‘cuadro_dddj_inicial’,
)
[DEBUG][toba] componente(23000048): [ registrar_evento ] ‘seleccion_carga’ → [ evt__cuadro_dddj_inicial__seleccion_carga ]
array (
0 =>
array (
‘id_ddjj’ => 14,
‘id_persona’ => 1338,
),
)
[INFO][ddjj] PUNTO MONTAJE: se cargó la clase datos/dt_personas.php del punto de montaje proyecto. El path del mismo es C:\2.1.0/proyectos/ddjj/php
[DEBUG][toba] componente(23000072): ddjj_datos_relacion: *** Inicio CARGAR ****************************
[DEBUG][toba] TABLA: [personas]
RESET!!
[DEBUG][toba] TABLA: [personas]
Se resetea el cursor
[DEBUG][toba] AP_TABLA: [personas]
SQL de carga:
SELECT
personas.apellidos,
personas.dir_calle,
personas.dir_numero,
personas.dir_piso,
personas.dir_depto,
personas.codigo_pais,
personas.id_persona,
personas.numero_documento,
personas.nombres,
personas.numero_cuil,
personas.fecha_nacimiento,
personas.telefono,
personas.email,
personas.nacionalidad,
personas.observaciones,
personas.sexo,
personas.usuario,
personas.id_localidad,
personas.legajo,
personas.tipo_documento,
personas.id_provincia,
personas.localidad_ext
FROM
personas as personas
WHERE
personas.id_persona = ‘1338’

[DEBUG][toba] TABLA: [personas]
Carga de datos FILAS: 1
[DEBUG][toba] componente(23000072): ddjj_datos_relacion: *** Fin CARGAR (OK) *************************
[INFO][toba] componente(23000048): [ callback ] ‘evt__pant_primera__salida’ no fue atrapado
[INFO][toba] componente(23000048): [ callback ] ‘evt__pant_inicial__entrada’ no fue atrapado
[DEBUG][toba] [SECCION] Configurando dependencias para responder al servicio…
[DEBUG][toba] componente(23000048): Pantalla de servicio: ‘pant_inicial’
[DEBUG][toba] componente(23000048): [ callback ] ‘conf__pant_inicial’
[INFO][ddjj] PUNTO MONTAJE: se cargó la clase /realizar_declaracion_jurada/form_realizar_ddjj_nueva.php del punto de montaje proyecto. El path del mismo es C:\2.1.0/proyectos/ddjj/php
[DEBUG][toba] componente(23000049): IMPLICITO: modificacion
[DEBUG][toba] componente(23000048): [ callback ] ‘conf__form_realizar_ddjj_nueva’
[DEBUG][toba] [SECCION] Respondiendo al servicio__generar_html…
[INFO][ddjj] PUNTO MONTAJE: se cargó la clase datos/dt_provincias.php del punto de montaje proyecto. El path del mismo es C:\2.1.0/proyectos/ddjj/php
[INFO][ddjj] PUNTO MONTAJE: se cargó la clase datos/dt_pais.php del punto de montaje proyecto. El path del mismo es C:\2.1.0/proyectos/ddjj/php

Si esto no alcanza te adjunto el código del CI (que es bastante extenso por cierto).
Te amplio un poco más del tema: el código que genera la impresión PDF está en una operación de tipo “Aplicación Web - PHP Plano” y es invocado desde un evento a nivel fila de un cuadro cuya acción predefinida es un vínculo a la operación antes detallada.
Espero ser claro.

Saludos.

Hola Jorge,

el tema es el siguiente, en cada pedido de pagina toba va almacenando datos propios en algo que se llama memoria sincronizada, ese espacio de memoria se va renovando en cada pedido de pagina. Cuando vos mandas a generar el pdf al otro item, eso genera un nuevo espacio de memoria, cuando volves a la operacion original y volves a hacer un pedido… se hace referencia a un espacio de memoria que ya no es valido.

Lo que deberias hacer para solucionar eso, es desactivar ese mecanismo temporalmente. Eso se hace mediante la sentencia ‘toba::memoria()->desactivar_reciclado();’ la cual deberias incluir al comienzo del archivo que genera el pdf.

Saludos

Richard, hice lo que me dijiste pero aún no logro que funcione, creo que debo tener otro problema, estuve mirando y no pude determinar cuál es el problema, te paso nuevamente los logs luego de cada clic (el primero cambió):

PRIMER CLICK
-o-o-o-o-o-
Fecha: 11-11-2011 09:33:50
Operacion: Alta o modificación de una DDJJ
Usuario: toba
Version-PHP: 5.2.5
Servidor: localhost
URI: /ddjj/1.0/aplicacion.php?ah=4ebd07fb564db&ai=ddjj||23000015
Referrer: http://localhost/ddjj/1.0/aplicacion.php?ah=4ebd07e83036f&ai=ddjj||23000015
Host: 127.0.0.1

[INFO][toba] Se detecto cambio de operación. Se limpia la memoria de la operacion
[DEBUG][ddjj] INSTALACION “C:\2.1.0/instalacion”
[DEBUG][ddjj] Parametros instancia desarrollo: array (
‘base’ => ‘toba_2_1’,
‘proyectos’ => ‘toba_editor, toba_referencia, toba_usuarios, fichado, ddjj’,
‘tipo’ => ‘normal’,
‘toba_editor’ =>
array (
‘path’ => ‘C:\2.1.0/proyectos/toba_editor’,
‘url’ => ‘/toba_editor/2.1’,
),
‘toba_referencia’ =>
array (
‘path’ => ‘C:\2.1.0/proyectos/toba_referencia’,
‘url’ => ‘/toba_referencia/2.1’,
),
‘toba_usuarios’ =>
array (
‘path’ => ‘C:\2.1.0/proyectos/toba_usuarios’,
‘url’ => ‘/toba_usuarios/2.1’,
),
‘fichado’ =>
array (
‘path’ => ‘C:\2.1.0/proyectos/fichado’,
‘url’ => ‘/fichado/1.0’,
),
‘ddjj’ =>
array (
‘path’ => ‘C:\2.1.0/proyectos/ddjj’,
‘url’ => ‘/ddjj/1.0’,
),
)
[DEBUG][ddjj] INSTANCIA “desarrollo”
[DEBUG][ddjj] Conectando a base ‘toba_2_1’
[DEBUG][ddjj] Parametros de conexion: array (
‘motor’ => ‘postgres7’,
‘profile’ => ‘localhost’,
‘usuario’ => ‘postgres’,
‘clave’ => ‘root’,
‘base’ => ‘toba_2_1’,
‘puerto’ => ‘5432’,
‘encoding’ => ‘LATIN1’,
‘schema’ => ‘desarrollo’,
)
[DEBUG][ddjj] PROYECTO “ddjj”
[DEBUG][ddjj] PUNTO DE MONTAJE: se cargó exitosamente el autoload del punto de montaje proyecto
[DEBUG][ddjj] PROYECTO “ddjj”
[DEBUG][toba] [SECCION] Iniciando componentes…
[INFO][ddjj] PUNTO MONTAJE: se cargó la clase realizar_declaracion_jurada/ci_realizar_declaracion_jurada.php del punto de montaje proyecto. El path del mismo es C:\2.1.0/proyectos/ddjj/php
[DEBUG][toba] componente(23000048): [callback][ ini__operacion ]
[DEBUG][toba] [SECCION] Procesando eventos…
[INFO][toba] componente(23000048): No hay señales de un servicio anterior, no se atrapan eventos
[DEBUG][toba] [SECCION] Configurando dependencias para responder al servicio…
[DEBUG][toba] componente(23000048): Pantalla de servicio: ‘pant_primera’
[DEBUG][toba] componente(23000048): [ callback ] ‘conf__pant_primera’
[DEBUG][toba] Se elimino el evento: alta_ddjj
[DEBUG][toba] Se elimino el evento: alta_ddjj_anterior
[DEBUG][toba] componente(23000048): [ callback ] ‘conf__cuadro_dddj_inicial’
[DEBUG][toba] [SECCION] Respondiendo al servicio__generar_html…

SEGUNDO CLICK
-o-o-o-o-o-
Fecha: 11-11-2011 09:34:07
Operacion: Alta o modificación de una DDJJ
Usuario: toba
Version-PHP: 5.2.5
Servidor: localhost
URI: /ddjj/1.0/aplicacion.php?ah=4ebd081da4df2&ai=ddjj||23000015
Referrer: http://localhost/ddjj/1.0/aplicacion.php?ah=4ebd07fb564db&ai=ddjj||23000015
Host: 127.0.0.1

[DEBUG][ddjj] INSTALACION “C:\2.1.0/instalacion”
[DEBUG][ddjj] Parametros instancia desarrollo: array (
‘base’ => ‘toba_2_1’,
‘proyectos’ => ‘toba_editor, toba_referencia, toba_usuarios, fichado, ddjj’,
‘tipo’ => ‘normal’,
‘toba_editor’ =>
array (
‘path’ => ‘C:\2.1.0/proyectos/toba_editor’,
‘url’ => ‘/toba_editor/2.1’,
),
‘toba_referencia’ =>
array (
‘path’ => ‘C:\2.1.0/proyectos/toba_referencia’,
‘url’ => ‘/toba_referencia/2.1’,
),
‘toba_usuarios’ =>
array (
‘path’ => ‘C:\2.1.0/proyectos/toba_usuarios’,
‘url’ => ‘/toba_usuarios/2.1’,
),
‘fichado’ =>
array (
‘path’ => ‘C:\2.1.0/proyectos/fichado’,
‘url’ => ‘/fichado/1.0’,
),
‘ddjj’ =>
array (
‘path’ => ‘C:\2.1.0/proyectos/ddjj’,
‘url’ => ‘/ddjj/1.0’,
),
)
[DEBUG][ddjj] INSTANCIA “desarrollo”
[DEBUG][ddjj] Conectando a base ‘toba_2_1’
[DEBUG][ddjj] Parametros de conexion: array (
‘motor’ => ‘postgres7’,
‘profile’ => ‘localhost’,
‘usuario’ => ‘postgres’,
‘clave’ => ‘root’,
‘base’ => ‘toba_2_1’,
‘puerto’ => ‘5432’,
‘encoding’ => ‘LATIN1’,
‘schema’ => ‘desarrollo’,
)
[DEBUG][ddjj] PROYECTO “ddjj”
[DEBUG][ddjj] PUNTO DE MONTAJE: se cargó exitosamente el autoload del punto de montaje proyecto
[DEBUG][ddjj] PROYECTO “ddjj”
[DEBUG][toba] [SECCION] Iniciando componentes…
[INFO][ddjj] PUNTO MONTAJE: se cargó la clase realizar_declaracion_jurada/ci_realizar_declaracion_jurada.php del punto de montaje proyecto. El path del mismo es C:\2.1.0/proyectos/ddjj/php
[DEBUG][toba] componente(23000048): Pantalla de eventos: ‘pant_primera’
[DEBUG][toba] [SECCION] Procesando eventos…
[DEBUG][toba] componente(23000048): [ inicializar_dependencias ]
array (
0 => ‘cuadro_dddj_inicial’,
)
[DEBUG][toba] componente(23000048): [ registrar_evento ] ‘seleccion_carga’ → [ evt__cuadro_dddj_inicial__seleccion_carga ]
array (
0 =>
array (
‘id_ddjj’ => 24,
‘id_persona’ => 1338,
),
)
[INFO][ddjj] PUNTO MONTAJE: se cargó la clase datos/dt_personas.php del punto de montaje proyecto. El path del mismo es C:\2.1.0/proyectos/ddjj/php
[DEBUG][toba] componente(23000072): ddjj_datos_relacion: *** Inicio CARGAR ****************************
[DEBUG][toba] TABLA: [personas]
RESET!!
[DEBUG][toba] TABLA: [personas]
Se resetea el cursor
[DEBUG][toba] AP_TABLA: [personas]
SQL de carga:
SELECT
personas.apellidos,
personas.dir_calle,
personas.dir_numero,
personas.dir_piso,
personas.dir_depto,
personas.codigo_pais,
personas.id_persona,
personas.numero_documento,
personas.nombres,
personas.numero_cuil,
personas.fecha_nacimiento,
personas.telefono,
personas.email,
personas.nacionalidad,
personas.observaciones,
personas.sexo,
personas.usuario,
personas.id_localidad,
personas.legajo,
personas.tipo_documento,
personas.id_provincia,
personas.localidad_ext
FROM
personas as personas
WHERE
personas.id_persona = ‘1338’

[DEBUG][toba] TABLA: [personas]
Carga de datos FILAS: 1
[DEBUG][toba] componente(23000072): ddjj_datos_relacion: *** Fin CARGAR (OK) *************************
[INFO][toba] componente(23000048): [ callback ] ‘evt__pant_primera__salida’ no fue atrapado
[INFO][toba] componente(23000048): [ callback ] ‘evt__pant_inicial__entrada’ no fue atrapado
[DEBUG][toba] [SECCION] Configurando dependencias para responder al servicio…
[DEBUG][toba] componente(23000048): Pantalla de servicio: ‘pant_inicial’
[DEBUG][toba] componente(23000048): [ callback ] ‘conf__pant_inicial’
[INFO][ddjj] PUNTO MONTAJE: se cargó la clase /realizar_declaracion_jurada/form_realizar_ddjj_nueva.php del punto de montaje proyecto. El path del mismo es C:\2.1.0/proyectos/ddjj/php
[DEBUG][toba] componente(23000049): IMPLICITO: modificacion
[DEBUG][toba] componente(23000048): [ callback ] ‘conf__form_realizar_ddjj_nueva’
[DEBUG][toba] [SECCION] Respondiendo al servicio__generar_html…
[INFO][ddjj] PUNTO MONTAJE: se cargó la clase datos/dt_provincias.php del punto de montaje proyecto. El path del mismo es C:\2.1.0/proyectos/ddjj/php
[INFO][ddjj] PUNTO MONTAJE: se cargó la clase datos/dt_pais.php del punto de montaje proyecto. El path del mismo es C:\2.1.0/proyectos/ddjj/php

Lo que hice fue agregar la línea: toba::memoria()->desactivar_reciclado(); al comienzo del archivo php que genera el PDF.
Te adjunto el archivo php que genera el PDF.

Gracias por tu tiempo y paciencia.
Saludos.
Alejandro.


Hola Alejandro,

aca mi compañera Florencia ‘chini’ Jarque me acota muy acertadamente, que es necesario al armar el vinculo especificar una celda de memoria diferente para la nueva operacion, de lo contrario se pisan los datos de la actual. Fijate si en las propiedades del vinculo tenes dicho dato seteado, si es asi vemos ya mas el codigo puntualmente.

Saludos

Efectivamente Richard, no tenía seteado ningún dato en la celda de memoria, lo hice y funcionó correctamente.
Como complemento ¿cuál sería la función exacta que cumple la celda de memoria?

Muchas gracias.
Saludos.
Alejandro.