Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: Annette am 02.06.08 - 15:52:49

Titel: Schreibberechtigung auf Profildokument
Beitrag von: Annette am 02.06.08 - 15:52:49
Hallo an alle Experten,

ich sitze gerade vor folgendem Problem und komme (auch mit Hilfe der bestehenden Einträge nicht so recht weiter)  :P:

Über Script erstelle ich im Hintergund ein Profildokument und setzte den aktuellen Usernamen (canonicalize) in ein Autorennamenfeld (isAuthors = True).
Wenn dieser User das Profildokument über Script (uidoc = ws.edit.profile) öffnet,  kann er das Dokument nicht bearbeiten. Lt. Eigenschaften ist aber das Feld "AuthorNames" vorhanden und auch gefüllt.

Hat vielleicht jemand eine ähnliche Erfahrung gehabt und eine Ursache/Lösung gefunden?

Vielen Dank für jede Hilfe, selbst komme ich irgendwie nicht weiter :-:
Titel: Re: Schreibberechtigung auf Profildokument
Beitrag von: DAU-in am 02.06.08 - 16:18:52
stell doch mal den Code rein

Titel: Re: Schreibberechtigung auf Profildokument
Beitrag von: Annette am 02.06.08 - 16:31:23
HAllo, der gekürzte Code sieht so aus:

Function WriteProfil(doc As NotesDocument) As Variant
   
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim profiledoc As NotesDocument
   Dim level As Integer
   Dim username As NotesName ' Person des Profildok
   Dim StrKonfigFeld As String ' Name des Konfig-Feldes in dem die Feld-Liste steht
   Dim StrKonfigFeldOwn As String ' Name des Konfig-Feldes in dem die Profil-Feld-Liste steht (nur bei eigenen Anträgen)   
   Dim VarProfilFeldListe As Variant
   Dim StrProfilFeld As String, StrDokumentFeld As String
   Dim VarAutoren(1) As Variant
   
   On Error Goto Error_M
   
   ' bestimmte Werte in das Profildokument zurückschreiben
   Set db = session.CurrentDatabase
   level = db.CurrentAccessLevel
   
   If level > 2 Then
      Set username = New NotesName (doc.Submitter(0))
      Set profiledoc = db.GetProfileDocument( "profil", username.Canonical)
      
      
      
      
' ... den Code zum Besetzen der anderen Felder habe ich der Übersichtlichkeit wegenentfernt         

         

      VarAutoren(0) = "[DBMgr]"
      VarAutoren(1) = username.Canonical
      Set item = profiledoc.ReplaceItemValue("AuthorNames", VarAutoren)
      item.IsAuthors = True
      
      ' SPEICHERN
      Call profiledoc.Save (True, True)
      
   End If
   
   WriteProfil = True
   
   Exit Function
   
Error_M:
   Call ErrorMessage(Cstr(Lsi_info(2)), Cstr(Erl()), Error, Err(), Cstr(Lsi_info(3)), Cstr(Lsi_info(12)))
   Exit Function
   
End Function
Titel: Re: Schreibberechtigung auf Profildokument
Beitrag von: Annette am 02.06.08 - 16:37:53
Der Code zum BEarbeiten des PRofils ist folgender:

Function ProfilBearbeiten(doc As NotesDocument) As Variant
   
   Dim session As New NotesSession
   Dim ws As New NotesUIWorkspace
   Dim db As NotesDatabase
   Dim StrUserName As String
   Dim username As NotesName
   Dim uidoc As NotesUIDocument
   Dim StrRollen As Variant
   Dim DBMgrRole As Boolean
'=====================================================================================================   
   
   On Error Goto Error_M
   
   DBMgrRole = False
   Set db = session.currentdatabase
   
' 1.) ermitteln ob DBMgr oder normaler Anwender
'=====================================================================================================   
   StrRollen = db.QueryAccessRoles(session.UserName)
   Forall x In StrRollen
      If x = "[DBMgr]" Then
         DBMgrRole = True
      End If
   End Forall
   
   ' a) Anwender ist DBMgr --> Auswahl des Profils
   '==========================================================
   If DBMgrRole = True Then
      ' kein Dokument übergeben (z. B. Aufruf aus Gliederung)
      If doc Is Nothing Then
         Set username = New NotesName(session.UserName)
      ' Antrag selbst erstellt
      Elseif doc.Submitter(0) = "" Then
         Set username = New NotesName(doc.Traveler(0))
      ' Antrag von Drittem
      Else
         Set username = New NotesName (doc.Submitter(0))
      End If      
      StrUserName = ws.Prompt(PROMPT_OKCANCELEDIT, "Username", "Welches Profildokument soll bearbeitet werden?", Cstr(username.canonical), "")
      If StrUserName = "" Then Exit Function
      
   ' b) Anwender ist kein DBMgr --> Profil des Anwenders öffnen
   '==========================================================
   Else
      StrUserName = session.UserName
   End If
   
' 2.) Profil zum Bearbeiten öffnen
'=====================================================================================================   
   Set uidoc = ws.EditProfile( "profil", StrUserName)   
   
   Exit Function
   
Error_M:
   Call ErrorMessage(Cstr(Lsi_info(2)), Cstr(Erl()), Error, Err(), Cstr(Lsi_info(3)), Cstr(Lsi_info(12)))
   Exit Function
   
End Function
Titel: Re: Schreibberechtigung auf Profildokument
Beitrag von: koehlerbv am 02.06.08 - 16:42:23
Und was steht im Item Submitter? Warum musst Du dort überhaupt mit der Canonical-Property herumhantieren?

Bernhard
Titel: Re: Schreibberechtigung auf Profildokument
Beitrag von: Annette am 02.06.08 - 16:49:03
Die Unterscheidung Traveler/Submitter wird benötigt, weil das Dokument ggf. von einem Dritten erstellt wurde.
Das Format des Names ist durchgängig canonical, weil ich davon ausging, dass im Autorenfeld dieses Format keine Probleme macht. Es wird auf jeden Fall das richtige Profil geöffnet.
Titel: Re: Schreibberechtigung auf Profildokument
Beitrag von: atbits am 03.06.08 - 11:45:17
Hallo,
ein ähnliches Problem hatte ich auch schon mal.

Ich meine mich zu erinnern das es generell Probleme macht Profil-Dokument mit Autorenfeldern zu versehen. Profildokumente funktionieren nur richtig mit mindestens Editor-Zugriff und dann sind die Autoren-Felder für die Katz.

Verwende statt Profildokumenten lieber normale und einen View-Lookup, glaub mir gerade in größeren Projekte machen die Profildokumente einfach zu viele Probleme.

Grüße David
Titel: Re: Schreibberechtigung auf Profildokument
Beitrag von: DerAndre am 03.06.08 - 12:05:25
Es gab mal einen Beitrag, wo gezeigt wurde, die man Profildokumente durch normale Dokumente inkl. Zugriffsmethoden ersetzt.
Finde es nur auf die schnelle nicht wieder, ich glaub der Beitrag war von TMC Axel...
Titel: Re: Schreibberechtigung auf Profildokument
Beitrag von: Axel am 03.06.08 - 12:26:45
Guckst du hier: Klasse für UserProfile (http://www.free.dominoserver.de/computer/noteslibrary.nsf/d2d59a3d7fc73a2bc1256a6900638352/74e4b61d04ca824dc1256db20041582a!OpenDocument)


Axel
Titel: Re: Schreibberechtigung auf Profildokument
Beitrag von: DerAndre am 03.06.08 - 12:32:01
Aaaaah, Sorry Axel. Ja genau die.

Titel: Re: Schreibberechtigung auf Profildokument
Beitrag von: Axel am 03.06.08 - 12:38:39
Aaaaah, Sorry Axel.

Kein Problem.

Axel