Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: OCS am 20.10.03 - 11:03:15

Titel: Antwortdokument mit Script erstellen
Beitrag von: OCS am 20.10.03 - 11:03:15
Hi Leute,
hab das Problem, das ich über eine Ansicht per Klick auf Button ein neues Dokument via Agent erzeigen möchte.. der Agent (Script unten) läuft auch ohne Fehler durch, doch das erzeugte Dokument wird anschließend nicht in der Ansicht angezeigt! Jemmand ne Ahnung an was das liegen könnte??

Gruß Björn


Script:


Sub Initialize
   
'Variablen zum Schlüssel auslesen
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim workspace As New NotesUIWorkspace
   Dim uidoc As notesuidocument
   Dim cpdoc As NotesDocument
   Dim uiview As NotesUIView
   
   'Aktivdb
   Dim aktivdoc As notesdocument
   
   
   'Variablen zu auslesen der Items im ausgewählten Checkpunkt
   Dim cpaufnr As notesitem
   Dim cpaufpos As notesitem   
   Dim cpproj As notesitem
   Dim cpocssb  As  notesitem
   Dim cpproocspl As notesitem
   Dim cpende As notesitem
   Dim cpbez As notesitem
   Dim cpartbez As notesitem
   Dim cpname1 As notesitem
   Dim cpipss As notesitem
   Dim cpclart As notesitem
   Dim cpstatus As notesitem
   Dim cpstatusDat As notesitem
   Dim cpendedt As notesitem
   Dim cpclid As notesitem
   Dim cplfnr As notesitem
   Dim cpreader As notesitem
   Dim cpkdnr As notesitem
   Dim cpautor As notesitem
   Dim cpaok As notesitem
   Dim cpmail1 As notesitem
   Dim cpmail2 As notesitem
   Dim cparchive As notesitem
   Dim cpmail1names As notesitem
   Dim cpmail2names As notesitem
   Dim cpmonate As notesitem
   Dim cparchive_no As notesitem
   Dim cparchive_yes As notesitem
   Dim cpdate_ok As notesitem
   Dim user As String
   user = session.CommonUsername
   
   'Variablen in die die Items dann in umgewandelter Form geschrieben werden
   Dim aunr As String
   Dim posi As String
   
   'Variablen um auf FridaAktiv zuzugreifen
   
   Dim db_fri As notesdatabase
   Dim view_fri As notesview   
   Dim collect_Fri As notesdocumentcollection
   Dim doc_fri As NotesDocument
   Dim temp As Variant
   
   Dim adoc As Variant
   
   Set db = session.CurrentDatabase
   Set uiview = workspace.Currentview
   
   Set collection = db.UnprocessedDocuments
   Set cpdoc = collection.GetFirstDocument()
   
   Call uiview.SelectDocument(cpdoc) ' Soll das aktuell ausgewählte Dokument in den Zugriff nehmen
   
   Set aunritem = cpdoc.GetFirstItem( "KOAUNR" )
   Set posiitem = cpdoc.GetFirstItem( "PSPOSI" )
   
   Set cpaufnr = cpdoc.GetFirstItem( "aufnr" )
   Set cpaufpos = cpdoc.GetFirstItem( "aufpos" )
   Set cpproj = cpdoc.GetFirstItem( "proj" )
   Set cpocssb  = cpdoc.GetFirstItem( "cpocssb" )
   Set cpproocspl = cpdoc.GetFirstItem( "proocspl" )
   Set cpende = cpdoc.GetFirstItem( "cpende" )
   Set cpbez = cpdoc.GetFirstItem( "cpbez" )
   Set cpartbez = cpdoc.GetFirstItem( "artbez" )
   Set cpname1 = cpdoc.GetFirstItem( "name1" )
   Set cpipss = cpdoc.GetFirstItem( "ipss" )
   Set cpclart = cpdoc.GetFirstItem( "clart" )
   Set cpstatus = cpdoc.GetFirstItem( "cpstatus" )
   Set cpstatusDat = cpdoc.GetFirstItem( "cpstatusdat" )
   Set cpendedt = cpdoc.GetFirstItem( "cpendedt" )
   Set cpclid = cpdoc.GetFirstItem( "clid" )
   Set cplfnr = cpdoc.GetFirstItem( "cplfnr" )
   Set cpreader = cpdoc.GetFirstItem( "cpreader" )
   Set cpkdnr = cpdoc.GetFirstItem( "kdnr" )
   Set cpautor = cpdoc.GetFirstItem( "cpautor" )
   Set cpaok = cpdoc.GetFirstItem( "aok" )
   Set cpmail1 = cpdoc.GetFirstItem( "cpmail1" )
   Set cpmail2  = cpdoc.GetFirstItem( "cpmail2" )
   Set cparchive = cpdoc.GetFirstItem( "cparchive" )
   Set cpmail1names = cpdoc.GetFirstItem( "cpmail1names" )
   Set cpmail2names = cpdoc.GetFirstItem( "cpmail2names" )
   Set cpmonate = cpdoc.GetFirstItem( "cpmonate" )
   Set cparchive_no = cpdoc.GetFirstItem( "archive_no" )
   Set cparchive_yes = cpdoc.GetFirstItem( "archive_yes" )
   Set cpdate_ok = cpdoc.GetFirstItem( "date_ok" )
   
' Jetzt neue Aktion mit den eingelesenen Items erstellen
   
   
   
   Set aktivdoc = New NotesDocument( db )
   aktivdoc.Form = "aktion"
   Call aktivdoc.replaceitemvalue("aufnr",cpaufnr)
   Call aktivdoc.replaceitemvalue("aufpos",cpaufpos)
   Call aktivdoc.replaceitemvalue("proj",cpproj)
   Call aktivdoc.replaceitemvalue("cpocssb", user)
   Call aktivdoc.replaceitemvalue("cpende",cpende)
   Call aktivdoc.replaceitemvalue("cpbez",cpbez)
   Call aktivdoc.replaceitemvalue("name1",cpname1)
   Call aktivdoc.replaceitemvalue("ipss",cpipss)
   Call aktivdoc.replaceitemvalue("clart",cpclart)
   Call aktivdoc.replaceitemvalue("cpstatus",cpstatus)
   'Call aktivdoc.replaceitemvalue("cpende",cpendedt)
   'Call aktivdoc.replaceitemvalue("aok",cpaok)
   Call aktivdoc.replaceitemvalue("zeitvon","00:00")
   Call aktivdoc.replaceitemvalue("zeitbis","00:00")
   Call aktivdoc.replaceitemvalue("dauer","0")
   Call aktivdoc.replaceitemvalue("tkt","055")
   Call aktivdoc.replaceitemvalue("jnf","N")
   Call aktivdoc.replaceitemvalue("cpart","Björntest")
   
Call aktivdoc.Save( True, True )      
   

   
   
   
End Sub
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: Semeaphoros am 20.10.03 - 11:47:21
call workspace.viewrefresh
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: OCS am 20.10.03 - 13:00:14
danke für den tipp, aber auch nach dem erneuten öffnen der db ist kein dokument da!!!!  ???
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: Semeaphoros am 20.10.03 - 13:03:45
Mach mal einen View mit allen Dokumenten (nicht hierarchisch) und schau, ob das Ding überhaupt in die Datenbank kommt. Wenn Du es dann in diesem View siehst, überprüfe, ob das entstandene Dokument überhaupt die Eigenschaften/Felder usw. hat, die Du erwartest
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: OCS am 20.10.03 - 13:08:31
die idee hatte ich auch schon, leider nix da!!
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: Semeaphoros am 20.10.03 - 13:13:14
Schon mal mit dem Debugger geschaut, ob der activedoc.save überhaupt erreicht wird?
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: OCS am 20.10.03 - 13:51:19
also, habs grade versucht... ! hab mal nen screenshot gemacht und angehängt! er übernimmt wohl alle daten, kommt auch über das save event hinweg, aber die daten sind weg!
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: OCS am 20.10.03 - 14:23:27
hab grad nochmal versucht und die fehlermeldung "für mehrere zeitgleiche transaktionen können sie nicht den selben db handle benutzen!"

was soll das?
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: Semeaphoros am 20.10.03 - 16:00:23
Keine Ahnung, was die Fehlermeldung soll. Der Screenshot, das war im Moment, wo das Programm auf dem SAVE steht?

Ueberprüfe mal, ob in der Datenbank überhaupt ein neues Dokument entsteht, in den Datenbank-Eigenschaften unter Anzahl Dokumente, die müsste ja eigentlich nach oben gehen.

Wenn das der Fall ist, dann müsste man wohl oder übel mit Notes-Peek dahintergehen ....

Es sei denn (Spontangedanke): Werden da irgendwie Reader-Felder generiert? So, dass Du Dich quasi selber aussperrst?

Wenn das nix nützt, denke ich mal, wird das zu einem Supportfall. Alternativ könntest Du mir natürlich das Ding zur Untersuchung schicken, allerdings dann nicht mehr gratis (das gibt dann doch ein bisschen Aufwand, auch wenn ich denke, dass das rasch zu entdecken ist, was da schief läuft ...... ohne Garantie :-)
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: Glombi am 20.10.03 - 16:08:28
Hi Björn,
im Thema des Thread steht, dass Du ein Antwortdokument erstellen willst. Ich sehe aber nirgends im Code die stelle

Call aktivdoc.MakeResponse( cpdoc )
call aktivdoc( true, true )

Nur so wird das aktivdoc zum Antwortdokument von cpdoc.

Auch wenn Du die Maske "aktion" als Antwortmaske erstellt hast, muss Du das explizit in Deinem Script setzen.

Andreas
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: Semeaphoros am 20.10.03 - 16:12:21
Das stimmt, das hab ich auch schon gesehen gehabt, im Moment scheint es aber so, dass das Dokument gar nicht in der DB erscheint, denn bei einem View mit allen Dokumenten müsste das Ding trotzdem drin sein, es sei denn, dieser View ist irgendwie auch nicht in Ordnung.
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: Glombi am 20.10.03 - 16:20:57
Ich habe den Eindruck, in dem Code fehlt was, oder wozu sollen die ganzen Deklarationen und Settings sein, die nirgends verwendet werden?
Wozu ist bpsw.
Call uiview.SelectDocument(cpdoc)
da?


Andreas
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: Semeaphoros am 20.10.03 - 16:25:20
Dem kann ich nur zustimmen, allerdings ist damit zu rechnen, dass wir nur einen Ausschnitt davon sehen.
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: Glombi am 20.10.03 - 16:26:48
...genau, und der Fehler ist in dem Teil der fehlt.

Andreas
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: Semeaphoros am 20.10.03 - 16:29:41
Kann sein, er hat mir ja nicht gesagt, an welchem Punkt er den Printscreen vom Debugger gezogen hat, sprich, ob er wirklich zum Save gekommen ist. Lassen wir ihn mal die Frage nach den Anzahl Doks beantworten, das dürfte aufschlussreich sein
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: OCS am 20.10.03 - 16:46:19
also, der debugger läuft komplett durch!

Call uiview.SelectDocument(cpdoc)

benutz ich um das aktuell angeklickte Dokument zu bekommen!
ist der komplette code! das ich sag mal "mutterdokument" hat ne andere form, als das was ich erstellen möchte! das funktioniert manuell ganz gut, aber in backend hab ich halt besagte probleme!

danke das ihr drüber nachdenkt!
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: Semeaphoros am 20.10.03 - 17:15:28
Aber Du beantwortest die Fragen nicht oder unvollständig, so kommen wir nicht weiter.
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: Till_21 am 20.10.03 - 17:23:13
haeng an die items doch mal die eigenschaft issummary...


das bewirkt manchmal wunder !
(wie in bern)

gruss
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: Glombi am 20.10.03 - 17:27:38
Ich habe mir mal deie Mühe gemacht, alles zu entfernen, was Du nicht brauchst und die MakeResponse Methode hinzugefügt..

Sub Initialize
   
'Variablen zum Schlüssel auslesen
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim cpdoc As NotesDocument
   
   'Aktivdb
   Dim aktivdoc As notesdocument   
   
   'Variablen zu auslesen der Items im ausgewählten Checkpunkt
   Dim cpaufnr As notesitem
   Dim cpaufpos As notesitem   
   Dim cpproj As notesitem
   Dim cpocssb  As  notesitem
   Dim cpproocspl As notesitem
   Dim cpende As notesitem
   Dim cpbez As notesitem
   Dim cpartbez As notesitem
   Dim cpname1 As notesitem
   Dim cpipss As notesitem
   Dim cpclart As notesitem
   Dim cpstatus As notesitem
   Dim cpstatusDat As notesitem
   Dim cpendedt As notesitem
   Dim cpclid As notesitem
   Dim cplfnr As notesitem
   Dim cpreader As notesitem
   Dim cpkdnr As notesitem
   Dim cpautor As notesitem
   Dim cpaok As notesitem
   Dim cpmail1 As notesitem
   Dim cpmail2 As notesitem
   Dim cparchive As notesitem
   Dim cpmail1names As notesitem
   Dim cpmail2names As notesitem
   Dim cpmonate As notesitem
   Dim cparchive_no As notesitem
   Dim cparchive_yes As notesitem
   Dim cpdate_ok As notesitem
   Dim user As String
   user = session.CommonUsername
      
   Set db = session.CurrentDatabase  
   Set collection = db.UnprocessedDocuments   'alle gewählten Dokument
   Set cpdoc = collection.GetFirstDocument  
      
   
   Set cpaufnr = cpdoc.GetFirstItem( "aufnr" )
   Set cpaufpos = cpdoc.GetFirstItem( "aufpos" )
   Set cpproj = cpdoc.GetFirstItem( "proj" )
   Set cpocssb  = cpdoc.GetFirstItem( "cpocssb" )
   Set cpproocspl = cpdoc.GetFirstItem( "proocspl" )
   Set cpende = cpdoc.GetFirstItem( "cpende" )
   Set cpbez = cpdoc.GetFirstItem( "cpbez" )
   Set cpartbez = cpdoc.GetFirstItem( "artbez" )
   Set cpname1 = cpdoc.GetFirstItem( "name1" )
   Set cpipss = cpdoc.GetFirstItem( "ipss" )
   Set cpclart = cpdoc.GetFirstItem( "clart" )
   Set cpstatus = cpdoc.GetFirstItem( "cpstatus" )
   Set cpstatusDat = cpdoc.GetFirstItem( "cpstatusdat" )
   Set cpendedt = cpdoc.GetFirstItem( "cpendedt" )
   Set cpclid = cpdoc.GetFirstItem( "clid" )
   Set cplfnr = cpdoc.GetFirstItem( "cplfnr" )
   Set cpreader = cpdoc.GetFirstItem( "cpreader" )
   Set cpkdnr = cpdoc.GetFirstItem( "kdnr" )
   Set cpautor = cpdoc.GetFirstItem( "cpautor" )
   Set cpaok = cpdoc.GetFirstItem( "aok" )
   Set cpmail1 = cpdoc.GetFirstItem( "cpmail1" )
   Set cpmail2  = cpdoc.GetFirstItem( "cpmail2" )
   Set cparchive = cpdoc.GetFirstItem( "cparchive" )
   Set cpmail1names = cpdoc.GetFirstItem( "cpmail1names" )
   Set cpmail2names = cpdoc.GetFirstItem( "cpmail2names" )
   Set cpmonate = cpdoc.GetFirstItem( "cpmonate" )
   Set cparchive_no = cpdoc.GetFirstItem( "archive_no" )
   Set cparchive_yes = cpdoc.GetFirstItem( "archive_yes" )
   Set cpdate_ok = cpdoc.GetFirstItem( "date_ok" )
   
' Jetzt neue Aktion mit den eingelesenen Items erstellen
         
   Set aktivdoc = New NotesDocument( db )
   aktivdoc.Form = "aktion"
   Call aktivdoc.replaceitemvalue("aufnr",cpaufnr)
   Call aktivdoc.replaceitemvalue("aufpos",cpaufpos)
   Call aktivdoc.replaceitemvalue("proj",cpproj)
   Call aktivdoc.replaceitemvalue("cpocssb", user)
   Call aktivdoc.replaceitemvalue("cpende",cpende)
   Call aktivdoc.replaceitemvalue("cpbez",cpbez)
   Call aktivdoc.replaceitemvalue("name1",cpname1)
   Call aktivdoc.replaceitemvalue("ipss",cpipss)
   Call aktivdoc.replaceitemvalue("clart",cpclart)
   Call aktivdoc.replaceitemvalue("cpstatus",cpstatus)
   'Call aktivdoc.replaceitemvalue("cpende",cpendedt)
   'Call aktivdoc.replaceitemvalue("aok",cpaok)
   Call aktivdoc.replaceitemvalue("zeitvon","00:00")
   Call aktivdoc.replaceitemvalue("zeitbis","00:00")
   Call aktivdoc.replaceitemvalue("dauer","0")
   Call aktivdoc.replaceitemvalue("tkt","055")
   Call aktivdoc.replaceitemvalue("jnf","N")
   Call aktivdoc.replaceitemvalue("cpart","Björntest")
   
Call aktivdoc.MakeResponse( cpdoc )
Call aktivdoc.Save( True, True )      

Andreas
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: OCS am 20.10.03 - 17:31:14
ok, werd mir jetz alle threads nochmal durchschauen und stell dann morgen früh die antworten hier rein! wünsch euch nen schönen feierabend!!!

gruß björn
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: Semeaphoros am 20.10.03 - 17:38:38
Till_21:
Also ein Wunder hier in Bern könnte ich eigentlich ganz gut brauchen :-))

Das Wunder, das Du wohl antönst, ist doch schon eine Weile her ... und auch wenn das Jahr für mich eine etwas besondere Bedeutung hat, war ich damals noch nicht hier  :P

issummary: sollte hier nicht nötig sein, da er ja ein neues Dokument macht. Aber schaden kann es sicher nicht.

Gruss, Jens
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: OCS am 21.10.03 - 12:06:21
also, mein fehler war tatsächlich, das ich deine beiden zeilen:

Call aktivdoc.MakeResponse( cpdoc )
call aktivdoc( true, true )

nicht eingebaut hatte, danach hats funktioniert! danke vielmals!!

hab jetzt allerdings schon wieder ein neues problem:

ich versuche aus einem uidoc eine dokumentenverknüpfung (zum aktuellen uidoc) in ein backenddokument zu platzieren. ich bekomme das dokument auch in den zugriff, aber wenn ich versuche das richtextfeld im backenddokument zu füllen, bekomme ich die fehlermeldung: " AppendDocLink requires a NotesDocument, Notesview or  Notesdatabase argument"!!

Hier mein Quellext die Fehlermeldung kommt in der unterstrichenen Zeile!

Dim uidoc As notesuidocument
   Dim session As notessession
   Set session = New notessession
   Dim workspace As notesuiworkspace
   Dim rtitem As notesrichtextitem
   Dim db As NotesDatabase
   Set workspace = New notesuiworkspace
   Dim collection As NotesDocumentCollection
   Dim doc As NotesDocument
   Set uidoc = workspace.currentdocument
   Dim temp As String
   Dim view As notesview
   Dim schnellstart As String ' Ist das Dokument über FridaAktiv geöffnet worden?
   Dim aktivid As String ' Um zugeordnetes AktivDoc zu suchen
   schnellstart = uidoc.fieldgettext("schnellstart")
   aktivid = uidoc.fieldgettext("aktiv_id")
   If schnellstart = "J" Then
      Set db = session.Getdatabase("OCS02/OCS GmbH", "aktiv\fridaakt.nsf", False)
      Set view = db.getview ("ViewActionsUNID")
      Set collection = view.getalldocumentsbykey(aktivid)
      Set doc = collection.GetFirstDocument()
      
      Print collection.count
      Set rtitem = New NotesRichTextItem(doc, "Link")
                          Call rtitem.AppendDocLink( uidoc, "Dokumentenlink")


      Call doc.Save( False, False )
   End If

Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: Axel Janssen temp am 21.10.03 - 12:12:29
Call rtitem.AppendDocLink( uidoc, "Dokumentenlink")

das ist auch keins von den genannten, sondern ein uidoc. Versuche
Call rtitem.AppendDocLink( uidoc.Document, "Dokumentenlink")
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: OCS am 21.10.03 - 12:43:27
danke, werds versuchen!!

edit: danke!! hat funktioniert! mein einziges problem ist jetzt noch, das ich das dokument auf das ich zugreife, grade erst über backend erstellt habe und noch keinen zugriff habe! wenn ich jetzt aber nen "call workspace.viewrefresh " mache (danach geht es, hab ich versucht!), hab ich das problem, das die db auf die ich zugreife 25.000 dokumente beinhaltet und das refreshen ca. 2 minuten dauert! das ist für mich und meinen chef nicht befriedigend! gibts da noch ne andere möglichkeit??

gruß
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: OCS am 21.10.03 - 14:39:45
mein einziges problem ist jetzt noch, das ich das dokument auf das ich zugreife, grade erst über backend erstellt habe und noch keinen zugriff habe! wenn ich jetzt aber nen "call workspace.viewrefresh " mache (danach geht es, hab ich versucht!), hab ich das problem, das die db auf die ich zugreife 25.000 dokumente beinhaltet und das refreshen ca. 2 minuten dauert! das ist für mich und meinen chef nicht befriedigend! gibts da noch ne andere möglichkeit??

gruß
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: ata am 21.10.03 - 15:33:06
... beim Speichern kannst du dir die neue DocID des Dokumentes merken und das Dokument dann über die Datenbank

Set doc = db.GetDocumentByUNID( sUNID )

... wieder initialisieren. Dann sparst du dir den Weg über die View...

ata
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: koehlerbv am 21.10.03 - 15:47:12
Oder das UIDoc vor dem AppendDocLink speichern über Front- oder Backend. Das würde ich sowieso dringend empfehlen, denn wenn das Speichern vom User abhängt, kann es ja durchaus sein, daß in den anderen Docs schon DocLinks drin sind, aber der User dann das UIDoc verwirft ...

Bernhard
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: OCS am 21.10.03 - 16:35:42
danke erstmal euch beiden!!

wie meinst Du das mit dem übers frontend speichern? soll ich doc (siehe quelltext oben) als uidoc öffnen, den doclink machen und dann wieder zumachen? hab leider nicht so die ahnung, wie ich übers backend ein document als uidoc aufmache...!

gruß
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: koehlerbv am 21.10.03 - 16:56:07
Wie auch immer Du Dein doc erzeugst: Es muß vor dem Erstellen des DocLinks gespeichert sein.
Code
Set uidoc = workspace.currentdocument
Nun wissen wir ja nicht, wie Du zu NotesUIWorkspace.CurrentDocument kommst. Ist das ein neues Dokument, wurde es ja im FrontEnd erstellt. Aber egal: Dem muß sich jetzt
Call uidoc.Save
oder
Call uidoc.Document.Save (True, False, True)
anschliessen.
Dann (und nur dann) funktioniert auch der Tip von ata. Was heisst Tip - nur so geht es ja.

Bernhard
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: Axel Janssen temp am 21.10.03 - 16:56:10
reicht nicht einfach uidoc.save() in deinem code?

backend würde ich so machen:
doc.computeWithForm(true, true);
boolean check = doc.save (true, false);

if (check = false) then messageToUser end if


Du kannst ein backend Dokument ins frontend laden mit
NotesUIWorkspace.EditDocument(total, viele, parameter)

Gruß Axel
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: OCS am 21.10.03 - 17:16:18
bin jetzt soweit, das alles funktioniert, nur mein im backend editiertes dokument (unten doc) wird nach dem erstellen nur nach dem refresh angezigt! ich werd jetzt wohl mal das mit dem "NotesUIWorkspace.EditDocument(total, viele, parameter :D )"  versuchen und dann weiter sehen... hier noch mal mein code, falls er euch intressiert!


Sub Initialize
   Dim uidoc As notesuidocument
   Dim session As notessession
   Set session = New notessession
   Dim item As notesitem
   Dim item2 As notesitem
   Dim workspace As notesuiworkspace
   Dim rtitem As notesrichtextitem
   Dim db As NotesDatabase
   Set workspace = New notesuiworkspace
   Dim collection As NotesDocumentCollection
   Dim doc As NotesDocument
   Dim check As String
   Dim ready As Variant
   Dim problem As String
   Set uidoc = workspace.currentdocument
   Dim temp As String
   Dim view As notesview
   Dim schnellstart As String
   Dim aktivid As String
   
   schnellstart = uidoc.fieldgettext("schnellstart")
   aktivid = uidoc.fieldgettext("aktiv_id")
   problem = uidoc.fieldgettext("DocTitel")
   Call uidoc.save
   If schnellstart = "J" Then
      Set db = session.Getdatabase("OCS02/OCS GmbH", "aktiv\fridaakt.nsf", False)
      Set view = db.getview ("ViewActionsUNID")
      Call view.Refresh
      Set collection = view.getalldocumentsbykey(aktivid)
      Set doc = collection.GetFirstDocument()
      Print collection.count
      Call doc.Replaceitemvalue("CheckCall", "X")
      Call doc.Replaceitemvalue("tmp_link", "X")
      Call doc.Replaceitemvalue("CPart", Problem)
      Print collection.count
      Set rtitem = New NotesRichTextItem(doc, "Link")
      Call rtitem.AppendDocLink( uidoc.document, "Dokumentenlink")
      Call rtitem.AppendText("          " )
      Call rtitem.AppendText(Problem)
      
      Call doc.Save( False, False )      
   End If      
End Sub

meld mich morgen nochmal!!

danke für eure hilfe!!

gruß björn!
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: Semeaphoros am 21.10.03 - 18:26:13
Axel Jansen temp:
Du solltest da schon noch dazu sagen, dass das Java ist und nicht LotusScript.
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: koehlerbv am 21.10.03 - 19:38:55
Java, Semeaphoros ? Eher nicht. Nur das "boolean ..." ist nicht LS-konform.

@Björn: Vor dem Ende Deiner Routine machst Du noch ein uidoc.Close und ein workspace.ViewRefresh, dann solltest Du auch Dein neues Dokument sehen.

Bernhard
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: Semeaphoros am 21.10.03 - 20:28:27
Dochdoch Java:
If und End If auf derselben Zeile sollte nach Norm in LS (Basic) nicht gehen, habs allerdings nicht probiert, ob LS das allenfalls toleriert.

Und Strichpunkte am Ende jeder Zeile.
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: koehlerbv am 21.10.03 - 21:03:52
Hascht recht, Jens ;-)
LS mag da vieles nicht (und das ist auch gut so, ich mag besonders die pingeligen Compiler)

Aber Axel Jensen ist eben ein Kaffee-Mensch ;-)

Bernhard
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: Semeaphoros am 21.10.03 - 21:28:44
Bernhard:

Also, ein Kaffee-Mensch bin ich auch, musste mir gleich mal einen holen :-)

Die Vorliebe für restrictive Compiler teile ich vollkommen mit Dir, so hab ich mich auch eher vor C gedrückt und mein Pascal und später Delphi hoch gehalten, und besonders die Borland-Linie hat ja gezeigt, dass man damit deutlich schneller deutlich mehr erreichen konnte als mit anderen Werkzeugen, ohne auf die vielgepriesene Direktheit von C wirklich zu verlieren. Mit Pointern und Inline-ASM oder später sogar integriert compiliertem Assembler waren natürlich alle Türen offen.

Wobei, ich erlebe meine bisherigen Java-Schritte nicht wirklich als weniger einschränkend als LS. Java ist endlich das, was C schon hätte sein sollen punkto Restritkionen. Aber es hat eine Reihe von anderen Sachen, die mir nicht so besonders gefallen - aber das könnte man bei LS genauso sagen.

Konkret, das mit dem nicht Gestatten, nehme an, Du meinst das End If, das hat hysterische --- eh histo....  Bedeutung: Ur-Basic war eine Sprache, die nur einzeilige Konstrukte kannte, damit erübrigte sich ein End If, das gesamte  

If Bed Then Instr1 Else Instr2

musste auf dieselbe Zeile  --- fertig. Auch Compound-Instruktionen, wie sie heute implizit im Then oder im Else-Zweig oder auch im Switch-Konstrukt oder den andernorts diskutierten Schlaufen gab es - mit Ausnahme von For .. Next - nicht. Und wegen der Backward-Compatibility, die auch hier gilt (auch wenn Basig cerade mal 1 Jahr jünger ist als Du :-) ergibt zwingend, dass es dieses Einzeiler-IfThenElse noch geben muss.

Uh, schon wieder diese Geschichten mit der Geschichte :-)
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: OCS am 22.10.03 - 09:53:49
@koehlerbv


@Björn: Vor dem Ende Deiner Routine machst Du noch ein uidoc.Close und ein workspace.ViewRefresh, dann solltest Du auch Dein neues Dokument sehen.

Bernhard


das mit dem workspace.viewrefresh ist ja mein problem, ich hab 25.000 docs in der db das dauert 3 minuten zu refreshen!

gruß björn
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: Axel Janssen temp am 22.10.03 - 10:00:54
o.k. das war eine adHoc von mir selbst erfundene Mischsprache in einem Blitzposting.
Werd aber die Zicken in Zukunft lassen, weil es echt verwirren kann. ;D

Gruß Axel
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: Semeaphoros am 22.10.03 - 10:24:13
Wie heisst denn diese Sprache? Cafaxel .... ??  ;D
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: OCS am 22.10.03 - 10:36:03
ich glaub der thread läuft aus dem ruder :-\

wieder zum Thema



@Björn: Vor dem Ende Deiner Routine machst Du noch ein uidoc.Close und ein workspace.ViewRefresh, dann solltest Du auch Dein neues Dokument sehen.

Bernhard


das mit dem workspace.viewrefresh ist ja mein problem, ich hab 25.000 docs in der db das dauert 3 minuten zu refreshen!

gruß björn

Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: Semeaphoros am 22.10.03 - 10:42:36
Da muss man eben das eigene Multithreading einschalten, dann geht das schon, 2 Threads in einem zu bearbeiten. Ich befürchte, auf Deine Frage hat niemand eine Antwort, deshalb kommt nix mehr. Bernhard??
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: OCS am 22.10.03 - 11:07:27
ok, bin jetz nen schritt weiter! nach dem speichern des backenddocs öffne ich es wieder mit    

Set aktivdoc = workspace.EditDocument( editmode, doc, doc )
call aktivdoc.editmode = true


danach will ich es speichern und bekomme die fehlermeldung

"invalid note id"!  wenn ich allerdings die fehlermeldung wegdrücke habe ich den gewünschten effekt (das dokument wird in der ansicht ohne zu refreshen sichtbar!!!) kann ich die fehlermeldung irgendwie ignirieren??

gruß björn
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: koehlerbv am 22.10.03 - 11:12:37
Die Syntax stimmt aber nicht:
Set aktivdoc = workspace.EditDocument (true, doc, false)

Die folgende Zeile kannst Du dann ersatzlos streichen.

HTH,
Bernhard
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: Semeaphoros am 22.10.03 - 11:14:13
on error resume next
...........
on error goto 0


Aber 1 jetzt bekommst Du gar keine Fehlermeldungen mehr in dem punktierten Abschnitt.

Aber 2 Illegale Note-ID ist eine schwerwiegende Geschichte, da würd  ich mich mal dahinterklemmen, warum die Fehlermeldung kommt. Ich hab im Moment auch keine Idee
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: Glombi am 22.10.03 - 11:21:59
Ist aktivdoc ein NotesDocument oder ein NotesUIDocument. Falls ersteres, musst Du noch ein NotesUIDocument deklarieren.
Versuch mal folgendes:

dim aktivuidoc as NotesUIDocument
Set aktivuidoc = workspace.EditDocument (true, doc)
call aktivuidoc.Save
call aktivuidoc.Close

Andreas
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: Glombi am 22.10.03 - 11:27:09
on error resume next
...........
on error goto 0

Für ein Error Handling in Script sollten wir mal einen separaten Thread machen. Das ist schon ein Kapitel für sich und hier laufen ja schon 2 Threads. Für Männer, die ja bekanntlich nicht multitaskingfähig sind, eine echte Herausforderung. ;D

Andreas
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: Glombi am 22.10.03 - 11:38:27
@glombi:

aktivdoc ist ein backenddoc, das ich über workspace.EditDocument
als uidoc öffne!
und das ist der Fehler! Also versuch mal meinen Vorschlag umzusetzen.

Andreas
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: Semeaphoros am 22.10.03 - 11:43:33
Andreas: völlig richtig, das wäre ein eigener Thread wert :-)
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: OCS am 22.10.03 - 11:49:58
@glombi:

Deine Zeilen machen keinen unterschied, ist das gleiche das ich mache, nur das die variablen anders heissen!

danke trotzdem!!! ;)

hier noch mal der komplette quelltext ums klarer zu machen!


Sub Initialize
   Dim uidoc As notesuidocument
   Dim session As notessession
   Set session = New notessession
   Dim item As notesitem
   Dim workspace As notesuiworkspace
   Dim rtitem As notesrichtextitem
   Dim db As NotesDatabase
   Set workspace = New notesuiworkspace
   Dim collection As NotesDocumentCollection
   Dim doc As NotesDocument
   Dim problem As String
   Set uidoc = workspace.currentdocument
   Dim temp As String
   Dim view As notesview
   Dim schnellstart As String
   Dim aktivid As String
   Dim aktivdoc As notesuidocument
   
   schnellstart = uidoc.fieldgettext("schnellstart")
   aktivid = uidoc.fieldgettext("aktiv_id")
   problem = uidoc.fieldgettext("DocTitel")
   Call uidoc.save
   If schnellstart = "J" Then
      Set db = session.Getdatabase("OCS02/OCS GmbH", "aktiv\fridaakt.nsf", False)
      Set view = db.getview ("ViewActionsUNID")
      Call view.Refresh
      Set collection = view.getalldocumentsbykey(aktivid)
      Set doc = collection.GetFirstDocument()
      Print collection.count
     
      Call doc.Replaceitemvalue("CheckCall", "X")
      Call doc.Replaceitemvalue("tmp_link", "X")
      Call doc.Replaceitemvalue("CPart", Problem)
     
      Set rtitem = New NotesRichTextItem(doc, "Link")
      Call rtitem.AppendDocLink( uidoc.document, "Dokumentenlink")
      Call rtitem.AppendText("          " )
      Call rtitem.AppendText(Problem)
     
      Call doc.Save( False, False )      
      Set aktivdoc = workspace.EditDocument (True, doc, False) ' Hier öffne ich das vorher bearbeitet Backenddoc (doc)
      Call aktivdoc.save ' hier kommt der fehler!
      Call aktivdoc.close
      Call uidoc.save      
      Call uidoc.close
     
     
     
     
   End If      
End Sub


Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: Glombi am 22.10.03 - 11:53:38
 ??? ??? ???
Also laut Deinem, Code ist aktivdoc KEIN Backendoc.
Dim aktivdoc As notesuidocument

Das ganze wird in einem Dokument ausgelöst, gell?

Also hast Du ein uidoc und willst ein neues Dokument öffnen.

Versuch mal die folgenden Scriptzeilen
Call doc.Save( False, False )      
      Set aktivdoc = workspace.EditDocument (True, doc, False) ' Hier öffne ich das vorher bearbeitet Backenddoc (doc)
      Call aktivdoc.save ' hier kommt der fehler!
      Call aktivdoc.close
      Call uidoc.save      
      Call uidoc.close

zu tauschen durch:
Call doc.Save( False, False )      
      Call uidoc.save      
      Call uidoc.close

      Set aktivdoc = workspace.EditDocument (True, doc, False) ' Hier öffne ich das vorher bearbeitet Backenddoc (doc)
      Call aktivdoc.save ' hier kommt der fehler!
      Call aktivdoc.close
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: OCS am 22.10.03 - 12:05:10
nicht ganz richtig,
aus uidoc heraus bearbeite ich das backenddokument "DOC".
nachdem ich es bearbeitet und gespeichert habe, öffne ich "DOC" unter dem name "aktivdoc" also uidokument und speichere es dann um es in der ansicht anzuzeigen ohne einen refresh machen zu müssen.....


hintergrund:
ich kann keinen refresh machen, da die db 25.000 dokumente umfasst und das einfach zu lange dauern würde!
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: Glombi am 22.10.03 - 14:40:06
Hier mein Code:

Sub Initialize
  Dim uidoc As notesuidocument
  Dim session As notessession
  Set session = New notessession
  Dim item As notesitem
  Dim workspace As notesuiworkspace
  Dim rtitem As notesrichtextitem
  Dim db As NotesDatabase
  Set workspace = New notesuiworkspace
  Dim collection As NotesDocumentCollection
  Dim doc As NotesDocument
Dim currentdoc As NotesDocument
  Dim problem As String
  Set uidoc = workspace.currentdocument
  Dim temp As String
  Dim view As notesview
  Dim schnellstart As String
  Dim aktivid As String
  Dim aktivdoc As notesuidocument
 
set currentdoc = uidoc.Document 

schnellstart = uidoc.fieldgettext("schnellstart")
  aktivid = uidoc.fieldgettext("aktiv_id")
  problem = uidoc.fieldgettext("DocTitel")
  Call uidoc.save
Call uidoc.close

  If schnellstart = "J" Then
      Set db = session.Getdatabase("OCS02/OCS GmbH", "aktiv\fridaakt.nsf", False)
      Set view = db.getview ("ViewActionsUNID")
      Call view.Refresh
      Set collection = view.getalldocumentsbykey(aktivid)
      Set doc = collection.GetFirstDocument()
      Print collection.count
     
      Call doc.Replaceitemvalue("CheckCall", "X")
      Call doc.Replaceitemvalue("tmp_link", "X")
      Call doc.Replaceitemvalue("CPart", Problem)
     
      Set rtitem = New NotesRichTextItem(doc, "Link")
      Call rtitem.AppendDocLink( currentdoc, "Dokumentenlink")
      Call rtitem.AppendText("          " )
      Call rtitem.AppendText(Problem)
     
      Call doc.Save( False, False )           

      Set aktivdoc = workspace.EditDocument (True, doc)
      Call aktivdoc.save
      Call aktivdoc.close                
     
  End If     
End Sub

Andreas
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: OCS am 22.10.03 - 14:48:22
hi andreas,
das macht leider keinen unterschied, gleiche meldung!

danke trotzdem!  :'(
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: Glombi am 22.10.03 - 15:19:53
Es kann sein, dass Notes ein Problem damit hat, ein anderes UI Dokument zu öffnen oder dass das aktuelle UI Dokument, in dem sich auch der Script Code befindet, geschlossen wird.
Dann kannst Du evtl. den Code in einen Agenten auslagern. Dazu müsstest Du bspw. die UNID in die NOTES.INI schreiben und dann den Agenten aufrufen.

Andreas
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: Semeaphoros am 22.10.03 - 15:25:15
Lieber in ein Profildokument und nicht in die Notes.Ini, da liegt eh schon genug ungelöschter Schrott rum ...
Titel: Re:Antwortdokument mit Script erstellen
Beitrag von: OCS am 22.10.03 - 15:28:45
ich dank euch für die hilfe, werd mal sehen was ich hinkriege!