Page 2 sur 3

MessagePublié: 04 Juil 2011 à 08:11
par MdmZ
Comme je l'ai dit plus haut, j'ai pour rôle administrateur, la mention "[Admnistrator]" est présente dans les champs lecteurs et auteurs du document Parent et du document fils. Pourtant, au moment de la création du document fils, je ne peux pas l'enregistrer ni l'ouvrir ensuite.. Ils me disent que je n'ai pas l'autorisation de le faire. Il y a surement quelque chose qui m'échappe, mais je ne vois vraiment pas quoi, alors tu peux peut etre m'éclairer si je n'ai pas compris..

MessagePublié: 04 Juil 2011 à 08:16
par Michael DELIQUE
la comme ça, je peux pas. tu as lu le liens que je viens de te passer ?

- tu créé bien des champs de type auteur et lecteur ?
- je suppose qu'il n'y a ni faute de frappe ni faute de casse sur le nom du role
- tu fais bien ton dev sur un serveur pas en local ?
- tu as quelle droit sur la LCA (niveau d'accès)

MessagePublié: 04 Juil 2011 à 08:19
par MdmZ
- Oui pour les champs de type auteurs/lecteurs
- Sans fautes
- Mon développement est fait en local, mais la base et également sur le serveur et les erreurs sont les mêmes.
- Je suis 'manager' sur l'ACL, et j'ai tous les droits.

MessagePublié: 04 Juil 2011 à 09:25
par Michael DELIQUE
re,

tu dois louper qqc quelque part.

montre un peu ton code ya peut être une coquille que t'a pas vue

MessagePublié: 04 Juil 2011 à 09:31
par MdmZ
Le code du champs 'reader' ? En principe c'est kazi le même que celui du document père, il y a juste un nom ajouté, mais je te le donne quand meme..

Je me demande si ca ne vient pas du fait que justement ce soit un document qui hérite d'un autre. La création de ce document a été faite en LS.

xTemp := @Name([Abbreviate] ;leadAuditorManager);
@For(n :=1; n<=@Elements(xTemp); n:= n + 1;
xRet := @If(n=1; @If(@Contains(xTemp[n]; "@"); @Left(xTemp[n];"@"); xTemp[n]); xRet : @If(@Contains(xTemp[n]; "@"); @Left(xTemp[n];"@"); xTemp[n]))
);
xLeadAuditorManager := xRet;

xTemp := @Name([Abbreviate] ;AuditorManager1);
@For(n :=1; n<=@Elements(xTemp); n:= n + 1;
xRet := @If(n=1; @If(@Contains(xTemp[n]; "@"); @Left(xTemp[n];"@"); xTemp[n]); xRet : @If(@Contains(xTemp[n]; "@"); @Left(xTemp[n];"@"); xTemp[n]))
);
xAuditorManager1 := xRet;

xTemp := @Name([Abbreviate] ;AuditorManager2);
@For(n :=1; n<=@Elements(xTemp); n:= n + 1;
xRet := @If(n=1; @If(@Contains(xTemp[n]; "@"); @Left(xTemp[n];"@"); xTemp[n]); xRet : @If(@Contains(xTemp[n]; "@"); @Left(xTemp[n];"@"); xTemp[n]))
);
xAuditorManager2 := xRet;

xTemp := @Name([Abbreviate] ;DocAuthor);
@For(n :=1; n<=@Elements(xTemp); n:= n + 1;
xRet := @If(n=1; @If(@Contains(xTemp[n]; "@"); @Left(xTemp[n];"@"); xTemp[n]); xRet : @If(@Contains(xTemp[n]; "@"); @Left(xTemp[n];"@"); xTemp[n]))
);
xDocAuthor := xRet;

xTemp := @Name([Abbreviate] ;LeadAuditor);
@For(n :=1; n<=@Elements(xTemp); n:= n + 1;
xRet := @If(n=1; @If(@Contains(xTemp[n]; "@"); @Left(xTemp[n];"@"); xTemp[n]); xRet : @If(@Contains(xTemp[n]; "@"); @Left(xTemp[n];"@"); xTemp[n]))
);
xLeadAuditor:= xRet;

xTemp := @Name([Abbreviate] ;Auditor);
@For(n :=1; n<=@Elements(xTemp); n:= n + 1;
xRet := @If(n=1; @If(@Contains(xTemp[n]; "@"); @Left(xTemp[n];"@"); xTemp[n]); xRet : @If(@Contains(xTemp[n]; "@"); @Left(xTemp[n];"@"); xTemp[n]))
);
xAuditor:= xRet;

xTemp := @Name([Abbreviate] ;BPO);
@For(n :=1; n<=@Elements(xTemp); n:= n + 1;
xRet := @If(n=1; @If(@Contains(xTemp[n]; "@"); @Left(xTemp[n];"@"); xTemp[n]); xRet : @If(@Contains(xTemp[n]; "@"); @Left(xTemp[n];"@"); xTemp[n]))
);
xBPO:= xRet;

xTemp := @Name([Abbreviate] ;Champion);
@For(n :=1; n<=@Elements(xTemp); n:= n + 1;
xRet := @If(n=1; @If(@Contains(xTemp[n]; "@"); @Left(xTemp[n];"@"); xTemp[n]); xRet : @If(@Contains(xTemp[n]; "@"); @Left(xTemp[n];"@"); xTemp[n]))
);
xChampion:= xRet;

xTemp := @Name([Abbreviate] ;Observer);
@For(n :=1; n<=@Elements(xTemp); n:= n + 1;
xRet := @If(n=1; @If(@Contains(xTemp[n]; "@"); @Left(xTemp[n];"@"); xTemp[n]); xRet : @If(@Contains(xTemp[n]; "@"); @Left(xTemp[n];"@"); xTemp[n]))
);
xObserver:= xRet;

xTemp := @Name([Abbreviate] ;Expert);
@For(n :=1; n<=@Elements(xTemp); n:= n + 1;
xRet := @If(n=1; @If(@Contains(xTemp[n]; "@"); @Left(xTemp[n];"@"); xTemp[n]); xRet : @If(@Contains(xTemp[n]; "@"); @Left(xTemp[n];"@"); xTemp[n]))
);
xExpert:= xRet;

xTemp := @Name([Abbreviate] ;AddReaders);
@For(n :=1; n<=@Elements(xTemp); n:= n + 1;
xRet := @If(n=1; @If(@Contains(xTemp[n]; "@"); @Left(xTemp[n];"@"); xTemp[n]); xRet : @If(@Contains(xTemp[n]; "@"); @Left(xTemp[n];"@"); xTemp[n]))
);
xAddReaders:= xRet;

xTemp := @Name([Abbreviate] ;AddParticipants);
@For(n :=1; n<=@Elements(xTemp); n:= n + 1;
xRet := @If(n=1; @If(@Contains(xTemp[n]; "@"); @Left(xTemp[n];"@"); xTemp[n]); xRet : @If(@Contains(xTemp[n]; "@"); @Left(xTemp[n];"@"); xTemp[n]))
);
xAddParticipants:= xRet;

@Name([Canonicalize]; @Trim (@Unique( xAuditor: xLeadAuditor : xDocAuthor : xAuditorManager1 : xAuditorManager2 : xLeadAuditorManager : xBPO : xChampion : xObserver : xExpert : xAddReaders : xAddParticipants: "[Administrator]" : "[Auditor]" : "[Owner]")))

MessagePublié: 04 Juil 2011 à 10:13
par Michael DELIQUE
re,

je te demandais le code Ls de création du document.

pour ton champ c'est possible et tout en formule bonjour l'angoisse pour la maintenance surtout qu'il faut rafraichir le doc pour que les accès changes.

MessagePublié: 04 Juil 2011 à 10:19
par MdmZ
Dim session As New NotesSession
Dim db As NotesDatabase
Dim DocFils As NotesDocument
Dim workspace As New NotesUIWorkspace
Dim collection As NotesDocumentCollection
Dim DocParent As NotesDocument
Dim docUI As NotesUIDocument


Set db = session.CurrentDatabase
Set DocFils = New NotesDocument(db)


Set collection = workspace.PickListCollection(PICKLIST_CUSTOM, False,db.Server ,db.FilePath, "vAuditPlanSelection", "Choix du plan d'audit", "Selectionnez le plan d'audit associé")
Set DocParent=collection.GetFirstDocument
Set DocFils = New NotesDocument(db)


If (collection.Count<>0) Then
'Initialisation de tous les champs héritant du document parent.
DocFils.ParentAdress = DocParent.UniversalID
DocFils.Form = "frmAuditReport"
DocFils.DocAuthor = DocParent.DocAuthor
DocFils.Reference = DocParent.Reference
DocFils.AuditDate = DocParent.AuditDate
DocFils.AuditedProcess = DocParent.AuditedProcess
DocFils.ProcessName = DocParent.ProcessName
DocFils.BPO = DocParent.BPO
DocFils.Champion = DocParent.Champion
DocFils.LeadAuditorManager = DocParent.LeadAuditorManager
DocFils.AuditorManager1 = DocParent.AuditorManager1
DocFils.AuditorManager2 = DocParent.AuditorManager2
DocFils.LeadAuditor = DocParent.LeadAuditor
DocFils.Auditor = DocParent.Auditor
DocFils.Observer = DocParent.Observer
DocFils.Expert = DocParent.Expert
DocFils.C41=DocParent.C41
...
DocFils.AddReaders = DocParent.AddReaders
DocFils.APLink = DocParent.NotesURL

Call DocFils.MakeResponse( DocParent)
Call workspace.EditDocument(True, DocFils)


End If


Exit Sub

MessagePublié: 04 Juil 2011 à 11:30
par Michael DELIQUE
re,

je pense que

DocFils.LeadAuditorManager = DocParent.LeadAuditorManager
DocFils.AuditorManager1 = DocParent.AuditorManager1
DocFils.AuditorManager2 = DocParent.AuditorManager2

sont des champs auteur/lecteur, la tu créé des champs texte.

essais avec ça pour chaque champ

dim item as Notesitem
set Item = New NotesItem(DocFils,"AuditorManager1",DocParent.AuditorManager1,"AUTHORS)

MessagePublié: 04 Juil 2011 à 13:19
par MdmZ
En fait je les ai mis en champs 'Names' et j'ai fait un champs "Readers" ainsi qu'un champs "Authors" qui regroupent tous les readers et respectivement authors du document.
Du coup faut il que j'applique tout de même la ligne de code que tu viens de me donner ?

MessagePublié: 04 Juil 2011 à 13:24
par Michael DELIQUE
oui parceque tu confonds masque et document.

dans le cas des champs de type Nom/Auteur/lecteur tu dois les typer et les renseigner avec des noms sous leur forme canonique (sauf pour les roles biensur) sinon ça marche pas

MessagePublié: 04 Juil 2011 à 13:33
par roubech
http://publib.boulder.ibm.com/infocente ... CLASS.html

aide a écrit:Set notesItem = New NotesItem( notesDocument, name$, value [, specialType% ] )

specialType%
Optional. Constant of type integer. Indicates if a text item should be of type Names, Readers, or Authors. Must be one of the following constants: NAMES, READERS, or AUTHORS. To use specialType%, the value parameter must be a string or array of strings.

MessagePublié: 04 Juil 2011 à 13:43
par MdmZ
Merci beaucoup, ca a l'air de fonctionner.
Seulement, vu que j'ai deux subform, elles dépendent du rôle de la personne qui ouvre le document. Et en fonction du rôle de cette personne le champs Authors changent. Par exemple la personne renseignée dans 'BPO' peut etre soit seulement readers, soit également author. Pour cette personne, qu'est ce que met comme 'specialType' ?

MessagePublié: 04 Juil 2011 à 14:17
par Michael DELIQUE
re,

un champ est soit auteur soit lecteur. si une personne passe par exemple du statut auteur au statut lecteur ilf aut déplacer son nom du champ auteur au champ lecteur

MessagePublié: 04 Juil 2011 à 14:59
par MdmZ
Merci beaucoup ! Ca a l'air de fonctionner.
Du coup maintenant j'ai pleins d'anciens documents que je ne peux voir vu que je n'avais pas les droits. Mais les vues me disent qu'il y a des descendants, comment effacer ces documents ?

MessagePublié: 04 Juil 2011 à 15:22
par Michael DELIQUE
re,

il te faut les droit super-admin ou alors tu fais tout simplement une copie de la base !