[SOLUCIONADO] Error al exportar cuadros

Hola! Estamos trabajando en un sistema con toba 1.4.8, y tenemos un problema al exportar un docuento al momento de definir la exportacion desde el evento del ci que contiene la pantalla. En la mayoria de los casos dentro de nuestro proyecto tenemos un solo cuadro por pantalla, por lo que la exportación no tiene grandes inconvenientes y se aplica tildando la opción “Exportar a Excel” que se encuentra en las propiedades de la pantalla, de esta manera funciona correctamente.
Pero si tenemos varios cuadros en la pantalla y queremos ver toda la informacion en un solo documento (excel, pdf, impresion o vista preliminar) implementamos la exportacion configurando los 4 eventos en el ci. Existe un filtro a partir del cual se completan los cuadros, si exportamos la informacion antes de filtrar los archivos se generan sin problemas, mostrando solo los titulos y el texto “No hay datos cargados”, pero si existe informacion cargada en los cuadros e intentamos exportar aparece el error. Utilizando la herramienta Logger encontramos la posible causa del problema, los cuatro cuadros se completan en base a un filtro con 3 parametros (facultad, mes y ejercicio), segun lo que muestra el log y lo que pudimos interpretar del manejo interno de toba es que al momento de realizar la exportacion vuelve a hacer la consulta a la base de datos en vez de utilizar los datos que estan en pantalla, y el error surge porque le faltan los parametros, que deberian venir del filtro, la pregunta seria ¿Como le envio los parametros que necesita? si desconozco la sección del código en donde invoca a la consulta nuevamente, es un poco complicado de explicar, pero adjunto la clase que estamos utilizando, el archivo sistema.log y el error que aparece en la pantalla para ver si alguien nos puede dar una mano.
Muchas Gracias!
Alejandra.-


<?php

class ci_mostrar_parte extends toba_ci
	{	
	protected $s__filtro_facultad;
	
	function conf()
	{
		$this->pantalla()->set_modo_descripcion(false);
	}
	
	function conf__bajas($cuadro)
	{
		if (isset($this->s__filtro_facultad)) {
			//$this->s__datos_parametros_consulta es un array que se arma cuando carga el filtro. Si no hay parte registrado, no debe consultar nada.
			$cuadro->set_datos(dt_desig_baja::get_bajas_de_parte_novedad($this->s__datos_parametros_consulta));
		}
	}

	//-----------------------------------------------------------------------------------
	//---- designaciones ----------------------------------------------------------------
	//-----------------------------------------------------------------------------------

	function conf__designaciones($cuadro)
	{
		if (isset($this->s__filtro_facultad)) {
			//$this->s__datos_parametros_consulta es un array que se arma cuando carga el filtro. Si no hay parte registrado, no debe consultar nada.
			$cuadro->set_datos(dt_designaciones::get_designaciones_de_parte_novedad($this->s__datos_parametros_consulta));
			
		}
	}

	//-----------------------------------------------------------------------------------
	//---- filtro -----------------------------------------------------------------------
	//-----------------------------------------------------------------------------------

	function conf__filtro()
	{
		if (isset($this->s__filtro_facultad)) {
			return $this->s__filtro_facultad;
		}
	}

	function evt__filtro__filtrar($datos)
	{
		$this->s__filtro_facultad = $datos;
		$this->s__datos_parametros_consulta = array('codc_uacad' => $this->s__filtro_facultad['codc_uacad'],
														 'idmes' => $this->s__filtro_facultad['idmes'],
														  'anio' => $this->s__filtro_facultad['ejercicio']);	
	}

	function evt__filtro__cancelar() 
	{
		unset($this->s__filtro_facultad);
	}

	//-----------------------------------------------------------------------------------
	//---- licencias --------------------------------------------------------------------
	//-----------------------------------------------------------------------------------

	function conf__licencias($cuadro)
	{
		if (isset($this->s__filtro_facultad)) {
			$cuadro->set_datos(dt_designaciones_licencias::get_licencias_de_parte_novedad($this->s__datos_parametros_consulta));
		}
	}

	//-----------------------------------------------------------------------------------
	//---- suplencias -------------------------------------------------------------------
	//-----------------------------------------------------------------------------------

	function conf__suplencias($cuadro)
	{
		if (isset($this->s__filtro_facultad)) {
			$cuadro->set_datos(dt_designaciones::get_suplencias_de_parte_novedad($this->s__datos_parametros_consulta));
		}
	}

	function vista_impresion($salida)
	{
		$salida->titulo("Parte de Novedades");
		//$salida->mensaje('Nota: Este es el Principal');
		$this->dependencia('designaciones')->vista_impresion($salida);
		$this->dependencia('suplencias')->vista_impresion($salida);
		$this->dependencia('licencias')->vista_impresion($salida);
		$this->dependencia('bajas')->vista_impresion($salida);
		$salida->salto_pagina();
	}
	
	function vista_pdf(toba_vista_pdf $salida)
	{
		//Cambio lo márgenes accediendo directamente a la librería PDF
		$pdf = $salida->get_pdf();
		$pdf->ezSetMargins(80, 50, 60, 30);	//top, bottom, left, right
		//Inserto los componentes usando la API de toba_vista_pdf
		$salida->titulo("Parte de Novedades");
		$salida->separacion();
		$salida->separacion();
		$salida->separacion();
		$this->dependencia('designaciones')->vista_pdf($salida);
		$this->dependencia('suplencias')->vista_pdf($salida);
		$this->dependencia('licencias')->vista_pdf($salida);
		$this->dependencia('bajas')->vista_pdf($salida);
		//Pie de página
		$formato = 'Página {PAGENUM} de {TOTALPAGENUM}';
		$pdf->ezStartPageNumbers(300, 20, 8, 'left', $formato, 1);	//x, y, size, pos, texto, pagina inicio		
		//Encabezado
		$pdf = $salida->get_pdf();
		foreach ($pdf->ezPages as $pageNum=>$id) {
			$pdf->reopenObject($id);
			$imagen = toba::proyecto()->get_path().'/www/img/2logo_toba_siu.jpg';
			$pdf->addJpegFromFile($imagen, 50, 780, 141, 45);	//imagen, x, y, ancho, alto
          	$pdf->closeObject();		
		}
	}
	
	function vista_excel(toba_vista_excel $salida)
	{
		$excel = $salida->get_excel();
		$excel->setActiveSheetIndex(0);
		$salida->separacion(1);
		$this->dependencia('designaciones')->vista_excel($salida);
		$salida->separacion(3);
		$this->dependencia('suplencias')->vista_excel($salida);
		$salida->separacion(3);
		$this->dependencia('licencias')->vista_excel($salida);
		$salida->separacion(3);
		$this->dependencia('bajas')->vista_excel($salida);
		$excel->getActiveSheet()->setTitle('Parte de Novedades');
	}	
}
?>


Hola Alejandra,

cuando se llama a los servicios de exportacion se configuran nuevamente los componentes que estan en la pantalla. Por tanto si en dicho metodo se realizaba la consulta entonces la misma se realizara nuevamente. Puntualmente en tu caso creo que el tema esta en que la variable s__datos_parametros_consulta no esta declarada y por tanto no se esta persistiendo su valor entre los pedidos de pagina, a diferencia de la variable s__filtro_facultad que si… por lo que entra en el conf del cuadro, intenta cargar sus datos pero al metodo de carga le esta enviando un valor desconocido… probablemente en los logs de apache salga algun warning o notice por no haber encontrado la variable declarada.

En definitiva, con declarar la variable s__datos_parametros_consulta en teoria deberia solucionarse :).

Saludos

Gracias Ricardo!!! Ese era el problema, declare s__datos_parametros_consulta como variable de sesion y logre exportar todos los cuadros perfectamente. : )