El infierno (y II) de las variables locales en Velneo v7
Uno de los problemas más importante a la hora de realizar aplicaciones complejas con Velneo v7 es el de traspaso de la gestión de estado entre los distintos objetos. En un buen artículo reciente de Velneo http://velneo.es/busquedas-con-peticion-de-datos/ se habla de como en una búsqueda podemos utilizar formularios de búsqueda mediante dos posibles montajes:
- O bien usando campos
- O bien usando variables locales: En este segundo montaje nos cuenta como podemos utilizar variables locales en el formulario de búsqueda para que sean inducidas en el objeto búsqueda y utilizadas como parámetros de la misma.
Esta segunda forma de actuar parece no estar disponible en ningún otro caso (si hay algún otro no dudéis en comentar). Esta solución (la de las variables locales inducidas en el caso de las búsquedas) viene a confirmar la necesidad de mejorar la forma de traspaso de valores de variables entre objetos. Cuando queremos traspasar un valor desde una variable local de un objeto a otro objeto contenido en este nos es imprescindible utilizar una variable global y darle u obtener valor en el momento adecuado. Este traspaso supone un doble esfuerzo de cara a la programación (por un lado hay que darle valor y por otro leerlo, además hay que realizarlo mediante los eventos adecuados).
Para este menester nosotros nos ayudamos de uno de nuestros módulos, el módulo de persistencia. Este módulo no sería necesario si los los valores de las variables locales de un objeto cualesquiera fuesen inducidas en todos los objetos contenidos.
Por poner un ejemplo… Imagínese que tenemos un formulario que contiene un control objeto que a su vez lanza un proceso y éste alimenta una multivista compuesta por una primera rejilla, un proceso y un formulario detalle. Si en el formulario contenido en la multivista quiero acceder al valor de una variable local del formulario me es imposible ya que las variables locales del formulario no son visibles desde el formulario. Para resolver esta cuestión típicamente emplearemos una variable global de tal forma que tenga valor antes de ser recalculado el control. Esta misma variable global será la que determine el comportamiento del formulario contenido en la multivisa.
Espero que se entienda esta situación y la posible solución a la misma.
Este problema no solo se limita a las Variables locales,
Si el formulario tiene origen en una Tabla de datos y el control objeto muestra otro formulario de la misma tabla de datos. Si creamos un proceso con origen Ficha y destino la misma Ficha de esa tabla para mostrar el control objeto. Y ponemos el mismo campo de edicion en el formulario principal, y en el formulario del control objeto, los valores escritos en el EDIT del formulario principal, no estan disponibles en el formulario del Control Objeto.
espero haber sido claro
un saludo.
Es un problema de cierta magnitud… Es necesario que la inducción pase al siguiente nivel.