Informe con plurales

Hola, quiero hacer un reporte de Velneo de una tabla maestra (Clientes) y quiero sacar los detalles que se encuentran en tres tablas diferentes (llamemoslas MovsA, MovsB y MovsC).
Para iniciar, he creado un proceso CLI_MOVSA que tiene como tabla asociada “Clientes” origen ficha y tabla destino “MovsA” destino lista. (váyanme corrigiendo donde vaya mal) en el cual lo único que hace este proceso es traerme los plurales usando un índice que me filtra solo los registros del cliente que necesito y los manda a la salida. Lo mismo haré con las otras dos tablas de plurales, de entrada quisiera que funcionara con la primera.
En el informe tengo lo siguiente:

Origenes de datos “clientes”: Abriendo/ejecutando rol=Iteración del subinforme; Tipo de localización=Estático; Tabla=Clientes.

Origen de datos “MovsA”: Abriendo/ejecutando rol=Comienzo del informe;Tipo de localización=Estático; Tabla=MovsA; Padre del origen de dato=Clientes; Proceso del origen de datos=CLI_MOVSA.

Estas últimas configuraciones las encontré en otras entradas de foros.

Ahora viene la parte donde me encuentro atorado (y confundido):
¿Cuál es el orden correcto del detalle? Es decir, para la primera tirada de mi tabla MovsA, en el primer detalle ¿Cuál debería de ser mi origen de datos? (Clientes o MovsA).
En la pestaña “especial” ¿Qué es un origen de datos secundario y para que se usa?
¿A este detalle le debo declarar un agrupamiento? de ser así ¿Cuál sería el origen de datos para el agrupamiento y como debería de ser la formula script del agrupamiento?
Para las siguientes tablas de detalles, ¿Debo de crear más secciones de detalles o estos se crearán como agrupamientos?
Agradezco a todos de antemano por su ayuda.

Hola, comparto mis avances al momento:
Origenes de datos “clientes”: Abriendo/ejecutando rol=Comienzo del informe; Tipo de localización=Estático; Tabla=Clientes.

Origen de datos “MovsA”: Abriendo/ejecutando rol=Origenes de datos hijo (subconsulta);Tipo de localización=Estático; Tabla=MovsA; Padre del origen de dato=Clientes; Proceso del origen de datos=CLI_MOVSA.

Cambios en “abriendo/ejecutando rol” de acuerdo a la documentación de Velneo, pero siguiendo su ejemplo, menciona en una parte:
" Seleccionar el origen de datos definido anteriormente, el de nivel más bajo dentro de la jerarquía, en nuestro ejemplo: artículos."
Primero, en el ejemplo de la documentación oficial, no se carga la tabla “artículos” sino las líneas de factura una factura. Olvidándonos de eso, he puesto como origen del detalle MovsA que es el nivel más bajo (bueno, es sencillo solo tengo 2) y el reporte me sale vació, he puesto Clientes y agregado una agrupación indicando MovsA y agrupando por cliente y ya tengo lo que quiero… hasta el momento.
Ahora viene la segunda parte, integrar los otros detalles.
Mi idea original es tener un reporte como de este tipo:

Cliente 00001
detalle 1 MovsA
detalle 2 MovsA
detalle 3 MovsA
detalle 4 MovsA

detalle 1 MovsB
detalle 2 MovsB

detalle 1 MovsC
detalle 2 MovsC
detalle 3 MovsC

Cliente 00002
etc. etc. etc.

Entonces ahora no se me ocurre como agrupar cada detalle en un mismo cliente.
¿Alguna idea de como declarar los detalles y agrupamientos? ¿o existe otra manera de hacer el reporte?

Hola, comparto mis avances al momento:
Origenes de datos “clientes”: Abriendo/ejecutando rol=Comienzo del informe; Tipo de localización=Estático; Tabla=Clientes.

Origen de datos “MovsA”: Abriendo/ejecutando rol=Origenes de datos hijo (subconsulta);Tipo de localización=Estático; Tabla=MovsA; Padre del origen de dato=Clientes; Proceso del origen de datos=CLI_MOVSA.

Cambios en “abriendo/ejecutando rol” de acuerdo a la documentación de Velneo, pero siguiendo su ejemplo, menciona en una parte:
" Seleccionar el origen de datos definido anteriormente, el de nivel más bajo dentro de la jerarquía, en nuestro ejemplo: artículos."
Primero, en el ejemplo de la documentación oficial, no se carga la tabla “artículos” sino las líneas de factura una factura. Olvidándonos de eso, he puesto como origen del detalle MovsA que es el nivel más bajo (bueno, es sencillo solo tengo 2) y el reporte me sale vació, he puesto Clientes y agregado una agrupación indicando MovsA y agrupando por cliente y ya tengo lo que quiero… hasta el momento.
Ahora viene la segunda parte, integrar los otros detalles.
Mi idea original es tener un reporte como de este tipo:

Cliente 00001
detalle 1 MovsA
detalle 2 MovsA
detalle 3 MovsA
detalle 4 MovsA

detalle 1 MovsB
detalle 2 MovsB

detalle 1 MovsC
detalle 2 MovsC
detalle 3 MovsC

Cliente 00002
etc. etc. etc.

Entonces ahora no se me ocurre como agrupar cada detalle en un mismo cliente.
¿Alguna idea de como declarar los detalles y agrupamientos? ¿o existe otra manera de hacer el reporte?

Pues voy avanzando con este tema. Ya he logrado esto tal y como lo describía gracias a un post que encontré de Paco Satué (gracias nuevamente Paco!!). Este es el enlace:

En el post que publica Paco viene una GRANDIOSA descripción de como asignar los orígenes de datos, el " Abriendo/ejecutando rol" dependiendo de lo que necesitas y sobre todo, como crear los detalles.

El reporte ya está, solo por último lo que no me funciona son dos cosas:

  • En el encabezado de página quiero poner la fecha, pero no hay manera de que aparezca (usando currentDate()).
  • Cree variables para acumular los totales de los detalles, pero estos no suman nada. He puesto las variables en la sección detalle para ver como va acumulando, pero siempre manda cero.

Pues ya técnicamente en el final de mi reporte, las variables para acumular los totales ya funcionan (fue una tontería que creo que no vale la pena platicar).
Sigo sin poder poner la fecha en el reporte, no hay manera en la que pueda aparecer.
Ahora el detalle final, con el cual por fin terminaría mi reporte es la siguiente cuestión:
Mi reporte ya aparece de la siguiente manera:
Cliente 00001
detalle 1 MovsA
detalle 2 MovsA
detalle 3 MovsA
detalle 4 MovsA
total detalles MovsA [VAR1]


detalle 1 MovsB
detalle 2 MovsB
total detalles MovsB [VAR2]


detalle 1 MovsC
detalle 2 MovsC
detalle 3 MovsC
total detalles MovsC [VAR3]


TOTAL MOVIMIENTOS [VAR1 + VAR2 + VAR3]

Cliente 00002
etc. etc. etc.

¿Cuál es mi problema aquí?
Las 3 variables que he declarado las he declarado como SUMA y que se reinicien en el informe, esto por que la estructura del reporte, cada cliente “es un informe”. En lo individual, los subtotales en cada grupo están correctos. Esperaba que al final pudiera simplemente sumar estas 3 variables y así tener mi total general… pero esto no es así. Ya que la Var1, cuando entra el segundo detalle, continúa acumulando el último registro de su grupo tantas veces como detalles hay en el segundo y tercer grupos, por lo que al final Var1 ya no es el valor que espero, lo mismo pasa con Var2 si es que hay registros en el tercer detalle. En mi caso concreto, tengo un cuarto detalle (este solo es informativo y no acumula) por que mi Var3 también hace lo mismo, continúa acumulando el último registro de su detalle tantas veces como registros tenga el 4o detalle.
¿Hay alguna manera de decirle a la formula de suma que solo tome en cuenta el registro cuando esta iterando su detalle y no sume nada en las siguientes iteraciones?
Saludos!

Hola marco_rangel.

Me alegro que vayas avanzando en un tema tan importante como los Informes.

Para tus problemas pendientes:

  • Para imprimir la Fecha actual usa una expresión de texto de la forma
    dateToString(currentDate(), "dd/MM/yyyy") y te evitas problemas con el tipo de dato.

  • Las Variables en los Informes las uso muy poco porque están muy limitadas. Tu problema tiene dificil solución porque las Variables efectívamente se recalculan cada vez que se imprime una nueva línea de Detalle.

Para este caso es mejor que tengas la suma total de Movimientos de cada Cliente en un campo de la tabla Clientes, el cual se habrá calculado mediante la correspondiente Actualización desde las tablas de Movimientos.

Por lo general mi consejo es tener los Acumulados calculados en las tablas de la Base de datos, ya que eso dará más fiabilidad a tus Informes, porque estás imprimiendo el dato real de la Base de datos, en lugar de un importe calculado de manera poco fiable mediante Variables.

Saludos
Paco Satué

Hola Paco!!
En serio agradezco tu respuesta, sobre todo por que me comentaron que estabas de vacaciones.

En serio que el post tuyo que encontré me ayudó a sacar un reporte que impresionó a todos (sobre todo a mis jefes que es lo más importante), solo que pues me faltó la cereza en el pastel.

OK, entonces analizaré alguna manera alterna de sacar el total. Por actualizaciones veré como lo podría implementar ya que creo que las actualizaciones solo funcionan cuando agregas y quitas registros o modificas el dato de cálculo, pero en mi caso el acumulado puede cambiar de acuerdo a un estatus del registro y creo que eso no actualiza.

De igual manera ahora que te lo voy contando, se me ocurre hacer un campo calculado que tenga el “saldo” del registro, que este sea el que se actualice de acuerdo a las condiciones que necesite y revisar si de esta manera me calcula correctamente la actualización.

Ya con esto se me ocurren montones de cosas que puedo probar y ya no estar atorado en algo que al final no me va a dar algún resultado.

Nuevamente te agradezco todo tu apoyo, eres un gran tipo y si en algo puedo yo ayudarte dentro de mis posibilidades cuenta conmigo.

Hola Paco, nuevamente un gusto saludarte y compartirte la solución final de mi reporte:
El asunto se solucionó con activar en la pantalla de “Configuración de informe y página” la opción “Actualizar sólo las variables del origen de datos en curso” y con eso las variables dejan de acumular en los otros detalles.
De cualquier manera agradezco todo tu apoyo y comparto la solución si sirve para alguien.
Saludos.