Autor Thema: Problem beim Speichern einer Dialogbox  (Gelesen 5961 mal)

Offline iukhdh

  • Senior Mitglied
  • ****
  • Beiträge: 498
  • Geschlecht: Männlich
  • To be or notes to be, this is the question
Problem beim Speichern einer Dialogbox
« am: 11.12.09 - 12:45:58 »
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.

 :-:

Code
'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
« Letzte Änderung: 15.12.09 - 08:24:39 von iukhdh »
Thomas von der IuK

Offline thomasP

  • Frischling
  • *
  • Beiträge: 9
  • Geschlecht: Männlich
Re: Problem beim Speichern einer Dialogbox
« Antwort #1 am: 11.12.09 - 13:00:46 »
Hallo

ohne zu wissen, wie die Dialogbox aussieht ,versuche mal folgendes


dim item as notesItem
set item=dlgdoc.getItem("Bearbeiter")    ' evt noch auf nothing prüfen
item.isAuthor=true   

=> Dialogbox aufrufen


(
ein Autor muss auch in einem Author-Feld ( als Person,Rolle,Gruppe) aufgeführt werden.
Das Feld 'Bearbeiter' ist aber erst mal ein normales Text-Feld.

)

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Problem beim Speichern einer Dialogbox
« Antwort #2 am: 11.12.09 - 13:08:20 »
@thomasP

Aber Thomas (iukhdh) schrieb doch, dass die User auf dem Dokument der Service-Anfrage keine Autorenrechte mehr haben, wenn es gespeichert wurde.

Das Problem hat er doch beim Speichern des Dialoges, den er mit Daten aus dem Service-Dokument befuellt.


Andreas

@iukhdh
Frage ins Blaue.
Ist Deine Maske der Dialogbox eventuell eine Antwortmaske?
« Letzte Änderung: 11.12.09 - 13:13:18 von ascabg »

Offline iukhdh

  • Senior Mitglied
  • ****
  • Beiträge: 498
  • Geschlecht: Männlich
  • To be or notes to be, this is the question
Re: Problem beim Speichern einer Dialogbox
« Antwort #3 am: 11.12.09 - 14:39:01 »
@thomasP
(witzig, ich bin auch ein thomasP ... :) )

Das Feld Bearbeiter ist kein Autorenfeld. In der Dialogmaske sind Autorenfelder die per Rollen belegt sind, Ebenso in der Ausgangsmaske:
Wenn ich mit der Rolle Admin das ganze teste, dann hab ich in der Ausgangsmaske und in der Dialogmaske Autorenrechte, dann klappts.

Die User sollen aber in der Ausgangsmaske nur noch Leserecht haben, und dann klappts nicht mehr.

Was mich halt wundert ist die Tatsache, dass da (so meine Vermutung) an die Ausgangsmaske, da wo der Button ist, was von der Dialogmaske zurückgegeben wird und dort gespeichert werden soll.

Nun ist dies ja wohl der Ursprüngliche Sinn so einer Dialogmaske, aber m.E. hab ich im Code doch definiert dass sich die Dialogbox auf das neu angelegte Dokument dlgdoc beziehen soll.

@ Ascabg
Spontan würd ich so von zuhause sagen dass die Dialogboxmaske keine Antwortmaske ist, aber 100% kann ich es aus der Ferne grad nicht sagen, womöglich ist das was ungewollt angeklickt. Aber warum diese Frage?

Ciao
Thomas
Thomas von der IuK

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Problem beim Speichern einer Dialogbox
« Antwort #4 am: 11.12.09 - 14:48:29 »
Na weil ein Antwortdokument eine Referenz auf sich in das Haupt-Dokument zuruecksschreiben will, damit dieses auch weis, dass diese Antwort zu ihm gehoert.

Wrong way.

Andreas

BigWim

  • Gast
Re: Problem beim Speichern einer Dialogbox
« Antwort #5 am: 11.12.09 - 15:40:12 »
Man ja soll nicht gleich von sich auf andere schließen, aber ich vergesse schonmal das Recht, dass Autoren auch neue Dokumente erstellen dürfen. Vielleicht fehlt ja auch nur ein Haken in der ACL .....


Markus

Offline iukhdh

  • Senior Mitglied
  • ****
  • Beiträge: 498
  • Geschlecht: Männlich
  • To be or notes to be, this is the question
Re: Problem beim Speichern einer Dialogbox
« Antwort #6 am: 13.12.09 - 13:13:33 »
Hallo Tööööööööölke   :-)

nee, das kanns eigentlich nicht sein, da andere Dokumente ja erstellt werden können.

Kann es sein, dass durch die Wegnahme des Schreibrechts in Maske A jegliches Save unterbunden wird, auch wenn sich dies eigentlich auf ein anderes Dokument bezieht? Der oben aufgeführte Code steht ja letztlich in Maske A.

Was mir in dem Zusammenhang grad durch den Kopf geht ...

Kann man eigentlich mit Code innerhalb einer Maske darin kurzfristig ein Autorenfeld/Leserfeld ausschalten, etwas ausführen, und es danach wieder einschalten?
« Letzte Änderung: 13.12.09 - 13:35:23 von iukhdh »
Thomas von der IuK

BigWim

  • Gast
Re: Problem beim Speichern einer Dialogbox
« Antwort #7 am: 13.12.09 - 16:27:09 »
Zitat
nee, das kanns eigentlich nicht sein, da andere Dokumente ja erstellt werden können.
Immerhin besteht ja die Möglichkeit, dass die "neuen" Dokumente vom einem Import, einem Agenten oder von einer Gruppe mit entsprechenden Berechtigungen kommt ...

Zitat
Kann es sein, dass durch die Wegnahme des Schreibrechts in Maske A jegliches Save unterbunden wird, auch wenn sich dies eigentlich auf ein anderes Dokument bezieht? Der oben aufgeführte Code steht ja letztlich in Maske A.
Ist mir jedenfalls noch nicht untergekommen ...

Um sicher zu gehen, welche Maske nun wirklich das Problem verursacht, vielleicht kannst Du im Query- und Postsave-Ereignis beider Maske eine Ausgabe erzeugen, um zu sehen, wie "weit" der Client kommt.

Markus

Offline DAU-in

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.129
  • Geschlecht: Weiblich
  • - unterwegs -
Re: Problem beim Speichern einer Dialogbox
« Antwort #8 am: 14.12.09 - 06:59:19 »
ich denke, eine Dialogbox bezwieht sich immer auf das darunterliegende Dokument, d.h., wenn du keine Schreibrechte auf das darunterliegende Dokument hast, dann kannst du da auch nichts speichern?
Schließlich werden die gleichnamigen Felder ja auch einfach übernommen, ohne noch irgendetwas zuzuweisen.

verschlafene Grüsse

Dau-in
mühsam ernährt sich das Eichhörnchen

aktuelle Tätigkeit: Feldschubse

Offline iukhdh

  • Senior Mitglied
  • ****
  • Beiträge: 498
  • Geschlecht: Männlich
  • To be or notes to be, this is the question
Re: Problem beim Speichern einer Dialogbox
« Antwort #9 am: 14.12.09 - 08:43:51 »
Guten Mor-gähn,

aber bewirkt die Codezeile

Code
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?

Thomas von der IuK

Offline it898ur

  • Senior Mitglied
  • ****
  • Beiträge: 478
Re: Problem beim Speichern einer Dialogbox
« Antwort #10 am: 14.12.09 - 10:25:37 »
Hallo,

Notes speichert das Dokument, welches der Dialogbox übergeben wurde - jedoch haben Dialogboxen Probleme mit Autorenfeldern, wenn das zugrunde liegende Dokument nie zuvor gespeichert wurde (wie ich leidvoll feststellen musste).

In der Regel hilft es aber das Autoren-Feld vor dem Öffnen der Dialogbox per Script anzulegen, zu bestücken und mit dem richtigen Typ zu versehen.

Gruß

André

Offline iukhdh

  • Senior Mitglied
  • ****
  • Beiträge: 498
  • Geschlecht: Männlich
  • To be or notes to be, this is the question
Re: Problem beim Speichern einer Dialogbox
« Antwort #11 am: 14.12.09 - 10:27:03 »
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


Code
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
« Letzte Änderung: 14.12.09 - 10:31:57 von iukhdh »
Thomas von der IuK

Offline iukhdh

  • Senior Mitglied
  • ****
  • Beiträge: 498
  • Geschlecht: Männlich
  • To be or notes to be, this is the question
Da sich der Fred hier inzwischen doch in eine andere Richtung entwickelt hat, beende ich ihn hiermit, und beginne einen neuen

"Problem mit Berechtigungen bei rtitem.AppendDocLink"

http://atnotes.de/index.php/topic,47217.0.html

« Letzte Änderung: 14.12.09 - 16:25:24 von iukhdh »
Thomas von der IuK

Offline iukhdh

  • Senior Mitglied
  • ****
  • Beiträge: 498
  • Geschlecht: Männlich
  • To be or notes to be, this is the question
Re: Problem beim Speichern einer Dialogbox
« Antwort #13 am: 15.12.09 - 08:24:02 »
Ergänzung:

Das Problem ist gelöst.

Es lag an der Standardansicht, für die die normalen Anwender nicht berechtigt waren.
Um einen Doclink einzufügen, benötigt man eine Standardansicht im Zugriff.
Thomas von der IuK

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz