[SOLUCIONADO] Error en la carga de una columna externa

Hola!
Estoy teniendo un error en una personalización, en la cual se agregan “opciones de cursado” a un datos tabla, y se muestran en un cuadro.
Ese cuadro tiene una columna de TURNO, que debe mostrar la descripción del turno, esta es la columna externa que trae el problema.
Al mostrar los datos ya existentes, no hay problema, pero cuando intento agregar una nueva fila, aparece el siguiente error:

 SQL con perfil de datos: SELECT sga_turnos_cursadas.turno,

					   sga_turnos_cursadas.nombre as turno_nombre
				FROM   sga_turnos_cursadas
				WHERE	sga_turnos_cursadas.turno = '1'

AP_TABLA_DB [ci_opciones_cursada]:

 Se esperaba que que conjunto de valores devueltos posean la columna 'estado'

array (

  0 => 
  array (
    'turno' => 1,
    'turno_nombre' => 'Mañana',
  ),
)

toba_error_def: AP_TABLA_DB: ERROR en la carga de una columna externa. [TRAZA]exception 'toba_error_def' with message 'AP_TABLA_DB: ERROR en la carga de una columna externa.' in C:\guarani_3_10_2\lib\toba\php\nucleo\componentes\persistencia\toba_ap_tabla_db.php:1389
Stack trace:
#0 C:\guarani_3_10_2\lib\toba\php\nucleo\componentes\persistencia\toba_ap_tabla_db.php(1239): toba_ap_tabla_db->adjuntar_campos_externos(Array, Array)
#1 C:\guarani_3_10_2\lib\toba\php\nucleo\componentes\persistencia\toba_ap_tabla_db.php(1162): toba_ap_tabla_db->completa_campos_externos_fila_con_proceso(Array, Array)
#2 C:\guarani_3_10_2\lib\toba\php\nucleo\componentes\persistencia\toba_datos_tabla.php(830): toba_ap_tabla_db->completar_campos_externos_fila(Array, 'ins')
#3 C:\guarani_3_10_2\personalizacion\php\U840\nucleo\cursada\opciones_cursado\cn_ent_opciones_cursado_U840.php(27): toba_datos_tabla->nueva_fila(Array)
#4 C:\guarani_3_10_2\personalizacion\php\U840\operaciones\cursada\opciones_cursado\ci_edi_opciones_cursado_U840.php(88): cn_ent_opciones_cursado_U840->agregar(Array)
#5 [internal function]: ci_edi_opciones_cursado_U840->evt__form_opciones__alta(Array)
#6 C:\guarani_3_10_2\lib\toba\php\nucleo\componentes\interface\toba_ci.php(322): call_user_func_array(Array, Array)
#7 [internal function]: toba_ci->registrar_evento('form_opciones', 'alta', Array)
#8 C:\guarani_3_10_2\lib\toba\php\nucleo\componentes\interface\toba_ei.php(300): call_user_func_array(Array, Array)
#9 C:\guarani_3_10_2\lib\toba\php\nucleo\componentes\interface\toba_ei_formulario.php(388): toba_ei->reportar_evento('alta', Array)
#10 C:\guarani_3_10_2\lib\toba\php\nucleo\componentes\interface\toba_ci.php(201): toba_ei_formulario->disparar_eventos()
#11 C:\guarani_3_10_2\php\extension_toba\componentes\interface\guarani_ci.php(30): toba_ci->disparar_eventos()
#12 C:\guarani_3_10_2\lib\toba\php\nucleo\componentes\interface\toba_ci.php(201): guarani_ci->disparar_eventos()
#13 C:\guarani_3_10_2\php\extension_toba\componentes\interface\guarani_ci.php(30): toba_ci->disparar_eventos()
#14 C:\guarani_3_10_2\lib\toba\php\nucleo\toba_solicitud_web.php(135): guarani_ci->disparar_eventos()
#15 C:\guarani_3_10_2\lib\toba\php\nucleo\toba_solicitud_web.php(55): toba_solicitud_web->procesar_eventos()
#16 C:\guarani_3_10_2\lib\toba\php\nucleo\toba_nucleo.php(79): toba_solicitud_web->procesar()
#17 C:\guarani_3_10_2\www\aplicacion.php(27): toba_nucleo->acceso_web()
#18 {main}
Mensaje a usuario: AP_TABLA_DB: ERROR en la carga de una columna externa.

No encuentro la relacion con la columna estado que menciona en el log, ya que para la carga solo necesita el turno, y devolver el nombre del turno. Además en la base de datos la columna estado en la tabla tiene un valor default.

Gracias!

Felipe.

Hola Felipe,

¿Podrías adjuntarnos capturas de todas las solapas de configuración de ese Datos Tabla personalizado?

Si querés hacelo por acá, si no cargá un GDS. Como prefieras.

Saludos,
Fernando

Y una cosa más: copianos el código de la función con la que cargarías la columna.
Gracias!

Hola Fernando! Gracias por la rápida respuesta. Te adjunto lo que me pedís.

     /**
 	         * Retorna el nombre correspondiente a un turno en formato RecordSet.
 	         * Tiene en cuenta el caso de la carga masiva cuando el parámetro es un arreglo.
 	         * 
                 *@param integer/array código de turno o arreglo de códigos de turno.
                 *@return array
                 */
	         function get_nombre_turno($turno)
	         {
		      if (is_array($turno)) {
			  $filtro = guarani_sql::armar_condicion_in($turno, 'sga_turnos_cursadas', 'turno');
		      } else {
			  $turno = toba::db()->quote($turno);
			  $filtro = "sga_turnos_cursadas.turno = $turno";
		      }
		
		      $sql = "SELECT sga_turnos_cursadas.turno,
					        sga_turnos_cursadas.nombre as turno_nombre
				  FROM   sga_turnos_cursadas
				  WHERE	$filtro
		                 ";
		
		      return guarani_db::consultar($sql);
	         }

Capture.PNG

Capture.PNG_thumb.png

Capture1.PNG

Capture1.PNG_thumb.png

Capture2.PNG

Capture2.PNG_thumb.png

Hola Felipe,

Fijate, por las dudas, que en la solapa ‘Carga exerna’ el campo ‘estado’ no haya quedado también seleccionado, junto con ‘turno’, como se ve en la imagen. Si no, es raro el mensaje que deja en función del proceso de carga de columnas externas de Toba.

Si no lo tenías seleccionado, probá borrar la fila de entera de la configuración de la carga externa, guardar, definirla de nuevo, y guardar.

Una cosa más: al ser una columna externa, no tiene mucho sentido definirla como NOT NULL, con que sea NOT NULL la columna “maestro” que se sincroniza sería suficiente (en este caso, turno). Eso podrías ajustarlo tanto en la definición de la columna externa (solapa ‘Columnas’) y en el check ‘Dato obligatorio’ de la carga externa.

Saludos,
Fernando

Buenas! Borrando la fila y volviendola a crear quedó solucionado.

Saludos y gracias!!