Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: Thorsten Kalweit am 24.11.14 - 14:33:40

Titel: Kalendereintrag für jemand anderen erstellen
Beitrag von: Thorsten Kalweit am 24.11.14 - 14:33:40
Hallo zusammen,

wie kann ich per Button einen Kalendereintrag für einen bestimmten Termin für eine andere Person in dessen Kalender erzeugen?

Hintergrund ist, dass wir einen zentralen Empfang haben, die am Telefon Termine mit Kunden für Berater vereinbaren. Die Termine sollen direkt in die Kalender der Berater gespeichert werden. ABER: Die Kolleginnen und Kollegen des Empfangs sollen nicht alle Mail-In Datenbanken der Berater auf der Arbeitsoberfläche "horten" und sich mühsam durch den Arbeitsbereich suchen, bis sie einen Kollegen gefunden haben.

In der Maske, den der zentrale Empfang ausfüllt, werden bereits Username des Beraters sowie Start- und Endzeit erfasst.
Die Zugriffsberechtigungen auf Kalender stellen zunächst kein Problem bzw. Hindernis dar.

Wäre super, wenn mir jemand helfen könnte (ggf. auch mit Code-Schnipsel)

Danke im Voraus.

Gruß
Thorsten
Titel: Re: Kalendereintrag für jemand anderen erstellen
Beitrag von: klaussal am 24.11.14 - 14:49:07
Welche Felder wie zu füllen sind lässt sich an einem bestehenden Termin erkennen.
Oder man sucht etwas im Forum (das Thema war gefühlt bestimmt schon zig-mal da).

Viel interessanter wäre es aber, was ihr macht, wenn der Berater schon belegt ist, etc pp.
Das muß man auch berücksichtigen.

Ich glaube, sooo einfach wird das nicht.
Titel: Re: Kalendereintrag für jemand anderen erstellen
Beitrag von: Thorsten Kalweit am 24.11.14 - 14:55:34
Welche Felder zu füllen sind ist nicht das Problem, denn per Button in meinem eigenen klappt es ja...Wann der Berater kann und wann nicht, lösen wir über den Planer...

Titel: Re: Kalendereintrag für jemand anderen erstellen
Beitrag von: Tode am 24.11.14 - 15:07:13
Und wo ist dann das Problem? Wenn Du doch schon Code hast, um ein Dokument in Deinem eigenen Kalender zu erstellen: Wo ist dann die Schwierigkeit, das auf einen fremden Kalender zu übertragen?

Werde mal konkreter mit der Frage, sonst ist die Antwort auf "Wie geht das in einem fremden" genauso allgemein: "Wie in Deinem eigenen, nur mit einem anderen NotesDatabase- Objekt"...
Titel: Re: Kalendereintrag für jemand anderen erstellen
Beitrag von: Driri am 24.11.14 - 15:10:20
Der Ablauf wäre dann wohl recht übersichtlich und etwa so:

- Mailserver + -datenbank anhand der gewählten Person ermitteln (z.B. via Domino Directory über GetMailInfo)
- Termin-Dokument in der Maildatenbank erstellen
Titel: Re: Kalendereintrag für jemand anderen erstellen
Beitrag von: klaussal am 24.11.14 - 15:14:20
Einfach einen neuen Gruppenkalender anlegen mit den Beratern und gut ist.
Dann braucht man für einen neuen Termin nix zu programmieren.
Titel: Re: Kalendereintrag für jemand anderen erstellen
Beitrag von: Felix Ziegler am 24.11.14 - 15:43:32
Nur als kleine Anmerkung. Das Erstellen von Kalendereinträgen kann sehr komplex werden. Ich habe mich vor einiger Zeit mal damit auseinander gesetzt. Vorallem "funktionierende" Einträge zu erstellen ist nicht einfach mal schnell so gemacht.

Siehe auch hier: http://www-12.lotus.com/ldd/doc/uafiles.nsf/docs/WPNotesCSSchema/$File/csschema.pdf

Es gibt aber soweit ich weiß auch einige fertige ScriptLibs. Einfach mal googeln.
Titel: Re: Kalendereintrag für jemand anderen erstellen
Beitrag von: Thorsten Kalweit am 27.11.14 - 11:20:33
Guten Morgen!

Mit dem nachstehenden Skript kann ich einen Termin in meinem eigenen Kalender eintragen.
Wo bzw. was muss ich  Ändern, um den Termin in einem anderen Kalender einzutragen. (Sorry für die dumme Frage, aber meine Script-Kenntnisse sind noch nicht so gut...)

Code
Sub Click(Source As Button)
	Dim session As New NotesSession   
	Dim db As New NotesDatabase ("","")
	Dim UiWs As New NotesUIWorkspace
	Dim uidoc As NotesUIDocument
	Dim doc As notesdocument
	Dim startdatum As String 'Wann der Kunde kommt, abzüglich vorlaufzeit
	Dim startzeit As String 'Wann der Kunde kommt, abzüglich vorlaufzeit
	Dim enddatum As String 'Wann der Kunde kommt, zzgl. nachbereitung
	Dim endzeit As String 'Wann der Kunde kommt, zzgl. nachbereitungd
	Dim requesteddate As String 'Wann der Kunde kommt
	Dim requestedtime As String 'Wann der Kunde kommt
	Dim thema As String
	Dim personen As String
	Dim optpersonen As String
	Dim infopersonen As String
	
	
	Dim dbfilename As String
	Dim dbserver As String
	Dim value As Integer
	
	Set uidoc = UiWs.CurrentDocument
	Set doc = uidoc.Document
	Dim userName As New notesname(session.UserName)a
	requesteddate = uidoc.FieldGetText("RequestedStartDate")
	requestedtime = uidoc.FieldGetText("RequestedStartTime")
	startdatum = uidoc.FieldGetText("StartDate")
	startzeit = uidoc.FieldGetText("StartTime")
	enddatum = uidoc.FieldGetText("EndDate")
	endzeit = uidoc.FieldGetText("EndTime")
	thema = uidoc.FieldGetText("thema") & " " & uidoc.FieldGetText("kdnummer") & " " & uidoc.FieldGetText("kdname") & " TERMIN UM " & requesteddate & " " & requestedtime
	
	'Terminbestätigung eintragen
	uidoc.EditMode = True
	Call uidoc.FieldSetText("termin_bestaetigt", "1") 
	Call uidoc.Save()
	Call db.OpenMail   
	dbfilename=db.filepath   
	dbserver = db.server
'*****************Do this chunk of code for each holiday in the year**************************      
	Set uidoc = UiWs.ComposeDocument (dbserver,dbfilename,"Appointment")
	Call uidoc.FieldSetText("AppointmentType","0")
	Call uidoc.FieldSetText("tmpAppointmentType","0")
	Call uidoc.Refresh
	Call uidoc.FieldSetText("Subject", thema)
		'Datumswerte
	Call uidoc.FieldSetText("StartDate",startdatum)
	Call uidoc.FieldSetText("EndDate",enddatum)
	Call uidoc.FieldSetText("StartTime",startzeit)
	Call uidoc.FieldSetText("EndTime",endzeit)
	
	Call uidoc.Refresh
	Call uidoc.Save()
	'Call uidoc.Close()
'****************************************************************************************************	
End Sub
Titel: Re: Kalendereintrag für jemand anderen erstellen
Beitrag von: Tode am 27.11.14 - 11:31:31
Nun, die entsprechenden Berechtigungen vorausgesetzt, müsstest Du diese Zeile
Code
Call db.OpenMail
ersetzen durch:
Code
Set db = New NotesDatabase( MailServerDesBenutzers, MailFileDesBenutzers )

Oder Du sparst Dir db komplett, und ersetzt diese Zeilen:
Code
dbfilename=db.filepath   
dbserver = db.server
durch diese:
Code
dbfilename=MailServerDesBenutzers
dbserver = MailFileDesBenutzers

Wie Du an Mailserver und Mailfile eines anderen Benutzers kommst, wurde hier im Thread ja schon angedeutet.

Jetzt kommt das grosse ABER: Durch Erstellen des Dokumentes im Frontend wird wiederum die Kachel des anderen Mitarbeiters bei demjenigen, der den Code verwendet hinzugefügt. Und das wolltest Du ja gerade vermeiden.

AUSSERDEM: Wenn der Benutzer 5 Mal auf den Button klickt, dann ist der Eintrag 5 Mal vorhanden, eine Prüfung findet nicht statt.

Um das RICHTIG zu machen, müsste man das Appointmentdokument im Backend erstellen, und alle Felder manuell füllen und das Dokument mit dem aktuell offenen Dokument "verlinken", so dass man es einfach updaten / löschen kann, wenn sich das Ursprungsdokument ändert... Aber ich fürchte, das übersteigt Deine aktuellen Fähigkeiten, weil wie gesagt: Das ist selbst für erfahrene Programmierer nicht trivial...
Titel: Re: Kalendereintrag für jemand anderen erstellen
Beitrag von: Thorsten Kalweit am 27.11.14 - 11:45:50
Ich habe gerade eine Lösung hier aus dem Forum gefunden :-)

http://atnotes.de/index.php/topic,41883.msg268602.html#msg268602

Mit dem Skript funktioniert alles genau so wie es sein soll :-)

Danke trotzdem für Eure Unterstützung