Autor Thema: Berechnungen im PostDocumentDelete + Zugriffsrechte + Dokumente löschen  (Gelesen 1970 mal)

Offline Skorpi

  • Junior Mitglied
  • **
  • Beiträge: 79
  • Geschlecht: Männlich
Vorraussetzungen:
Wenn ein Dokument aus der Datenbank gelöscht wird, werden Postdocumentdelete des Datenbank-Skripts bestimmte Berechnungen durchgeführt.

Aktionen:
Ein Benutzer mit Autorenzugriff (ohne Haken bei „Dokumente löschen“ in der Zugriffskontrollliste) löscht ein Dokument aus einer Ansicht.

Folge:
Obwohl der Benutzer nicht das Recht besitzt dieses Dokument zu löschen wird das Postdocumentdelete der Datenbank aufgerufen. Nachdem die Berechnungen durchgeführt wurden, meldet Lotus Notes 6.5.4 den folgenden Fehler: „Sie sind nicht berechtigt, Dokumente in dieser Datenbank zu löschen“.

Problem:
Die fälschlicherweise ausgeführten Berechungen im Postdocumentdelete führen zu Inkonsistenten Daten.

Frage:
Gibt es außer der etwas unschönen Möglichkeit, mit Lotus Script die Zugriffsrechte des aktuellen Benutzer auszulesen um manuell zu ermitteln, ob der aktuelle Nutzer die Rechte besitzt um ein Dokument zu löschen, eine einfachere Lösung? Im Prinzip müsste die Fehlermeldung, dass der Benutzer nicht berichtigt ist dieses Dokument zu löschen, einfach nur erscheinen bevor die Berechnungen im Postdocumentdelete ausgeführt werden.
« Letzte Änderung: 24.04.07 - 20:12:07 von Skorpi »
Gruß

Fabian

Offline Skorpi

  • Junior Mitglied
  • **
  • Beiträge: 79
  • Geschlecht: Männlich
Upps, falsches Forum!!!

Bitte nach "ND6: Entwicklung" verschieben...

Danke
« Letzte Änderung: 24.04.07 - 20:04:12 von Skorpi »
Gruß

Fabian

Glombi

  • Gast
Erst löschen  - mit Error Handling - und dann die Berechnungen

falls Du nicht die "unschöne" (warum eigentlich ?) Methode verwenden willst.

Andreas

Offline Skorpi

  • Junior Mitglied
  • **
  • Beiträge: 79
  • Geschlecht: Männlich
Klasse, vielen Dank! Jetzt funktioniert es so wie es sein sollte  ;D

Code
Sub Postdocumentdelete(Source As Notesuidatabase)
	On Error Goto Fehlerbehandlung
	
	Call LogIt(LOG_ACTION, "Datenbank-Script: 'PostDocumentDelete', gestartet")
	
     'Deklarationen
	Dim session As New NotesSession
	Dim db As NotesDatabase
	Dim docToDelete As NotesDocument
	Dim docCopyOfDocToDelete As NotesDocument
	Dim doccolToDelete As NotesDocumentCollection
	
	'Initialisierung
	Set db = session.CurrentDatabase
	Set docCopyOfDocToDelete = New NotesDocument(db)
	Set doccolToDelete = Source.Documents
	Set docToDelete = doccolToDelete.GetFirstDocument
	
	
	While Not docToDelete Is Nothing
		
		Call docToDelete.CopyAllItems(docCopyOfDocToDelete, True)		
		Call docToDelete.Remove(True) ' DANKE ;)
		
		'Benötigte Workflow-Ereignisse auslösen
		If docCopyOfDocToDelete.GetItemValue("Form")(0) = "Mitarbeiter" Then
			Call MitarbeiterGeloescht(docCopyOfDocToDelete)
		Elseif docCopyOfDocToDelete.GetItemValue("Form")(0) = "Organisationseinheiten" Then			
			Call OrganisationseinheitGeloescht(docCopyOfDocToDelete)
		Elseif docCopyOfDocToDelete.GetItemValue("Form")(0) = "Planstellen" Then			
			Call PlanstelleGeloescht(docCopyOfDocToDelete)
		Elseif docCopyOfDocToDelete.GetItemValue("Form")(0) = "Dokumentenaenderungen" Then
			Call DokumentenaenderungGeloescht(docCopyOfDocToDelete)
		Elseif docCopyOfDocToDelete.GetItemValue("Form")(0) = "Feldaenderungen" Then
			Call FeldaenderungGeloescht(docCopyOfDocToDelete)
		End If
		
		Set docToDelete = doccolToDelete.GetNextDocument(docToDelete)
	Wend
	
	Call LogIt(LOG_ACTION, "Datenbank-Script: 'PostDocumentDelete', erfolgreich ausgeführt")
	
	Exit Sub
Fehlerbehandlung:	
	Call ErrorHandling("Datenbank-Script: 'PostDocumentDelete'")	
	Exit Sub	
End Sub

Die andere Methode ist meiner Meinung nach umständlich, weil es doppelte Arbeit macht. In den Zugriffskontrolllisten der Datenbank und der Maske wird ja eigentlich schon festgelegt welche Personen und Gruppen was tun dürfen. Durch den zusätzlich notwendigen Code bei dieser Lösung entsteht zunächst bei der Erstellung und später bei Änderungen der Datenbank Mehrarbeit.
Gruß

Fabian

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz