Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hola a todos!!
Tengo desarrollada una aplicación que contempla todas las ventas de productos con sus respectivos datos. A su vez, tengo creado varios usuarios con Section Access para limitar ciertos datos. Ahora bien, el requerimiento que deseo es poder limitar un campo para ciertos usuarios, es decir, no quiero que vean ese campo en el informe que estoy desarrollando.
Espero que haya sido claro y me puedan ayudar. Muchas gracias.
Saludos!!
Hola Héctor,
Si recuerdas en la primer captura de uno de los posteos anteriores, nosotros tenemos un Excel con los siguientes datos:
Entonces lo hemos resuelto de la siguiente forma, creamos una expresión condicional en la Straight Table para el campo en cuestión, utilizando la función OSUSER() de la siguiente manera:
IF(OSUser() ='DOMINIO\TEST3', False(), True())
Esto hace que al loguearse el NTNAME TEST3 al Access Point, filtre ese campo para cualquier USERID (Vendedor) que intente ingresar a la aplicación.
Muchas gracias.
Saludos!!
Hola Andrés,
Para evitar que los usuarios vean algunos campos, puedes usar el campo OMIT de la sección de acceso. Lo ideal es que, como tendrás una casuística de accesos, uses una segunda tabla dentro de la sección de acceso con el perfilado de los usuarios y aquí ya uses el OMIT.
Te paso un hilo en el que se habla de esto mismo: omit section access?
Espero que te sirva...
Saludos,
H
Hola Héctor,
Perdón por la demora en contestar, pero estuve trabajando sobre este tema y no pude resolverlo. Te paso a explicar en detalle lo que estuve haciendo.
En primer lugar tengo un documento excel Accesos.xlsx con los siguientes datos:
Lo que intento hacer con esto es que el USUSARIO1, no tenga permitido ver el campo COSTO_PRODUCCION en la aplicación, entonces utilice la columna OMIT.
Luego utilice un .txt, que va a levantar la app en el main, con la siguiente consulta:
Section Access;
SECURITY:
LOAD ACCESS,
NTNAME,
USERID,
PASSWORD,
VENDEDOR_ID,
EMPRESAS,
OMIT
FROM Accesos.xlsx
(ooxml, embedded labels, table is Accesos);
Section Application;
El problema es que filtra el campo COSTO_PRODUCCION para todos los usuarios seteados en el excel. Y lo que necesito es filtrar ese campo para ese usuario específico.
Si puedes ayudarme, te lo agradecería. Desde ya, muchas gracias.
Saludos!!
Andrés.
Hola Andrés,
¿El campo se llama COSTO_PRODUCCIÓN (en mayúsculas)? Si no es así, debería... Si es así, ¿podrías adjuntar un ejemplo para echarle un vistazo?
Saludos,
H
Hola Héctor,
Si, el nombre del campo es exactamente como te envié, en mayúsculas. Y con respecto a adjuntarte un ejemplo, tengo que analizar como puedo hacer porque la aplicación tiene datos sensibles.
Como siempre, muchas gracias!
Saludos!!
Hola Andrés,
en el fichero excel que utilizas para crear la sección de acceso, prueba a dejar el campo OMIT vacío para aquellos usuarios que deban poder ver todos los campos en lugar de poner el '*'. Creo que este puede ser el motivo de te te omita el campo COSTO_PRODUCCIÓN para dichos usuarios.
Un saludo
Alfredo
Hola Alfredo y hector.munoz.innova,
Antes que nada, muchas gracias por compartirme sus conocimientos, Finalmente el inconveniente que teníamos con mi equipo de desarrollo, era el siguiente, el campo COSTO_PRODUCCION que utilizamos y mostramos en una Straight Table, es un campo compuesto donde se utiliza el COSTO_PRODUCCION_DOLARES o el COSTO_PRODUCCION_PESOS según lo requiera el usuario mediante un List Box, eso permite apreciar el valor en Dolares o Pesos Argentinos seleccionando la opción correspondiente.
Entonces, explicado esto, el problema que teníamos es que al utilizar el OMIT en el Section Access, no encontramos la manera de restringir ese campo compuesto para algunos vendedores.
Por lo tanto, lo solucionamos de la siguiente manera, en el Excel que toma la consulta del Section Access, restringimos los datos de cada vendedor, es decir, que si se loguea el Vendedor1 en la app, solo muestre sus datos. Una vez restringido esto, agregamos una expresión condicional en la Straight Table para el campo en cuestión (COSTO_PRODUCCION) de la siguiente manera VENDEDOR_ID <> 10000000.
En conclusión, restringimos los datos de cada vendedor mediante el Section Access y el campo COSTO_PRODUCCION mediante una expresión condicional en Straight Table. Lo negativo de esto, es que si uno tiene mil vendedores cargados, vas a tener mil ID restringidos en la expresión condicional, pero bueno, por el momento es lo único que encontramos para resolver este inconveniente. Si a ustedes se les ocurre una solución alternativa, será bienvenida.
Una vez más, muchas gracias y espero que haya sido claro en la explicación.
Saludos!
Hola Andrés,
¿No podrías poner ambos campos en la columna OMIT? Entiendo que no quieres que ciertos usuarios vean el costo, ya sea en dólares o en pesos, ¿cierto?
Independientemente, si al final optas por filtrar en la straight table yo usaría perfilado de usuarios en lugar de IFs anidados...por ejemplo, crearía una tabla de mapeo (MAPPING LOAD) en la que tendría los identificadores de los usuarios que no tienen que acceder a la tabla y crearía un campo calculado que se llamase p.e. PERFIL_ACCESO_STRAIGHT_TABLE y que tuviese un 1 si puede acceder y un 0 en caso contrario. Al final la expresión de la tabla simple no se toca (PERFIL_ACCESO_STRAIGHT_TABLE = 1) y solo te tienes que preocupar de actualizar la tablas con los usuarios para los que no quieras que tengan acceso.
No sé si me he explicado...
Saludos,
H
Bien visto, Alfredo!
Hola Héctor,
Respecto a la primer pregunta que me has hecho, ya lo he probado, y el resultado es el siguiente:
Es decir, setea en nulo todos los valores de ese campo en vez de filtrarlo, que es lo que estoy tratando de lograr, quiero que ciertos vendedores no vean esa columna en la Straight Table. Entonces por lo que entiendo, el Section Access no puede filtrar la columna de ese campo en la Straight Table, eso se debe hacer con una expresión condicional desde la misma tabla.
Respecto a la tabla de mapeo, tendría que analizar la lógica de mi ETL, porque la aplicación toma una tabla de hechos que se genera en un ETL con datos de una base de datos Oracle.
No obstante, se me ocurrió otra solución alternativa, crear una variable que tenga todos los id de los vendedores y después en la expresión condicional, utilizar esa variable. Pero tengo que analizarlo.
Muchas gracias Héctor!
Saludos!