Puede que sea una pregunta muy simple, pero, por más que leo la definición de “Objeto Cesta” no encuentro la respuesta a mi pregunta, ya que la documentación (para variar) de Velneo es muy escueta.
Mi duda sobre el Objeto Cesta es su ambito. En la documentación dice:
“El contenido de las mismas se almacena en memoria y, por tanto, se borrará una vez finalice la ejecución de la misma.”
Estamos hablando de un sistema Cliente/Servidor, entonces si me dice “se almacena en memoria” ¿Se refiere a la memoria en el servidor o a la memoria en el cliente?
Es decir, en resumen, mi duda es ¿El objeto cesta cuál es su verdadero ámbito?
¿Es general y modificable para cada usuario y todos los usuarios ven lo mismo? (es decir, ¿es un objeto único global al sistema?)
¿o es un objeto local y cada usuario tiene su propia visión del contenido de la cesta?
Finalmente lo que requiero es un contenedor de registros de manera individual por usuario/sesión y quisiera saber si el objeto cesta es suficiente o mejor me voy por una tabla en memoria.
Pues sí, es una pregunta muy simple y es desesperante cómo Velneo a veces no es capaz de transmitir determinados conceptos que son básicos e imprescindibles para nuestras aplicaciones.
La Cesta es un Objeto del proyecto de Aplicación que requiere tener asociada un Objeto Rejilla de la tabla asociada. Esto de la Rejilla haría pensar que las Cestas solo funcionan en 1P, pero no es así, funcionan en cualquier plano.
Por lo tanto:
¿El objeto cesta cuál es su verdadero ámbito?
Ya que es un Objeto de Aplicación, entonces su ámbito dependerá de si se accede a ella en 1P o en 3P.
En 1P la Cesta será compartida solo para la sesión actual conectada a vClient, o sea, el Usuario actual.
En 3P la Cesta será compartida para todos los Usuarios o enganches conectados a la Instancia de aplicación.
¿Es general y modificable para cada usuario y todos los usuarios ven lo mismo? (es decir, ¿es un objeto único global al sistema?)
¿o es un objeto local y cada usuario tiene su propia visión del contenido de la cesta?
Como hemos visto dependerá del plano de ejecución, de la misma manera que ocurre con las Variables globales.
Finalmente lo que requiero es un contenedor de registros de manera individual por usuario/sesión y quisiera saber si el objeto cesta es suficiente o mejor me voy por una tabla en memoria.
Aquí tienes que entender que son Objetos diferentes:
La Cesta contiene solo punteros a los registros que ya existen físicamente en el servidor y la Tabla temporal contiene registros en memoria creados en 1P o 3P.
La Cesta no contiene datos, solo un listado de punteros a unos registros del vServer. La Tabla temporal contiene los registros completos, con sus datos en memoria.
Vaciar una Cesta no elimina datos de la tabla. Vaciar la Tabla temporal eliminará los datos que contenga la tabla en memoria.
Por lo tanto, si necesitas disponer de registros de nueva creación para el usuario/sesión tendrás que usar una Tabla temporal en 1P.
Como verás, al final no era tan simple la pregunta.
Mi estimadisimo Paco, nuevamete mil gracias por la ayuda!!!
Con esto ya no tengo ninguna duda entonces sobre como utilizar este recurso.
Sin duda es la Cesta global lo que necesito y ahora sé como usarla de forma correcta gracias a ti.
Un fuerte abrazo maestro!