En TheSEEDGestión 1.0 tomamos la decisión de prescindir de los localizadores que nos ofrece la plataforma Velneo para montar nuestros propios localizadores.
Al final decidimos utilizar la misma pantalla tanto el mantenimiento de la tabla como para localizar registros de esa misma tabla.

Este post complementará al post anterior en el que explicábamos como montar un panel de búsqueda: http://www.theseedsc.com/blog/panel-de-busqueda/
Veamos como hemos de montar una pantalla de mantenimiento / localizador de artículos:
Tengo una tabla estática donde voy a decir cómo será la búsqueda: Alfabética, por Trozos, Palabras, Alguna palabra. Esta tabla está disponible en la open app vBase.

En la tabla ARTICULOS he de tener los siguientes índices: NAME, PARTS y WORDS. En los índices PARTS y WORDS añado los campos por los que voy a buscar. En nuestro caso añadimos las distintas referencias del artículo, su nombre y su nombre TPV. Además añadiremos los índices por los que querramos buscar los artículos. En nuestro caso buscaremos también por Estado, Marca, Familia, Proveedor, Area competencia, Fecha alta y Fecha modificación.
En nuestro caso tenemos una tabla PARAM_BUS que utizamos para tener los distintos campos de tablas por las que vamos a poder buscar.

Ahora vamos a ver el formulario y todos los objetos relacionados.
Tenemos:
- Dos rejillas: ART y ART_LOC. La primera se visualizará en el formulario ART_MAN cuando estemos en mantenimiento de tabla y la segunda se visualizará cuando utilicemos el formulario en modo localizador. Además ART_LOC no tiene asignado un formulario de modificación, ya que en el formulario tendrá asignada una conexión de evento al hacer doble-click.
- Una cesta ART_PRV que utilizaremos para mostrar los registros.
- Un proceso ART_MAN que no hace nada. Tiene como origen .Ninguno y como destino la ficha de la tabla PARAM_BUS. Utilizamos este recurso ya que, desde una acción, no podemos disparar como objeto un formulario con origen una tabla. Y el formulario ART_MAN tiene como origen la tabla PARAM_BUS.
- Un proceso VER_AR. En este proceso tiene como origen la ficha de PARAM_BUS y como destino la lista de ARTICULOS.

- Una búsqueda ART. Esta búsqueda será disparada desde el formulario ART_MAN. En esta búsqueda añadiremos todos los índices por los que querramos buscar. Estos índices estarán condicionados a variables locales que recibirán valor desde un evento situado en el formulario ART_MAN.

- Un bloc ART. Este objeto es opcional y lo usamos para dar la opción al usuario final de ver la información de otra manera.
- Una acción ART. Esta opción disparará dos objetos. El Objeto1 será el proceso ART_MAN y el Objeto2 será el formulario ART_MAN. Como explicamos antes tenemos que disparar el proceso antes para conseguir que, cuando utilizamos el formulario como mantenimiento de artículos, lo devuelva a pantalla completa.
- Un formulario ART_MAN que utilizaremos de formulario de mantenimiento y de localizador.
Este formulario que pertenece a la tabla PARAM_BUS se divide en varias partes:
- PARTE SUPERIOR
Botones para dar de alta, modificar, dar de baja, visualizar/ocultar los parámetros de búsqueda, refrescar los parámetros de búsqueda y exportar a excel.
Tenemos un combobox enlazado al campo BUS_TIP_ATP de la tabla PARAM_BUS y una variable local TXT_BUSQUEDA que utilizaremos para buscar por varios campos.
Botón que lanzará la búsqueda de artículos y un botón que sólo se verá si estoy accediendo como localizador que nos servirá para seleccionar un registro.
En esta zona tenemos los distintos campos, de la tabla PARAM_BUS, por lo que podremos filtrar la búsqueda de artículos.
Esta zona tiene condicionada la visibilidad a una variable local del formulario VER_BUSQUEDA.
En esta zona se encuentran los dos Control Objeto con los que visualizaremos los artículos dependiendo de que estemos en modo mantenimiento o en modo localizador. Cada control tiene una condición de visibilidad al valor de una variable local SOY_LOCALIZADOR.
En este control el primer objeto será el proceso VER_AR y después en cada uno una de las rejillas ART y ART_LOC.
Aunque tengamos dos control objeto igual, al inicializar el formulario no se calcularán los dos ya que sólo recalcularemos el objeto que visualicemos.
EVENTOS IMPORTANTES
INICIALIZAR
En este proceso lo primero que hago es dar valor a los campos de la búsqueda. Lo tenemos que hacer aquí y no utilizando el contenido incial de un campo ya que al disparar el formulario mediante Disparar objeto no respeta los contenidos iniciales de los campos de la tabla.
Lo siguiente que hago es vaciar la cesta ART_PRIV.
Después dependiendo de la variable LNZ que nos indica si queremos que se muestren los registros al cargar el formulario ejecutaré el evento que lanzará la búsqueda
Si no tiene valor LNZ controlaremos con SOY_LOCALIZADOR si tenemos que recalcular una rejilla u otra.
ALTA y BAJA.

Lo único que cambia en estos eventos es que hay que elegir o Interfaz: Formulario de alta o Interfaz: Fomulario de baja.
EDICION
La forma de editar las fichas de artículos es distinta dependiendo que sea un localizador o no ya que la rejilla ART_LOC no tiene formulario de modificación.
BUSCAR
En este evento lo primero que se hace es vaciar la cesta.
Creamos el manejador de objeto con la búsqueda ART pasándole los valores a las variables de la búsqueda.
Disparamos la búsqueda en 3er plano y el resultado lo agregamos a la cesta.
Después dependiendo de si accedo en modo localizador o no recalcularé un control u otro.
REFRESCAR
En este proceso lo primero es vaciar la variable TXT_BUSQUEDA, e inicializar el resto de campos de búsqueda. Después ejecutamos el evento BUSCAR para que nos devuelva toda la lista de artículos.
SELECCIONAR
Este evento se disparará desde el botón de la parte superior derecha y mediante una conexión de evento: Item:doble-click sobre el Control Objeto LISTA_LOC. Con este evento daremos valor a la variable local ARTICULO que retornaremos al evento que llame a este formulario para localizar un registro.
Ya sólo nos queda llamar a este formulario desde otro formulario.
En este ejemplo vamos a hacerlo desde nuestra tabla de líneas de albaranes.
El formulario de líneas de albaranes es el siguiente:
El botón de localizar artículos disparará el siguiente evento.
De este evento lo que nos interesa es la zona incluida en el recuadro rojo. Lo que hacemos es crear un manejador de objeto con el formulario creado anteriormente ART_MAN y le damos valor a la variable del formulario SOY_LOCALIZADOR. Así conseguiremos que nos muestre el botón para seleccionar registros y la rejilla de localizador con la que podremos seleccionar registros mediante el doble-click.
También podemos localizar artículos utilizando la variable local que está dentro del recuadro rojo del formulario de líneas de albarán.
Al perder foco esta variable disparamos el siguiente evento.
De este evento lo que nos interesa es la zona incluida en el recuadro rojo.
Lo primero comprobamos que la variable tenga valor para seguir o finalizar el proceso.
Después llamamos a un proceso en el que le pasamos el valor de la variable y él se encarga de lanzar la búsqueda de artículos y, si el resultado es de más de un registro, lanza el localizador de artículos para seleccionar el que deseemos.
Por último recogeremos el valor del artículo para modificar la línea del documento.
____________________________________________________________________________________________________
Esperamos que el artículo os haya sido de ayuda. Y aunque os parezca mucho trabajo, para el resto de tablas sólo habrá que copiar la estructura y cambiar el origen de la tabla.
Para cualquier aclaración no dudéis en poneros en contacto con nosotros.
Un saludo.