Hallo Leute,
ich habe folgendes Problem:
Ein Anwender erstellt eine Serviceanfrage. Nach dem Speichern wird ihm das Autorenrecht genommen, er hat dann nur noch Leserecht.
In der Maske ist ein Button, der eine Dialogbox öffnet, in deren Maske er weitere Anfragen erstellen kann. In dieser Benachrichtigungsmaske hat er volles Autorenrecht. Die Benachrichtigungsmaske wird im Script definiert, siehe unten.
Nun bekommen wir immer eine Fehlermeldung wegen fehlender Berechtigung, wenn er die Benachrichtigungsmaske mit OK beendet.
Wird bei dieser Aktion versucht etwas an die Ursprungsmaske übergeben, bei der er ja kein Leserecht hat? Die Benachrichtigungsmaske wird jedefalls auch nicht gespeichert.
Ich steh grad aufm Schlauch und wäre um eine kurze Unterstützung dankbar
Danke, Thomas.
:-:
'Nachricht senden
Sub Click(Source As Button)
Dim nuiw As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Set uidoc = nuiw.CurrentDocument
'Neues Document im Backend anlegen
Dim session As New NotesSession
Dim db As NotesDatabase
Dim dlgdoc As NotesDocument
Set db= session.CurrentDatabase
Set dlgdoc = New NotesDocument(db)
'Felder vom neuen Dokument füllen
dlgdoc.Form = "Benachrichtigungsmaske"
dlgdoc.Servicenummer = uidoc.FieldGetText("Servicenummer")
dlgdoc.Anfragender = uidoc.FieldGetText("Anfragender")
dlgdoc.Erstellungsdatum = uidoc.FieldGetText("Erstellungsdatum")
dlgdoc.HDokumentID = uidoc.FieldGetText("HDokumentID")
dlgdoc.Bearbeiter = uidoc.FieldGetText("Bearbeiter")
'Benachrichtigungsmaske in Dialogbox öffnen
Dim ws As New notesuiworkspace
If ws.DialogBox ("Benachrichtigungsmaske", True, False, False, False, False, False, "Benachrichtigungstext", dlgdoc,True) Then
************************ hier kommt dann ein Berechtigungs-Fehler ***********************
Call dlgdoc.save (True, False)
End If
End Sub
Guten Mor-gähn,
aber bewirkt die Codezeile
If ws.DialogBox ("Benachrichtigungsmaske", True, False, False, False, False, False, "Benachrichtigungstext", dlgdoc,True) Then
denn nicht, dass ich auf die dlgdoc speichere, und nicht aufs aktuelle Dokument?
Hallo Leute,
nachdem ich alle Masken im Querysave markiert hatte, bin ich dahintergekommen dass in keiner dieser Masken etwas zum speichern versucht wird.
Ich bin nun in meiner Benachrichtigungsmaske Zeile für Zeile durchgepromptet und bin nun darauf gekommen, dass es an einem Link zum Ausgangsdokument liegt. Da hat der Mitarbeiter nur Leserecht.
Wodurch kann es dadurch Berechtigungsprobleme geben?
@Andre: Das Ausgangsdokument ist im Workflow auf jeden Fall immer gespeichert, bevor die Mitarbeiter an die Benachrichtigungsfunktion kommen.
Hier der Code, Problem ist unten markiert
Sub Queryclose(Source As Notesuidocument, Continue As Variant)
Dim session As New notessession
Dim db As NotesDatabase
Dim rtitem As NotesRichTextItem
Dim ws As New notesuiworkspace
Dim uidoc As NotesUIDocument
Dim rtitem2 As NotesRichTextItem
Dim aktdoc As NotesDocument
'Erstmal refreshen, damit alles ins Backend kommt.
Call source.refresh(True)
Set aktdoc = Source.Document
'Inhalte holen
Set rtitem2 = aktdoc.GetFirstItem ("Textinhalt" )
Set db = session.CurrentDatabase
Dim altdoc As Notesdocument
Set altdoc = db.GetDocumentByUNID(source.fieldgettext("HDokumentID"))
'Abfrage, ob der OK oder der Abbruchknopf gedrückt wurde
If Not Source.DialogBoxCanceled Then
'Neues Dokument vorbereiten, mit den Inhalten für Empfänger, Betreff, Text ....
Set doc = New NotesDocument(db)
With doc
.Form = "Memo"
'SendTo wird nicht mit Fieldgettext gefüllt, da hiermit auch Mehrfachwerte übergeben werden
.SendTo = Source.Document.Empfaenger
End With
If source.fieldgettext("Meldungsart") = "E-Mail" And source.FieldGetText("Betreff") = "" Then
doc.Subject = "Servicefall "+ source.fieldgettext("Servicenummer")+" vom "+source.fieldgettext("Erstellungsdatum")
Else
If source.Fieldgettext ("Meldungsart") = "E-Mail" Then
doc.Subject = Source.fieldgettext("Betreff")+" - Servicefall "+source.fieldgettext("Servicenummer")+" vom "+source.fieldgettext("Erstellungsdatum")
Else
doc.Subject = Source.fieldgettext("Meldungsart")+" - Servicefall "+source.fieldgettext("Servicenummer")+" vom "+source.fieldgettext("Erstellungsdatum")
End If
End If
'doc.Body = .... hier kann man auch noch direkt was ins Body schreiben, wird aber weiter unten mit DocLink usw erledigt.
'Ein Richtextitem wird erstellt für den Body, inkl. Link
Set rtitem = New NotesRichTextItem( doc, "Body" )
Call rtitem.AppendText ("HINWEIS: Bitte antworten Sie nicht direkt auf diese Mail sondern geben Sie eine evtl. Rückantwort im Servicefall ein."+Chr$(10)+"Bitte verwenden Sie dazu diesen Link -> ")
' hier hängt der Fehler ********************************************
Call rtitem.AppendDocLink( altdoc, "Link zum Servicefall " + source.fieldgettext("Servicenummer"))
' Ende Fehler **************************************************
Call rtitem.AddNewLine( 2 )
Call rtitem.AppendText (source.fieldgettext("Anrede"))
Call rtitem.AddNewLine( 2)
Call rtitem.AppendRTItem(rtitem2)
Call rtitem.AddNewLine( 2)
Call rtitem.AppendText (source.fieldgettext("Abschluss"))
Call rtitem2.Remove
Call doc.Send(False)
End If
End Sub