Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hola.
Agradecería una ayuda con esta consulta:
Tengo el siguiente gráfico de tabla en el que quiero mostrar sólo los productos que hayan tenido compras en el período especificado (y según los filtros establecidos). El problema es que me muestra todos los productos que han tenido movimientos de VENTA y como digo, la condición que quiero imponer es que ese producto haya tenido compras.
Si añado al Multi-Box el filtro "Unidades_Compradas" y filtro por Unidades_Compradas>0, filtra las compradas, pero en las ventas de esos mismos productos salen a CERO.
El modelo viene a ser:
Y la expresión que utilizo en la columna Unidades (CO, compras); (VE, ventas...):
Hola, es difícil responder sin poder ver la tabla y hacer pruebas. Por si te sirve: la confición para comprobar si tiene compras (la que has puesto de ejemplo con el if) debería de estar en todas las expresiones, si una de las expresiones no la tiene intentará calcularse para todas las referencias, tanga o no compras, y eso hará que el valor de la dimensión salga para toda la tabla.
Gracias! era tan simple como eso. Anidar las otras expresiones en la expresión filtro de compras..
Un saludo y nuevamente gracias!
Buenas, para el caso de los totales 2 soluciones:
- Añadir un Aggr para que haga la condición por referencia:
Sum(Aggr(
If(Sum({$<[Tipo]={'CO'},[FechaOperacion]={'>=$(=Date(PCDesde))<=$(=Date(PCHasta))'}>} Unidades_Recibidas)<>0,
If(Sum({$<[Tipo]={'VE1','VE2'},[FechaOperacion]={'>=$(=Date(PVDesde))<=$(=Date(PVHasta))'}>} Unidades_Vendidas)<>0,
Sum({$<[Tipo]={'VE1','VE2'},[FechaOperacion]={'>=$(=Date(PVDesde))<=$(=Date(PVHasta))'}>} Unidades_Vendidas))).
,[NombreCampoReferencia]))
- Probar a añadir en todas las expresiones un set analysis que filtre los productos con ventas.
If(Sum({$<[Tipo]={'VE1','VE2'},[FechaOperacion]={'>=$(=Date(PVDesde))<=$(=Date(PVHasta))'},[CampoReferencia]=P({<[CampoReferencia]={"=Sum({$<[Tipo]={'CO'},[FechaOperacion]={'>=$(=Date(PCDesde))<=$(=Date(PCHasta))'}>} Unidades_Recibidas)<>0"}>} [CampoReferencia])>} Unidades_Vendidas)<>0,
Sum({$<[Tipo]={'VE1','VE2'},[FechaOperacion]={'>=$(=Date(PVDesde))<=$(=Date(PVHasta))'},[CampoReferencia]=P({<[CampoReferencia]={"=Sum({$<[Tipo]={'CO'},[FechaOperacion]={'>=$(=Date(PCDesde))<=$(=Date(PCHasta))'}>} Unidades_Recibidas)<>0"}>} [CampoReferencia])>} Unidades_Vendidas)))
Lo que observo es que siempre que haya una referencia que haya registrado al menos, una compra, una venta, o que ni aún siendo comprado ni vendido en ese período, tenga stock, esa referencia se mostrará. Como digo, lo que pretendo es que sólo muestre referencias con compras en el período y filtros especificados.
Hola, es difícil responder sin poder ver la tabla y hacer pruebas. Por si te sirve: la confición para comprobar si tiene compras (la que has puesto de ejemplo con el if) debería de estar en todas las expresiones, si una de las expresiones no la tiene intentará calcularse para todas las referencias, tanga o no compras, y eso hará que el valor de la dimensión salga para toda la tabla.
Gracias! era tan simple como eso. Anidar las otras expresiones en la expresión filtro de compras..
Un saludo y nuevamente gracias!
Bueno, creo que me he precipitado un poco porque lo cierto es que el resultado no es correcto.
Al anidar las otras expresiones, no muestra las referencias que no se han comprado en el período especificado, pero las calcula igualmente en los totales. Como se ve, tanto en stock como en ventas, los totales no coinciden.
La expresión anidada que utilicé es:
//Si hay compras:
=If(Sum({$<[Tipo]={'CO'},[FechaOperacion]={'>=$(=Date(PCDesde))<=$(=Date(PCHasta))'}>} Unidades_Recibidas)<>0,
//Entonces, si hay ventas, mostrar ventas.
If(Sum({$<[Tipo]={'VE1','VE2'},[FechaOperacion]={'>=$(=Date(PVDesde))<=$(=Date(PVHasta))'}>} Unidades_Vendidas)<>0,
Sum({$<[Tipo]={'VE1','VE2'},[FechaOperacion]={'>=$(=Date(PVDesde))<=$(=Date(PVHasta))'}>} Unidades_Vendidas))).
Así con el resto de columnas.
Buenas, para el caso de los totales 2 soluciones:
- Añadir un Aggr para que haga la condición por referencia:
Sum(Aggr(
If(Sum({$<[Tipo]={'CO'},[FechaOperacion]={'>=$(=Date(PCDesde))<=$(=Date(PCHasta))'}>} Unidades_Recibidas)<>0,
If(Sum({$<[Tipo]={'VE1','VE2'},[FechaOperacion]={'>=$(=Date(PVDesde))<=$(=Date(PVHasta))'}>} Unidades_Vendidas)<>0,
Sum({$<[Tipo]={'VE1','VE2'},[FechaOperacion]={'>=$(=Date(PVDesde))<=$(=Date(PVHasta))'}>} Unidades_Vendidas))).
,[NombreCampoReferencia]))
- Probar a añadir en todas las expresiones un set analysis que filtre los productos con ventas.
If(Sum({$<[Tipo]={'VE1','VE2'},[FechaOperacion]={'>=$(=Date(PVDesde))<=$(=Date(PVHasta))'},[CampoReferencia]=P({<[CampoReferencia]={"=Sum({$<[Tipo]={'CO'},[FechaOperacion]={'>=$(=Date(PCDesde))<=$(=Date(PCHasta))'}>} Unidades_Recibidas)<>0"}>} [CampoReferencia])>} Unidades_Vendidas)<>0,
Sum({$<[Tipo]={'VE1','VE2'},[FechaOperacion]={'>=$(=Date(PVDesde))<=$(=Date(PVHasta))'},[CampoReferencia]=P({<[CampoReferencia]={"=Sum({$<[Tipo]={'CO'},[FechaOperacion]={'>=$(=Date(PCDesde))<=$(=Date(PCHasta))'}>} Unidades_Recibidas)<>0"}>} [CampoReferencia])>} Unidades_Vendidas)))