Obtener Código Artículo según Tabla de Grupo


([N4] rpaton) #1

Buenos Días:
Tengo las siguientes tablas maestras ARTICULOS, GRUPOS y COD_ART_GRU. En la tabla COD_ART_GRU tengo un registro por cada #ARTICULO_ID y #GRUPO_ID guardando el #CODIGO_GRUPO. COD_ART_GRU está con enlaces maestros a las tablas ARTICULOS y GRUPOS.

 En una rejilla de ARTICULOS quiero poner la columna #ARTICULO_ID y COD_ART_GRU.#CODIGO_GRUPO que resulte resolviendo con una variable que contenga el $GRUPO_ID. Es decir, si en COD_ART_GRU tengo 5 registros, uno por cada uno de los 5 grupos que tengo, quiero que en la rejilla aparezca el código del artículo indicado para el grupo que estoy tratando en cada momento.

Si utilizo en la rejilla COD_ART_GRUPO que está enlazado a ARTICULOS es fácil resolverlo con un Subindexador, pero lo necesito al revés y que sea lo más óptimo posible.

 He intentado poner una función que devuelva el #CODIGO_GRUPO pero en rejillas penaliza mucho los tiempos.

 ¿Se os ocurre alguna idea para dar solución a este caso?

 Saludos

 Ricardo Patón

([N3] blavan) #2

Hola, me cuesta entender, pero me parece que lo que quieres es que desde Articulos mostrar el codigo grupo a que pertenece?
La tabla cod art gru es plural de Articulos y Grupos ¿no?, no entiendo el planteamiento.


([N4] rpaton) #3

Supongamos que tenemos un articulo con codigo 01443 y que me lo sirve 5 proveedores distintos y que cada proveedor tiene su codigo interno propio. En cod art gru registro esos codigos de cada proveedor y los relacion con 01443
Ese codigo es el que quiero presentar junto a mi codigo que esta en la tabla ARTICULOS


([N2] AyudaVelneo) #4

Hola Ricardo:

Me pasa lo que a Benito… no termino de entenderlo. Al mostrar la rejilla de artículos:
1.- ¿cómo sabes a que grupo te quieres referir?
2.- Para todos los artículos que muestres en la rejilla ¿quieres utilizar el mismo grupo?

Un saludo


([N4] rpaton) #5

Hola Francisco:

 1-El código del Grupo lo pondré en una variable global.
 2-Para todos los artículos que muestre voy a utilizar el mismo grupo.

 El caso viene en que tengo que hacer por ejemplo un pedido a un proveedor y ese artículo puedo pedirlo a varios proveedores. Cada proveedor tiene su código y en la pantalla de pedidos cuando indique el proveedor el usuario debe ver mi código y el del proveedor.

 Saludos.

 Ricardo Patón

Adjunto imagen.



([N3] pacosatu) #6

Hola.

Está claro. Ricardo quiere mostrar todos los Artículos en una Rejilla. En una columna de dicha Rejilla quiere mostrar la REFERENCIA de ese Artículo para el Proveedor (GRUPO) que esté seleccionado en ese momento (mediante la Variable Global $GRUPO_ID).

Yo creo que esto es “Un Singular de Plural”, resolviendo el Plural por la variable Global $GRUPO_ID y el #ARTICULO_ID. Esto es la teoría, pero en la práctica parece ser que no es muy óptimo en el Cloud.

Saludos
Paco Satué


([N2] AyudaVelneo) #7

Hola Ricardo:

En la línea de pedidos, siempre puedes poner un campo puntero indirecto a la tabla COD_ART_GRU. Resolviendo con el id del artículo y el grupo.

De esta forma tendrías directamente el registro que quieres.

Otra forma sería hacerlo por proceso. Cuando indiques el artículo y el grupo, cargas la lista de COD_ART_GRU por el indice ART y GRUPO, lees el registro y grabas el id de ese registro leído donde lo necesites.

Un saludo


([N2] AyudaVelneo) #8

Hola Paco:

Si lo que pretende Ricardo es lo que comentas… Ya te digo que no es nada óptimo.

Primero por la variable global… y segundo por el singular de plural

Un saludo


([N3] pacosatu) #9

Hola Vila.

Sí claro, por eso he dicho que es la teoría.
Entonces ¿Cómo lo harías cuando quieres mostrar esa Rejilla? Es decir, quiero navegar por la Rejilla de digamos 200 Artículos, y mostrar en una columna la Referencia del Proveedor seleccionado en ese momento.

¿Qué influencia tiene la caché en esta situación? ¿Los punteros Virtuales siempre van al Servidor a resolverse, ignorando la caché?

Saludos
Paco Satué


([N4] rpaton) #10

Hola:
Efectivamente Paco, eso es lo que pretento navegar por la Rejilla de 200 artículos y mostrar en una columna la Referencia del Proveedor.

¿Quizás el “Data Catcher Edit” podría resolver este caso de forma que sea óptimo en el Cloud?

Saludos.

Ricardo Patón


([N4] rpaton) #11

Hola:
Con la función de la imagen consigo el objetivo pero en Cloud penaliza mucho.
Saludos.

Ricardo Patón



([N4] velavisual) #12

@rpaton

La solución en este tipo de casos siempre pasa por mantener ese campo que deseo mostrar en las rejillas en la propia tabla de artículos.

Lógicamente esto te hace tener que hacer un control en los trigger correspondientes al artículo para que siempre esté actualizado para cuando lo necesitemos mostrar.

Recordad que para que una rejilla sea rápida, siempre debe contener los campos que vaya a mostrar actualizados en la propia tabla que se muestra.No hay otra.Todas las demás funcionalidades de Velneo se han de dejar para la parte del servidor y usarlas cuando sean necesarias en procesos sobre los registros que necesitemos.


([N2] AyudaVelneo) #13

Hola:

En la línea de lo que comenta Antonio, hay que tener cuidado con dicha práctica. Si dos usuarios acceden a la misma lista de registros (o a parte) si un usuario tiene seleccionado un grupo y el segundo otro y modificamos los registros, podemos obtener resultados no deseados.

Un saludo


([N4] rpaton) #14

Hola:
Entonces una posible solución teniendo en cuenta que puede haber varios usuarios utilizando lo mismo sería:
1-Utilizar una tabla en memoria de ARTICULOS.
2-Rellenar la tabla en memoria con un proceso en tercer plano con el artículo interno y el del proveedor que quiero mostrar.
3-Crear la rejilla con la tabla en memoria.

¿Esto sería lo más óptimo para Cloud?

Saludos.

Ricardo Patón


([N3] pacosatu) #15

Hola Ricardo.

La función que planteas es lo mismo que “Un Singular de Plural” nativo de Velneo y por lo tanto NO Óptimo para el Cloud.

Para este caso concreto, nos encontramos con la limitación de la arquitectura Cliente/Servidor de Velneo. El vClient se empeña siempre en mantener conexiones vivas con el vServer, una funcionalidad que está muy bien en redes rápidas y fiables, pero en cloud y 3G es una pesadilla que muestra su lado más negro en las Rejillas. Prueba a quitar el cable ethernet y verás lo que le ocurre al vClient y a la Rejilla.

En definitiva, la solución pasa, como siempre, en tener una Tabla en memoria que rellenas en 3º plano y muestras en la rejilla.

Saludos
Paco Satué


([N4] rpaton) #16

Hola:

Gracias a todos por vuestros comentarios me han ayudado mucho para tomar una decisión.

Saludos.

Ricardo Patón


([N4] innovadb) #17

Creo que hay una solución mas simple si hablamos de una rejilla.

Crea una rejilla de la tabla COD_ART_GRU. Haces la búsqueda sobre esa tabla por el proveedor que quieras y muestras la rejilla.

En esta rejilla puedes usar los enlaces a maestro para mostrar los datos del artículo, y ya no tienes problemas de rendimiento.

Un saludo


([N2] AyudaVelneo) #18

Menos mal que siempre hay alguien sensato que encuentra la solución “zen”…

Y nosotros dándole vueltas a tablas en memoria con procesos en tercer plano etc etc…

Necesito unas vacaciones…


([N4] innovadb) #19

jajajaja, por que me pillasteis inspirado, que si no me podía unir a darle vueltas a las tablas.


([N3] pacosatu) #20

Hola Vila.

No nos liemos, que hay que leer todo el Hilo.

Ricardo ha dicho al principio y yo lo tomo como un requerimiento:

Si utilizo en la rejilla COD_ART_GRUPO que está enlazado a ARTICULOS es fácil resolverlo con un Subindexador, pero lo necesito al revés y que sea lo más óptimo posible.

El tema de discusión es resolver la consulta desde el lado del Maestro (Artículos) y no desde el lado de los Plurales que ya sabemos que Velneo lo hace muy bien de forma nativa gracias a los punteros.

Queda claro que desde el lado del Maestro no es posible hacerlo de forma óptima, a pesar de existir una MARAVILLOSA funcionalidad como la de “Singular de Plural”.

Saludos
Paco Satué