|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : mai 2005 Messages : 20 ![]() |
Bonjour,
J'utilise actuellement BO et Webi 6.5. J'ai un problème de conception lors de ma création d'univers. A partir du login utilisateur, je souhaiterai pouvoir faire une requête qui me retourne une valeur pour ensuite la mettre dans une variable. Afin de mettre une condition sur toutes les tables de l'univers en utilisant cette variable. J'ai déjà effectué plusieurs solution mais qui ne me satisfont pas du point de vue des perfs. Solution 1 : Créer un objet Code :
SELECT ... WHERE a = @VARIABLE('BOUSER') Cela répond à la demande mais la requête étant extrêmement volumineuse, elle est trop souvent recalculée lors de rafraîchissement de rapport. Solution 2 : Créer directement dans la base (ou designer) des vues/tables dérivées. Aussi gourmand que la solution du dessus. Y aurait-il une facon de créer une variable locale à l'univers qui soit renseignée une fois à l'ouverture de la session et re exploitable dans les différents objets de l'univers ? Je vous remercie par avance. |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Inscription : mai 2004 Messages : 1 812 ![]() |
Je vois ce que tu veux dire mais malheureusement non, je ne crois pas.
Tu peux peut-être utiliser des macros, ou alors rajouter une table dans ta BDD qui contient pour chaque utilisateur la valeur de la variable. C'est pour faire quoi fonctionnellement ?
__________________
Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes. Mon combat pour les droits des consommateurs face aux abus des grandes marques. |
|
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : mai 2005 Messages : 20 ![]() |
J'utilise ce filtre dans toutes les tables de mon univers pour pouvoir filtrer les données suivant un code région.
Chaque utilisateur (qui est le login BO) a un code région et ne peut voir que les données de sa région. Il y a bien une table qui recense les utilisateurs et leur code région, mais les jointures de cette table avec les autres sont encore une fois trop couteuses. |
|
|
00
|
|
|
#4 | ||
|
Membre Expert
![]() Inscription : mai 2004 Messages : 1 812 ![]() |
Ah ok.
Euh pourquoi ne pas faire une condition du genre : Code :
Et sinon gérer des sécurités dans le superviseur pour chaque utilisateur sur chaque table ? C'est un peu consommateur de temps pour l'administration par contre...
__________________
Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes. Mon combat pour les droits des consommateurs face aux abus des grandes marques. |
||
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : août 2008 Messages : 2 ![]() |
Bonjour nuke_y et Adi81,
vos échanges m'intéressent car je me retrouve confrontée à une problématique semblable. Je viens d'ouvrir une nouvelle discussion intitulée : "restriction objet en fonction du login utilisateur". Pour synthétiser, je créer un nouveau portail Infoview (BO XI) destiné à des magasins (environ 400 pour le moment). J'ai 2 documents BO à leur mettre à disposition. Mais la contrainte est que chaque magasin ne doit avoir accès qu'aux données le concernant. Pour ce faire, j'ai pensé paramétrer le raffraichissement du document en fonction du login utilisateur qui exécute le raffraichissement. Solution plus simple que de créer à chaque fois un nouveau groupe (1 par magasin) avec des droits restrictifs => beaucoup trop couteux en maintenance. Savez vous comment créer un objet (au niveau univers) qui récupère le login connecté (afin d'appliquer cette restriction au niveau de la requete et non du document => trop couteux). Merci pour votre aide. ***CNE*** |
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Inscription : mars 2009 Messages : 1 ![]() |
POUR UTILISER LE LOGIN DANS LES RESTRICTION, uil faut utiliser les restriction au niveau univers et appliquer une restriction du type
<champ controle user>=@variable ('BOUSER') ça fonctionne tres bien en document webi par contre j'ai des pb de rafraichissement de la variable pour les documents deski (client lourd) publiés.. si quelqu'un à une explication et/ou solution sur ce point? Hervé |
|
|
00
|
|
|
#7 |
|
Candidat au titre de Membre du Club
![]() Inscription : décembre 2011 Messages : 30 ![]() |
Bonjour à tous, je suis également dans cette situation.
Nous avons Boxi4 - plusieurs sites avec des reports communs - afin d'être assurer que l'utilisateur ne voit que les données de son site j'aurais voulu filtrer sur le login mais je ne sais pas comment faire. Comment mettre la restriction suivante au niveau univers ? <champ controle user>=@variable ('BOUSER') |
|
|
00
|
|
|
#8 |
![]() ![]() |
Pourquoi ne pas utiliser les restrictions au niveau de l'univers dans ton cas ?
Pour chaque groupe utilisateur appartenant chacun à un site, tu appliques un filtres sur la requête... En fonction de la requête, il faudra s'assurer que la requête passe par la table à filtrer... en ajoutant une condition qui s'applique à tout l'univers... |
|
|
10
|
|
|
#9 |
|
Candidat au titre de Membre du Club
![]() Inscription : décembre 2011 Messages : 30 ![]() |
Bonjour et merci Djam21 pour ta réponse.
Concrètement, je vais avoir 30/50 reports utilisés par plusieurs sites. Afin d'éviter que je multiplie les reports en créant des conditions pour chaque site, il me faut une condition dynamique en fonction de l'utilisateur qui s'applique à tout l'univers et aux reports. Je pensais donc créer une table avec les utilisateurs et leur affecter un code. Ex : pour l'utilisateur 1 => site = 1; pour l'utilisateur 2 => site IN( 1 & 2 & 3). Comment je peux détecter l'utillisateur qui se connecte par BO et appliquer la condition dynamiquement sur l'univers ou les reports ? |
|
|
00
|
|
|
#10 |
![]() ![]() |
Ton utilisateur lambda appartient à un groupe utilisateur qui devra dans ton cas correspondre à un site (voir CMC).
Au niveau Designer, tu as la possibilité d'ajouter un filtre sur ton site en fonction du groupe d'appartenance de ton utilisateur... Une icône positionnée dans la barre des tâches te permet de faire çà. D'un côté (1), tu crées la restriction : il y a un onglet "Table" je pense... Tu y définis la table à filtrer et le filtre sur un de tes sites. Tu fais çà autant de fois que tu as de sites. De l'autre côté (2), tu importes tes groupes utilisateurs "site". Puis tu appliques la restriction (1) à ton groupe (2)... Et voilà... |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com