Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Wirsing am 14.06.06 - 09:39:35

Titel: Aufgabe per LS erstellen
Beitrag von: Wirsing am 14.06.06 - 09:39:35
Hallo zusammen,


ich versuche gerade eine Aufgabe (Task - Standard aus Mailschablone) per Lotus Script zu erstellen. Diese neue Aufgabe soll mit ein paar vorbelegten Feldern noch voll änderbar für den User sein und direkt beim Auslösen der Aktion in den Vordergrund öffnen.

Das Problem ist nun, dass wenn ich das Dokument in den Edit-Modus versetze, die Optionen für die Aufgabenzuweisung ausgeblendet werden. Laut Masken-Design passiert dies nur, wenn eine Aufgabe kein neues Dokument ist.

Doch zunächst mal ein bischen Code:

...
        Dim ws As New NotesUIWorkspace
   Dim taskdoc As NotesDocument
   Dim db As New NotesDatabase( "", "" )
   
   Call db.OpenMail
   Set taskdoc=New NotesDocument( db )

   Call taskdoc.ReplaceItemValue("Form","Task")
   Call ws.EditDocument(,taskdoc)
...

Eigentlich habe ich ja zu diesem Zeitpunkt die neue Aufgabe noch nicht gespeichert, also dürfte das Dokument immernoch "Newdoc" sein, oder etwa nicht?

Wie muss ich das Dokument erstellen, damit der User noch diese Einstellungen erreich kann. Änderungen an der Mailschablone möchte ich dabei aber möglichst vermeiden.


Grüsse

Holger
Titel: Re: Aufgabe per LS erstellen
Beitrag von: Lossa am 14.06.06 - 10:36:09
Hallo,

du must das Dokument im Front-End mittel UI-Klassen erstellen und füllen.
Titel: Re: Aufgabe per LS erstellen
Beitrag von: Wirsing am 14.06.06 - 10:55:03
Hallo Lossa,


danke für die schnelle Hilfe.
Das Dokument wird jetzt schön "vorbereitet". Das einzige Problem, welches ich nun habe, ist die Datumsfelder mit einem Wert zu befüllen:

...
Dim startdatum as new NotesDateTime("14.06.2006 08:00:00")
uidoc.fieldsettext("StartDate", startdatum.isLocaltime)
...

Quittiert er mit einem "string expected" - ist auch logisch.
Wie kann ich also Nicht-Text-Felder in einem UI-Dokument befüllen?

Grüsse

Holger
Titel: Re: Aufgabe per LS erstellen
Beitrag von: Lossa am 14.06.06 - 11:01:09
hi,

im UI gibt es nur Text!

Wenn Notes das Dokument speichert, oder aktualisiert, wird als erstes die Datentypkonvertierung vorgenommen, dann die berechneten Felder usw.

Also sende Text an das Feld
Titel: Re: Aufgabe per LS erstellen
Beitrag von: Wirsing am 14.06.06 - 11:05:16
Öh, aber da bringt er eben diese Meldung  ???

Ich habe es bereits mit...

set doc = uidoc.Document
call doc.ReplaceItemValue("StartDate",startdatum.IsLocalTime)

...versucht, aber dann zeigt er mit nichts in der offenen Maske an...


EDIT: Alles Quatsch! Hab jetzt erst verstanden wie Du es gemeint hast:

Per Fieldsettext übergeben und dann von der "natürlichen" Umrechnung der Maske umwandeln lassen....

Danke nochmals

Holger
Titel: Re: Aufgabe per LS erstellen
Beitrag von: Wirsing am 14.06.06 - 11:14:25
Noch eine Frage:

Wie kann ich einen DocLink in den Body einfügen?
Titel: Re: Aufgabe per LS erstellen
Beitrag von: Lossa am 14.06.06 - 11:17:13
Doclink geht nur über die backendklassen und richtextitem, nicht via frontend. Dann müsstes du das Frontend Dokument zumachen und wieder öffnen, dann wäre der Link erst sichtbar.
Titel: Re: Aufgabe per LS erstellen
Beitrag von: Wirsing am 14.06.06 - 11:28:04
Uff, ok. Damit muss ich dann eben leben.

Und hier noch die komplette Lösung:

Code
Dim ws As New NotesUIWorkspace
Dim s As New NotesSession
Dim db As New NotesDatabase( "", "" )
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Dim taskdoc As NotesDocument
Dim taskuidoc As NotesUIDocument

Dim rtitem As NotesRichTextItem
Dim datum As String

Set uidoc = ws.CurrentDocument
Set doc=uidoc.Document

datum = uidoc.FieldGetText("dtErinnerung")
If datum ="" Then datum = Today()
Dim dt As New NotesDateTime(datum + " 08:00:00")

'Aufgabe erstellen
Call db.OpenMail
Set taskuidoc = ws.ComposeDocument(db.Server,db.filepath,"Task")
Set taskdoc = taskuidoc.Document

Call taskuidoc.fieldsettext("TaskType","1")
Call taskuidoc.fieldsettext("Subject","Projekt " + Cstr(uidoc.FieldGetText("tfProjektNummer")))
Call taskuidoc.fieldsettext("StartDate", Cstr(dt.lsLocaltime))
Call taskuidoc.fieldsettext("DueDate" , Cstr(dt.lsLocaltime))
Call taskuidoc.fieldsettext("Alarms","1")

' DocLink einfügen
Set rtitem = New NotesRichTextItem( taskdoc, "Body" )
Call rtitem.AppendDocLink( doc,  "Projekt")