Hola Natalia,
hay dos temas en tus preguntas:
Por un lado, como es la relacion entre ci, cn y el resto… toda operacion con componentes (ya que en toba podes tener de otros tipos) tiene al menos un controlador de interface (ci), que es un contenedor de otros componentes (cuadro, formulario, etc) y puede tener o no un controlador de negocio (cn). Dentro del CI, se van a especificar metodos que van a actuar como listeners de eventos que se produzcan desde el cliente hacia el servidor, en esos metodos es donde se produce el intercambio de informacion y en donde ademas, podes manipular el comportamiento de los componentes.
Entonces, dentro del CI vas a definir los metodos para interactuar con el cuadro, formulario, filtro etc… y dentro de esos metodos podes invocar ya sea un CN o directamente algun componente de persistencia, eso depende de la arquitectura que se haya elegido. En tu caso, podes invocar la carga de la relacion desde el listener del evento de seleccion digamos, el cual recibe por parametro los datos que envia el cliente.
function evt__cuadro__seleccion($datos)
{
$this->dep('relacion')->cargar($datos); //Accediendo directamente a la relacion enviando los datos que eligio el cliente
//O tambien podria hacerse la llamada via un CN que accede a la relacion
//$this->cn()->cargar_relacion($datos);
}
Los datos a los metodos llegan via Toba, que se encarga de enmascarar la interaccion y el envio de datos entre cliente y servidor, entonces mientras el cliente solo presiona un boton que dispara un pedido de pagina, Toba en dicho pedido envia la informacion necesaria para que el servidor se entere no solo que interaccion es la que se esta llevando a cabo, sino los datos que involucra la misma. A vos lo que se te presenta en el CI, es la invocacion a un metodo especifico al cual se le pasan los datos enviados por el cliente como parametro, de forma que solo debas preocuparte del manejo de los datos y no de como se intercambia eso entre el server y el cliente.
Con respecto a la parte de la carga de la relacion en si, se espera un array porque en ocasiones es necesario pasar mas de una columna (clave compuesta) con valores de carga y multiplexar esos valores para luego separarlos es mucho menos legible y engorroso, que simplemente utilizar un array para especificar el valor de cada campo.
Te recomiendo que vayas leyendo la wiki a medida que vas probando (tambien la referencia de la API), el consejo de Jhon sobre toba_referencia es valido y bueno, le podes meter toda la mano que quieras a ese proyecto haciendo pruebas. Cualquier duda que tengas planteala aca en el foro, igualmente primero intenta buscar ya que hay un monton de hilos sobre consultas que se fueron haciendo con el tiempo… puede que tu respuesta ya haya sido dada y sino, sin verguenza nomas pregunta que te vamos a ayudar en todo lo que podamos.
Saludos