Domino 9 und frühere Versionen > ND6: Entwicklung

Query Paste Event in einer View

<< < (2/2)

animate:
ich sehe da einen kleinen Denkfehler.
Das Dokument, auf dem der Balken steht, ist ja nicht zwingenderweise das Dokument, das per 'Paste' eingefügt wird.
Insofern nützt ein Test an dieser Stelle (QueryPaste-Event) recht wenig. So seh ich das auf jeden Fall.

Ein Workaround (recht simpel und pragmatisch):
du nutzt das PostPaste-Event und checkst da die Dokumente.
Wenn ein schlechtes dabei ist, dann setzt du ein Flag in dem Dokument (geht natürlich nur, wenn die User Editorrechte haben)
Und dann baust du dir nen Agent, der die bösen Dokumente regelmäßig Teile löscht.
Und du passt die Ansichten entsprechend an, dass sie die bösen Dokumente nicht anzeigen.

animate:
hast dus schonmal mit dem DocumentContext der NotesSession probiert, an das Dokument zu kommen? Kanns leider selber nicht ausprobieren...

Dim session As NotesSession
Dim docCurrent As NotesDocument

Dim session = New NotesSession
Set docCurrent = session.DocumentContext

TMC:
Alternativ könntest Du das Script in einen Agenten auslagern.

Trigger: When documents are pasted
Der Agent wird gestartet, sobald ein Dokument in die Datenbank eingefügt wird.
Berechtigung: Dieser Agent ist ist client-basierend, d.h. der läuft mit der Berechtigung die der User hat, der ein Dokument einfügt.

Ich sitze gerade bei meinem Agent-Dokumention für BP, daher kam mir das jetzt in den Sinn.....

Gearbeitet habe ich mit diesem Trigger selber allerdings noch nie.

LisaS:
Danke für die zahlreichen Antworten.
Ich hab das erstmal so gelöst, daß im Query-Paste dieser Agent läuft.
Es werden nur Dokumente eingefügt die markiert waren.

Sub Querypaste(Source As Notesuiview, Continue As Variant)
       Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim dc As NotesDocumentCollection
   Dim doc As NotesDocument
   Dim run_state As String
   Dim flag As Integer
   
   Set db = session.CurrentDatabase
   Set dc = source.Documents  'alle einzufügenen Dokumente
   'Dokumente müssen markiert sein
   If dc.Count = 0 Then
      continue = False
   End If      
   Set doc = dc.GetFirstDocument()
   
   While Not(doc Is Nothing)
      If doc.HasItem("run_state") = True And _
      (doc.form(0) = "Timesheet" Or _
      doc.form(0) = "TimesheetSummery") Then
         run_state=doc.run_state(0)
         flag = run_state
         If flag < 5 Then
            Set doc =dc.GetNextDocument(doc)
         Else
            continue = False
            Messagebox "Sie haben ein freigegebenes Dokument aus gewählt!", MB_OK, "Achtung"
            End
         End If         
      Else
         Set doc =dc.GetNextDocument(doc)
      End If
   Wend
End Sub

@Thomas:
DocumentContext funktioniert nicht.
Gruß
Hitcher
@TMC:
Trigger-Agent geht nicht da di User keine Löschrechte haben.

Gruß
Hitcher

Navigation

[0] Themen-Index

[*] Vorherige Sete

Zur normalen Ansicht wechseln