Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: Holgi3389 am 14.09.10 - 09:16:53

Titel: Besprechungseinladung aus Datenbank
Beitrag von: Holgi3389 am 14.09.10 - 09:16:53
Hallo alle zusammen,

ich bin absoluter Neuling in der Programmierung von Lotus Script und ich habe die Aufgabe etwas damit umzusetzten und brauche dafür professionelle Hilfe. :)

Wir haben eine Datenbank in der ein Termin für einen 6-Wochencheck erstellt wird für einen Kundendienstmitarbeiter. Beim erstellen soll ein Agent ausgeführt werden, der dem Mitarbeiter eine Einladung zu einer Besprechung für diesen Termin per Mail sendet. Ich habe schon versucht mich da etwas rein zu arbeiten, aber bisher ohne Erfolg.

Würde mich über Hilfe freuen.

MFG Holgi
Titel: Re: Besprechungseinladung aus Datenbank
Beitrag von: m3 am 14.09.10 - 09:26:58
ich habe die Aufgabe etwas damit umzusetzten und brauche dafür professionelle Hilfe. :)
Dein Budget?

Zitat
Ich habe schon versucht mich da etwas rein zu arbeiten, aber bisher ohne Erfolg.

Würde mich über Hilfe freuen.
Deine Frage lautet?

Empfohlene Lektüre: http://www.tty1.net/smart-questions_de.html#explicit
Titel: Re: Besprechungseinladung aus Datenbank
Beitrag von: Peter Klett am 14.09.10 - 09:32:05
An Deiner Stelle würde ich in 2 Schritten an die Aufgabe gehen.

Zuerst baust Du Dir ein Script, das eine beliebige Mail verschickt. Informationen dazu findest Du in der Hilfe und bestimmt auch hier im Forum.

Funktioniert das, sendest Du manuell eine Besprechungseinladung, so wie sie vom Agenten gesendet werden soll. Von dieser Mail schaust Du Dir bevor die geöffnet wurde die Felderliste an (Eigenschaften Dokument, 2. Reiter), vergleichst die mit der Felderliste des per Script versendeten und erweiterst Dein Script um alle fehlenden Felder.
Titel: Re: Besprechungseinladung aus Datenbank
Beitrag von: Holgi3389 am 14.09.10 - 09:49:51
An Deiner Stelle würde ich in 2 Schritten an die Aufgabe gehen.

Zuerst baust Du Dir ein Script, das eine beliebige Mail verschickt. Informationen dazu findest Du in der Hilfe und bestimmt auch hier im Forum.

Funktioniert das, sendest Du manuell eine Besprechungseinladung, so wie sie vom Agenten gesendet werden soll. Von dieser Mail schaust Du Dir bevor die geöffnet wurde die Felderliste an (Eigenschaften Dokument, 2. Reiter), vergleichst die mit der Felderliste des per Script versendeten und erweiterst Dein Script um alle fehlenden Felder.

Danke da habe ich wenigstens schonmal einen Ansatz für die Aufgabe
Titel: Re: Besprechungseinladung aus Datenbank
Beitrag von: Holgi3389 am 15.09.10 - 11:52:23
Ich habe es jetzt bereits soweit das eine Mail per Agent abgeschickt wird, nun bin ich dabei eine Besprechungseinladung daraus zu machen.....soweit klappt auch alles nur wenn ich die Mail dann öffne dann kommt folgende Fehlermeldung:

"Fehler beim Öffnen des Dokuments: Element des Dokuments nicht gefunden"

Allerdings wird es geöffnet nur nicht ganz richtig...das sieht dann so aus:
(http://s3.directupload.net/images/100915/kweds626.jpg) (http://www.directupload.net)

Folgende Frage: Habe ich etwas im Script vergessen oder liegt es an einer Einstellung die ich irgendwo vornehmen muss

Hier ist der derzeitige Script

Dim session As NotesSession
Dim ws As New NotesUIWorkspace    
Dim uidoc As NotesUIDocument
Dim db As NotesDatabase
Dim thedoc As Notesdocument      ' Das Originaldokument
Dim maildoc As NotesDocument      'Maildokument
   
Set session = New NotesSession
Set db = session.CurrentDatabase
Set uidoc = ws.CurrentDocument
Set thedoc = uidoc.Document
   
'Erstelle Mail
Set maildoc = db.CreateDocument
maildoc. Form = "Notice"
maildoc.AppointmentType = "3"
maildoc.tmpAppointmentType = "3"
maildoc.tmpAppointmentType_1 = "3"
maildoc.tmpUseLongDate = "0"
maildoc.tmpStartTime ="07:00:00"
maildoc.tmpEndTime = "07:30:00"
maildoc.tmpStartDate =  thedoc.DatumKD_6WC_erstellt_1
maildoc.tmpEndDate =  thedoc.DatumKD_6WC_erstellt_1
maildoc.Subject = thedoc.Firma
maildoc.SendTo = thedoc.Mitarbeiter
maildoc.Organizer = thedoc.Mitarbeiter
maildoc.chair = thedoc.Mitarbeiter

'Sende Mail
Call maildoc.Send(False)   
Titel: Re: Besprechungseinladung aus Datenbank
Beitrag von: Peter Klett am 15.09.10 - 12:22:56
Bist Du sicher, dass Du die Felderliste des manuell gesendeten Dokumentes im geschlossenen und noch nie geöffneten Dokument abgeglichen hast? (Felderliste aus der Ansicht öffnen, nicht aus dem geöffneten Dokument!)

Feldnamen wie tmp_AppointmentType und tmp_AppointmentType_1 sehen mir stark nach berechneten oder zur Anzeige berechneten Feldern aus.

Wenn das Dokument, das Du sendest, exakt die gleichen Felder und die gleichen Feldinhalte (einschließlich Typen der Felder) hat, kann da nichts passieren. Du musst also wirklich ganz penibel alle Felder und Feldeigenschaften miteinander vergleichen.
Titel: Re: Besprechungseinladung aus Datenbank
Beitrag von: Holgi3389 am 15.09.10 - 12:28:31
Kann gut sein das es daran liegt....ich hatte das Dokument gerade geöffnet zum Vergleichen....war mein Fehler

Muss ich den auch alle Felder mit $ vorweg im Script mit eintragen wie z.B. $Alarm
Titel: Re: Besprechungseinladung aus Datenbank
Beitrag von: Peter Klett am 15.09.10 - 12:42:49
Du musst die Felder in den Dokumenten wirklich miteinander vergleichen. Es gibt Felder, die sind automatisch dabei (z.B. $UpdatedBy, $Revisions usw.), andere nicht. Das per Script versendete Dokument sollte wirklich identisch sein.

Falls Du ein Feld mit einem $ setzen musst, verwende

Call doc.ReplaceItemValue ("$Name", neuerwert)

doc.$Name = neuerwert

funktioniert nämlich nicht.

Aus dem Kopf kann ich Dir leider auch nicht sagen, welche Felder Du brauchst, und welche nicht. Dazu hast Du ja eine funktionierende Anwendung (die manuelle Einladung), die Du nur zu kopieren brauchst.
Titel: Re: Besprechungseinladung aus Datenbank
Beitrag von: koehlerbv am 15.09.10 - 12:46:42
Aber es funktioniert

doc.~$Name = neuerwert

Bernhard
Titel: Re: Besprechungseinladung aus Datenbank
Beitrag von: Holgi3389 am 15.09.10 - 14:49:51
Aber es funktioniert

doc.~$Name = neuerwert

Bernhard

hab ich so ausprobiert und es funktioniert

das mit der besprechungseinladung funktioniert jetzt auch....das einzigste problem was ich noch habe ist mit dem datum und der zeit....in der maske in der der agent ausgeführt wird ist ein feld indem ein datum ausgewählt werden kann für den entsprechenden geplante termin....ich bekomme es nur nicht hin das dieses datum dann auch in der einladung genommen wird.....desweiteren soll die uhrzeit festgelegt werden....ich habe es mit zwei verschieden werten probiert, da ich nicht wusste ob man datum und zeit verbinden kann. mein versuch sieht wie folgt aus:

Dim StartDatum As New NotesDateTime("thedoc.DatumKD_6WC_erstellt_1")
Dim EndDatum As New NotesDateTime("thedoc.DatumKD_6WC_erstellt_1")
Dim StartUhrzeit As New NotesDateTime("07:00:00")
Dim EndUhrzeit As New NotesDateTime("07:30:00")
maildoc.StartDate = StartDatum.lsLocaltime
maildoc.StartTime = StartUhrzeit.lsLocaltime
maildoc.StartDateTime = StartDatum.lsLocaltime
maildoc.EndDate = EndDatum.lsLocaltime
maildoc.EndTime = EndUhrzeit.lsLocaltime
maildoc.EndDateTime = EndDatum.lsLocaltime

muss ich die uhrzeit extra machen, da es in der maske nur ein datumsfeld gibt? und warum nimmt er die werte nicht für die einladung....ist ein fehler in dem script?
Titel: Re: Besprechungseinladung aus Datenbank
Beitrag von: Peter Klett am 15.09.10 - 15:51:44
Ich wiederhole mich ungern, aber Du musst dafür sorgen, dass die Felder identisch sind. Wenn es nicht so klappt, wie es soll, muss es einen Unterschied in den Felderlisten zwischen funktionierendem und nicht funktionierendem Dokument geben.

Dieser Teil des Scriptes kann nicht funktionieren:

Dim StartDatum As New NotesDateTime("thedoc.DatumKD_6WC_erstellt_1")
Dim EndDatum As New NotesDateTime("thedoc.DatumKD_6WC_erstellt_1")

Korrekt wäre

Dim StartDatum As New NotesDateTime(thedoc.DatumKD_6WC_erstellt_1 (0))
Dim EndDatum As New NotesDateTime(thedoc.DatumKD_6WC_erstellt_1 (0))

Vielleicht ist das schon alles, was fehlt ...
Titel: Re: Besprechungseinladung aus Datenbank
Beitrag von: Demian am 15.09.10 - 16:54:51
die Meldung hatte ich hier:
http://atnotes.de/index.php/topic,39081.0.html (http://atnotes.de/index.php/topic,39081.0.html)
auch und das ComputeWithForm war die Lösung (Antwort 1 von Peter).