Autor Thema: Leser- und Autorenfeldeinhalte mit Mehrfachwerte an Antwortdokumente übertragen  (Gelesen 3158 mal)

Offline Basti07

  • Frischling
  • *
  • Beiträge: 19
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

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
In der Maske für die Antwortdokumente ist beim Autorenfeld die Option "Mehrfachwerte zulassen" gesetzt !?

Wie übergibst du denn die WErte?


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Basti07

  • Frischling
  • *
  • Beiträge: 19
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

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
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
Ohne Computer wären wir noch lange nicht hinterm Mond!

botschi

  • Gast
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

Offline Basti07

  • Frischling
  • *
  • Beiträge: 19
Danke Axel

mit Deinem Vorschlag hat's funktioniert! Aber muss man das verstehen, warum es nicht mit ReplaceItemValue funktioniert???

Gibts ne möglichkeit während dem Backend-Save berechnete Felder neu zu berechnen? ComputeWithForm macht das ja nicht  :'(

Evtl. ein spezieller Agent?

Danke

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Das lag nicht am ReplaceItemValue, sondern hier:

fldLeser =   uidoc.FieldGetText("P_Leser")
fldAutor =   uidoc.FieldGetText("P_Autor")

Damit hast du nämlich erstnmal eine ganz gewöhnlichen String. Erst bei einer Neuberechnung wurde dann in den Autorenfeldern die Mehrfachwerte daraus(anhand des Kommas, was wahrscheinlich in den Feldeigenschaften als Trennzeichen eingetragen war).

Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz