Page 1 sur 2
Créer dossier personnel via lotusscript

Publié:
03 Oct 2011 à 08:53
par mleclercq
Bonjour,
Je voudrais savoir s'il est possible de créer un dossier de type "Partagé, devenant privé à la 1e ouverture" en lotusscript ???
En effet, je parcours une vue et en fonction de l'utilisateur référencé dans la fiche et d'autres critères, je mets ce document dans son propre dossier.
Donc si le dossier n'existe pas, il faut le créer.
Merci pour vos réponses.
Bien cordialement,
Michael

Publié:
03 Oct 2011 à 09:08
par Michael DELIQUE
hello
il n'y a pas de méthode en Ls pour faire celà, pour créer une vue oui (mais toujours partagé). c'est peut être faisable via une API mais je ne la connais pas.
par contre ce qui peut être jouable c'est de créé une vue partagé puis de changé son type, c'est une simple valeur dans un champ systeme de la vue cette fonction un peu vieille et que j'ai pas utilisé depuis une éternité le permet. par contre en fonction des version les valeurs peuvent changer
- Code : Tout sélectionner
Public Function ViewConvert (wDB As NotesDatabase, wPseudoVue As String, wnbConverTO As Integer) As Integer
Dim DBCible As NotesDatabase
Dim vwView As NotesView
Dim ConverTO As String
Dim Doc As NotesDocument
On Error Goto CatchError
ViewConvert = False
rem détect si un pseudo est passé en parametre
If Trim(wPseudoVue) = "" Then
Error 9999,"wPseudoVue vide"
Exit Function
End If
Select Case wnbConverTO
Case 1
ConverTO = "PY"
rem (Partagée)
Case 2
ConverTO = "PYa"
rem (Partagé, contient documents figurant dans aucun dossier)
Case 3
ConverTO = "PYl"
rem (Partagé, contient documents supprimés)
Case 4
ConverTO = "pPY"
rem (Partagé, devenant privé à la 1er ouverture)
Case 5
ConverTO = "poPY"
rem (Partagé, bureau privé à la 1er ouverture)
Case 6
ConverTO = "PYV"
rem (Privé)
Case Else
Error 9999,"Paramètre de conversion érroné"
Exit Function
End Select
rem initialise la base ou est la vue
If Not wDB Is Nothing Then
Set DBCible = wDB
Else
If Session Is Nothing Then
Set Session = New NotesSession
End If
Set DBCible = Session.CUrrentdatabase
End If
Set vwView = DBCible.GetView(wPseudoVue)
If vwView Is Nothing Then
Set DBCible = Nothing
Error 9999, wPseudoVue+" : Introuvable"
Exit Function
End If
Set Doc = DB.GetDOcumentByUNID(vwView.universalID)
If Doc Is Nothing Then
Set vwView = Nothing
Set DBCible = Nothing
Error 9999, wPseudoVue+" : Introuvable"
Exit Function
End If
Call Doc.ReplaceItemValue("$Flags",ConverTO)
Call Doc.save(True,False)
Set vwView = Nothing
Set DBCible = Nothing
Set Doc = Nothing
ViewConvert = True
%REM
Créé en V6
Vue normale :
"Y" visible web+notes+mobile
"PY" idem Y + coché "prohibit design refresh" sans nom héritage
"PY" idem Y + coché "prohibit design refresh" avec nom héritage
"dY" coché "default design for new folders and views"
"YP" coché "default when datyabse is first opened"
Vue calendrier :
"Yc" visible web+notes+mobile
"YcP" idem Y + coché "prohibit design refresh" sans nom héritage
"YcP" idem Y + coché "prohibit design refresh" avec nom héritage
%END REM
Exit Function
CatchError:
Msgbox "("+str(Getthreadinfo (1))+" Call by "+Cstr(Getthreadinfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + Cstr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl),16," ERREUR !"
ViewConvert = False
Exit Function
End Function

Publié:
03 Oct 2011 à 09:26
par mleclercq
Bonjour,
Merci pour ta réponse.
Comment fait-on pour affecter le dossier à un utilisateur donné ?
En effet, si j'ai 10 users, je voudrais créer les 10 dossiers en les affectant à chaque user.
Merci
Michael

Publié:
03 Oct 2011 à 09:27
par Michael DELIQUE
(le partagé devenant privé a lapremiere ouverture) s'en occuppe pour toi. la partie public ne contient que la structure qui sera dupliqué pour lapartie privé visible uniquement par l'utilisateur.

Publié:
03 Oct 2011 à 13:34
par mleclercq
Merci pour ces infos.
Mon problème est qu'il faut que c'est dossier existe. En effet, j'ai un agent qui s'exécute toutes les nuits pour alimenter ce dossier. Il met des fiches en fonction du propriétaire de la fiche et d'autres critères. Si le dossier n'existe pas, il faut que l'agent puisse le créer pour un utilisateur précis.
Est-ce faisable ?
Merci.
Michael

Publié:
03 Oct 2011 à 13:56
par Michael DELIQUE
je pense pas !
ou alors il faut voir directement du coté des dossier privés et comment est géré l'accès (certainement un champ auteur)

Publié:
03 Oct 2011 à 14:56
par mleclercq
Ok, je m'en doutais un peu.
Le souci est que je ne veux pas utiliser la notion de champ "authors" car la base est assez volumineuse et le temps de mise à jour des vues risquent d'être long.
Je vais voir pour une autre solution. Merci pour ton aide.

Publié:
03 Oct 2011 à 15:04
par Michael DELIQUE
je parlais de champs auteur pour les dossiers pas pour les documents !
mais d'un point de vue sécurité limité l'accès des documents par les dossier/vues est une utopie

Publié:
03 Oct 2011 à 15:10
par Raziel
Et pourquoi pas un masque contenant une vue intégrée qui affiche les doc en fonction du propriétaire. ensuite tu limite l'affichage à l'utlisateur courant

Publié:
03 Oct 2011 à 16:51
par DeadAngel
Ou la création d'un bouton ouvrant un dossier en fonction de l'utilisateur.
Le dossier est publique, mais a une convention de nommage définie.
Le bouton se contentant d'ouvrir le document en question ?
Il suffit alors de forcer ton agent à créer le dossier si celui-ci n'existe pas.

Publié:
03 Oct 2011 à 18:15
par Michael DELIQUE
le souci, c'est que n'importe quelle petit malin aurra acces aux vues et dossier

Publié:
04 Oct 2011 à 08:18
par Raziel
Pas si on les caches

Publié:
04 Oct 2011 à 08:24
par Michael DELIQUE
même si on les caches !
maintenir enfoncé les touches
[Ctrl] + [Shift]
menu : vue\ aller à...
et hop toutes les vues
il faut bien ce dire que les vues n'ont JAMAIS été prévu pour interdire l'accès aux documents (d'ou leur nom : view).

Publié:
04 Oct 2011 à 08:26
par Raziel
Ok... mais là faut vraiment être un petit malin...


Publié:
04 Oct 2011 à 08:28
par Raziel
La commande vue\ aller à... ne permet pas d'afficher les vues cachées (celle dont le nom a été placé entre parenthèses)