Das Notes Forum
Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: Oliver.Bedford am 11.09.06 - 09:05:31
-
Hallo,
ich versuche mich gerade daran (ohne tiefergehende Kenntnis von Notes)
eine Document Library zu modifizieren.
Unter anderem möchte ich, dass beim Review-Prozess das Original-Dokument nicht in der Datenbank abgespeichert wird, sondern an den Benutzer gemailt wird (über was in der Art "Call savenote.Send()"). Das funktioniert beim Mischen von RichText mit Attachments nicht (z.B. wird nur das Attachment geschickt, der Text ist verloren). Die komplette Form verschicken geht ja auch nicht, also wie wäre das zu erreichen?
Ich muss doch hoffentlich nicht die Items manuell aus dem Body extrahieren?
TIA,
Oliver
-
Vielleicht liegts ja auch an mir, aber ich verstehe nicht viel von dem, was Du da schreibst ???
Was meinst Du mit Document Library? Und was ist der Review-Prozess bzw wie macht ihr den Prozess?
Kannst Du Dein Anliegen mit "einfachen" Wörtern nochmal umschreiben?
Genrell kannst Du mit
Call notesDocument.CopyAllItems( notesDocument [, replace ] )
ein Dokument und alle Felder kopieren und dann damit ganz viel machen- u.a. auch versenden.
-
Hi!
Mit Document Library meine ich eine der Standard Templates, die Notes von Hause aus mitbringt. Bei Anlegen einer neuen Datenbank als "Doc Library - Notes & Web (7)" zu finden.
Aus dem About-Dokument:
"About Document Library
What does this database do?
A Document Library application is an electronic filing cabinet that stores reference documents for access by a workgroup. The database might contain anything from environmental impact statements for a group of engineers to financial statements for a group of loan officers." [...]
Der "Review" ist eine Funktion, die diese Datenbank mitbringt (nach New Document oder Edit Document erscheint in der oberen Action Leiste ein entsprechender Button "Submit for Review").
Ein CopyAllItems ist bereits vorhanden:
[...]
Call note.CopyAllItems(savenote, False)
'from the Notes client, the body field is not available to note until a ui save
If note.HasItem("Body") Then
Set rtitem = note.GetFirstItem("Body")
savenote.RemoveItem("Body")
Call rtitem.CopyItemToDocument(savenote, "Body")
Else
note.CopyBody = True
End If
[...]
An dieser Stelle möchte ich jetzt gerne per email versenden, das klappt so einfach aber nicht.
Gruß,
Oliver
-
Wird das Savenote gespeichert, bevor Du es versendest ?
-
Wird das Savenote gespeichert, bevor Du es versendest ?
Im Skript geht es so weiter:
Call savenote.MakeResponse(note)
savenote.~$RefOptions = "1"
savenote.Subject = GetString(1)
savenote.save True, True, True
note.OriginalSaved = savenote.UniversalId
Wie gesagt, ich möchte das Dokument nicht in der DB abspeichern, sondern nur verschicken.
Ich habe das Versenden vor und nach dem Speichern ausprobiert, immer mit dem gleichen Ergebnis (Attachment ist drin, Text nicht).
Ciao,
Oliver
-
savenote.save True, True, True
Das kann nicht funktionieren. Da müßte dir eigentlich direkt ein Fehler im Designer gemeldet werden.
Korrekte Syntax wäre :
Call savenote.Save(True,True,True)
Ich glaube auch, daß es besser wäre, mal den kompletten Code zu posten. So ist das ein wenig Gestocher im Nebel.
P.S. : Ich gehe mal davon aus, daß es sich bei savenote um ein NotesDocument handelt.
-
savenote.save True, True, True
Das kann nicht funktionieren. Da müßte dir eigentlich direkt ein Fehler im Designer gemeldet werden.
Das ist Original-Code aus der Datenbank Template! Das diejenigen, die Notes gemacht haben, nicht programmieren können, habe ich schon immer vermutet. >:D
Ich kann gerne auch mehr Zeilen kopieren:
Function SendToNext
Dim RevCompleteMailError As String 'new 462
If Not(dbug Is Nothing) Then dbug.LogAction("SendToNext")
SendToNext = True
'On Error Goto StandardError
Set mailnote = New NotesDocument(db)
ReviewerList = note.ReviewerList
TotalReviewers = Ubound(ReviewerList)
RevCompleteMailError = "0" 'new 462
Set username = New NotesName(note.CurrentUser(0))
Set reviewername = New NotesName(note.CurrentEditor(0))
Set fromname = New NotesName(note.From(0))
If Lcase(username.Common) = Lcase(reviewername.Common) Then IsCurrentReviewer = True
'Statuses: 1=New, 2=In Review, 3=Review Complete
If note.Status(0) = 1 Then
note.reviewernumber = 0
ReviewerNumber = note.ReviewerNumber(0)
'savenote is a copy of the original which we save as a response to the copy that will be reviewed
If Not(note.HasItem("OriginalSaved")) Then
note.save True, True, True
Set savenote = New NotesDocument(db)
Call note.CopyAllItems(savenote, False)
'from the Notes client, the body field is not available to note until a ui save
If note.HasItem("Body") Then
Set rtitem = note.GetFirstItem("Body")
savenote.RemoveItem("Body")
Call rtitem.CopyItemToDocument(savenote, "Body")
Else
note.CopyBody = True
End If
Call savenote.MakeResponse(note)
savenote.~$RefOptions = "1"
savenote.Subject = GetString(1)
savenote.save True, True, True
note.OriginalSaved = savenote.UniversalId
End If
Else
ReviewerNumber = note.ReviewerNumber(0) + 1
End If
[... Abschnitte für Benachrichtigung der Reviewer etc. gelöscht]
End Function
Gruß,
Oliver
-
ERSTENS: Warum sollte ein
savenote.save true, true, true
nicht funktionieren ?
Diese Notation ist in Notes genau wie in VisualBasic genauso gültig wie die mit Klammern, solange kein Rückgabe- Wert benötigt wird.
Anderes Beispiel:
Messagebox "das ist eine nachricht" , 0 , "Nachricht"
bzw
Messagebox( "das ist eine nachricht" , 0 , "Nachricht" )
ZWEITENS: Du solltest auf Deine Ausdrucksweise achten, oliver:
Du hast -wie Du selbst schreibst- keine Ahnung von der Materie, und kriegst nicht mal ein simples document.send hin (aber wahrscheinlich sind diejenigen, die Notes programmiert haben auch zu blöd um eine gute Designer- Hilfe zu schreiben), also lass die abfälligen Bemerkungen über die Programmierer von Notes.
DRITTENS: Code abzupinseln und zu modifizieren, ohne die zugrundeliegende Struktur zu kennen / verstanden zu haben, geht halt meistens schief.
Du musst:
1. ein neues NotesDocument erstellen
2. Diesem Dokument die Maske "Memo" zuweisen
3. Den Body der note in das neue Dokument kopieren (savenote kannst Du vollkommen ignorieren, das hat für diese Anforderung null Relevanz
4. das Subject in das neue Dokument kopieren (bzw. selbst modifizieren)
5. die Felder SendTo, Copyto, BlindCopyTo mit entsprechenden Empfängern füllen
6. das ganze per send verschicken
Viel Glück damit
Tode