Domino 9 und frühere Versionen > ND6: Entwicklung
Leser- und Autorenfeldeinhalte mit Mehrfachwerte an Antwortdokumente übertragen
Basti07:
Hi zusammen,
mal wieder benötige ich Eure Hilfe!
Aus einem Hauptdokument wird beim Speichern der Inhalt zweier Felder (Mehrfachwerte enthalten) an alle vorhandenen Antwortdokumente (per Bedingung) übertragen. Die Felder beinhalten Namen. Jeweils ein Autoren- und ein Leserfeld. Was da passiert ist ganz einfach. Es sollen Berechtigungen an Antwortdokumente vererbt werden.
Das Übernehmen der Werte an die Antwortdokumente funktioniert auch wunderbar im Backend mit NotesDocument.ReplaceItemValue. Jedoch, wenn ich mir nach einer solchen Vererbung die Eigenschaften eines Antwortdokuments anschaue und mir den Inhalt der Felder anschaue, werden die Namen nur durch "Komma" getrennt und nicht mit "Anführungszeichen". Der Zugriff ist für die jeweiligen Personen somit nicht möglich!
So siehts aus:
Feldname: Autoren
Datentyp: Text
Datenlänge: 57 Byte
Seq.-Num.: 40
Doppeleintrags-ID: 0
Feld-Flags: SUMMARY READ/WRITE-ACCESS NAMES
"User Eins/xyz, User Zwei/xyz, User Drei/xyz, "
So soll es aussehen: (So siehts aber erst dann aus, wenn das Dok im Frontend geöffnet und wieder gespeichert wird)
Feldname: Autoren
Datentyp: Text
Datenlänge: 57 Byte
Seq.-Num.: 40
Doppeleintrags-ID: 0
Feld-Flags: SUMMARY READ/WRITE-ACCESS NAMES
"User Eins/xyz"
"User Zwei/xyz"
"User Drei/xyz" "
Das Thema ist sehr sensibel, da wie schon gesagt, Lese- und Schreibberechtigte Personen an die jeweiligen Antwortdokumente vererbt werden.
Könnt Ihr mir sagen, wie ich es hinbekomme, dass die Dokumente die Mehrfachwerte gleich richtig abspeichert und nicht erst wenn das Dok vom User händisch gespeichert wird?
DANKE!!!
Basti07
Axel:
In der Maske für die Antwortdokumente ist beim Autorenfeld die Option "Mehrfachwerte zulassen" gesetzt !?
Wie übergibst du denn die WErte?
Axel
Basti07:
Hi Axel,
ja in den Antwortdokumenten sind definitiv "Mehrfachwerte" zugelassen! (Wenn ich das Feld händisch ändere, werden die Mehrfachwerte ja korrekt dargestellt)
Die Werte werden per Script an die Antwortdokumente übergeben.
Mein Code im QuerySave des Hauptdokuments:
--- Code: ---Sub SetRightsOnResponses(doc As NotesDocument)
On Error Resume Next
Dim Session As New NotesSession
Dim Workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim collection As NotesDocumentCollection
Dim responsedoc As NotesDocument
Dim tmp As NotesDocument
Dim db As NotesDatabase
Set db = s.CurrentDatabase
Set uidoc = workspace.CurrentDocument
Set collection = doc.Responses
Set responsedoc = collection.GetFirstDocument
While Not (responsedoc Is Nothing)
Set tmp = collection.GetNextDocument(responsedoc)
' Vererbungsstatus der jeweiligen Antwort ermitteln
fldVererbung = responsedoc.Schutz_1(0)
' Leser und Bearbeiter aus dem Projekt auslesen
fldLeser = uidoc.FieldGetText("P_Leser")
fldAutor = uidoc.FieldGetText("P_Autor")
' Wenn in der gefundenen Antwort das Vererben aktiviert ist, werden die neuen Personen gesetzt
If fldVererbung = "1" Then
' Hier wird jetzt das Ersetzen der Leser und Autoren durchgeführt
Call responsedoc.ReplaceItemValue( "A_Verteiler", fldLeser)
Call responsedoc.ReplaceItemValue( "A_Beteiligte", fldAutor)
Call responsedoc.ReplaceItemValue( "Vererbung_Am", "Letzte Vererbung am: " & Date & " um " & Time & " Uhr.")
'Call responsedoc.ComputeWithForm( False, False )
'Call responsedoc.Save( True, True, False )
Else
'Wenn eine Antwort gefunden wurde, die Vererbung in der Antwort aber deaktiviert ist wird nicht vererbt
End If
Call SetRightsOnResponses(responsedoc)
Set responsedoc = tmp
Wend
End Sub
--- Ende Code ---
Axel:
Du solltest das so machen:
...
Dim doc As NotesDocument
...
Set db = s.CurrentDatabase
Set uidoc = workspace.CurrentDocument
Set doc As NotesDocument
Set collection = doc.Responses
Set responsedoc = collection.GetFirstDocument
While Not (responsedoc Is Nothing)
Set tmp = collection.GetNextDocument(responsedoc)
' Vererbungsstatus der jeweiligen Antwort ermitteln
fldVererbung = responsedoc.Schutz_1(0)
' Wenn in der gefundenen Antwort das Vererben aktiviert ist, werden die neuen Personen gesetzt
If fldVererbung = "1" Then
' Hier wird jetzt das Ersetzen der Leser und Autoren durchgeführt
responsedoc.A_Verteiler = doc.P_Leser
responsedoc.A_Beteiligte = doc.P_Autor
Call responsedoc.ReplaceItemValue( "Vererbung_Am", "Letzte Vererbung am: " & Date & " um " & Time & " Uhr.")
....
Axel
botschi:
Und vielleicht auch mit der IsReaders property das Item als Lese- Autoritem festlegen?
Aus er Hilfe:
Read-write. Indicates whether an item is of type Readers. A Readers item contains a list of Notes user names, indicating people who have Reader access to a particular document.
Defined in
NotesItem
Data type
Boolean
Syntax
To get: flag = notesItem.IsReaders
To set: notesItem.IsReaders= flag
Legal values
True indicates that the item is of type Readers.
False indicates that the item is not of type Readers.
Usage
A Readers item is stored as text and its Type property returns TEXT. Use IsReaders to determine if a text item is also a Readers item.
The IsSummary property is set to True when setting the IsReaders property. Therefore you do not have to explicitly set the summary flag.
Matthias
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln