Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: Tode am 26.09.12 - 09:14:38

Titel: Stationaries - Hat sich schon mal jemand mit dem Quatsch beschäftigt?
Beitrag von: Tode am 26.09.12 - 09:14:38
Ich habe hier das Problem, dass Stationaries verschwinden, sobald man ein Dokument aus Ihnen erstellt. Das ist wohl ein bekanntes Problem, siehe hier (http://www-01.ibm.com/support/docview.wss?uid=swg1LO49577).

Aber ich wollte wissen, wieso das so ist, und habe mir den Code für "Mehr -> Neue Nachricht mit Vorlage..." mal angeschaut.
Und da habe ich fast die Krise bekommen:

Code
	Set collection = uiws.Picklistcollection(PICKLIST_CUSTOM, False, database.server, database.filepath, "Stationery", "Vorlage wählen", "Wählen Sie bitte eine Vorlage für das neue Memo.")
	If Not(collection Is Nothing) Then     '//User may have cancelled		
		Set noteCursorDoc = collection.getfirstdocument
		If Not noteCursorDoc Is Nothing Then
			Set noteUIEditDocument =  uiws.Editdocument(False, noteCursorDoc)
		End If
	End If

Das heisst: Diese Aktion öffnet einfach die Vorlage zum bearbeiten, und der Rest des "Vorlagen- Handlings" passiert in den Events der Maske. Dort wird also erst die "neue Kopie" erstellt und dafür gesorgt, dass nicht die Vorlage selbst verschwindet.

Das geht aber in vielen Fällen gründlich schief.
Warum in aller Welt wird hier nicht gleich eine Kopie des Dokuments erstellt und zum bearbeiten geöffnet?
Welchen tieferen Sinn macht sowas?
Hat jemand da schon mal dran rumgeschraubt?

Unglaublich...
Titel: Re: Stationaries - Hat sich schon mal jemand mit dem Quatsch beschäftigt?
Beitrag von: eknori am 26.09.12 - 09:17:42
Es ist nichts passiert; alles nur eine Übung. ...
Titel: Re: Stationaries - Hat sich schon mal jemand mit dem Quatsch beschäftigt?
Beitrag von: Tode am 26.09.12 - 09:33:14
*lol*
Titel: Re: Stationaries - Hat sich schon mal jemand mit dem Quatsch beschäftigt?
Beitrag von: Tode am 26.09.12 - 09:42:05
Argh: Ihr glaubt es nicht... Die arbeiten tatsächlich mit $VersionOpt = "6", um quasi beim speichern aus der Vorlage ein Memo zu machen... Nur wird das $VersionOpt im Code wenn man zwischenspeichert zu früh zurückgesetzt, so dass die Vorlage verschwindet...

*ohmmmmm*
Titel: Re: Stationaries - Hat sich schon mal jemand mit dem Quatsch beschäftigt?
Beitrag von: koehlerbv am 26.09.12 - 10:10:03
Ich bring' Dir heute aus Müllheim eine Vorratsflasche Baldrian mit!

Bernhard
Titel: Re: Stationaries - Hat sich schon mal jemand mit dem Quatsch beschäftigt?
Beitrag von: Peter Klett am 26.09.12 - 10:17:30
Es gibt zwei Gründe, weshalb ich niemals die Maildatenbank oder das Adressbuch anfassen würde.

Der zweite ist, dass es bestimmt keinen Spaß macht ...
Titel: Re: Stationaries - Hat sich schon mal jemand mit dem Quatsch beschäftigt?
Beitrag von: Tode am 26.09.12 - 10:25:04
Ihr habt recht... Die Benutzer hier sind aber halt verwöhnt... Die wissen, dass man fast alles fixen kann, was IBM so verbrochen hat.
Fall irgendjemand jemals über diesen Thread stolpert, hier meine Bugfixes für dieses nervige Verhalten. Natürlich sind noch nicht alle Risiken und Nebenwirkungen geprüft, aber ich poste es trotzdem mal. In der Gemeinsamen Aktion "Werkzeuge\Neue Nachricht mit Vorlage..." und in den Aktionen in der Ansicht (Vorlage)|Stationary "Neu\Nachricht mit Vorlage..." und "Aktionen nur für Classic\mit Vorlage (Classic)" habe ich die Zeile
Code
Set noteUIEditDocument =  uiws.Editdocument(False, noteCursorDoc)
durch die folgenden Zeilen ersetzt:
Code
			Dim noteNewMemo As NotesDocument
			
			Set noteNewMemo = New NotesDocument( database )
			Call noteCursorDoc.CopyAllItems( noteNewMemo )
			Call noteNewMemo.RemoveItem("IsMailStationery")
			Call noteNewMemo.RemoveItem("MailStationeryName")
			
			Set noteUIEditDocument =  uiws.Editdocument(False, noteNewMemo)

Ausserdem im QueryOpenDocument der besagten Ansicht folgenden Code ergänzt:
Code
	Dim uiws As New NotesUIWorkspace	
	Dim noteUIEditDocument As NotesUIDocument
	Dim ses As New NotesSession
	Dim database As NotesDatabase
	Dim dc As NotesDocumentCollection
	Dim noteNewMemo As NotesDocument
	Dim noteCursorDoc As NotesDocument
	
	Set database = ses.CurrentDatabase
	
	If ses.GetEnvironmentString( "MailStEd" ) <> "2" Then
		Set dc = Source.Documents
		Set noteCursorDoc = dc.GetFirstDocument
		If Not noteCursorDoc Is Nothing Then
			Set noteNewMemo = New NotesDocument( database )
			Call noteCursorDoc.CopyAllItems( noteNewMemo )
			Call noteNewMemo.RemoveItem("IsMailStationery")
			Call noteNewMemo.RemoveItem("MailStationeryName")
			
			Set noteUIEditDocument =  uiws.Editdocument(True, noteNewMemo)
			Continue = False
		End If		
	End If

Damit sollte ich die meisten Fälle abgefangen haben...

Ja, ich weiss, dass es böse ist, in den Mailtemplates rumzufuhrwerken, aber der Kunde ist König ;-)
Titel: Re: Stationaries - Hat sich schon mal jemand mit dem Quatsch beschäftigt?
Beitrag von: it898ur am 01.10.12 - 09:07:40
Hallo,

ich pass diesen Codeteil nun schon seit Notes 5.x an und bin immer wieder fasziniert, dass IBM selbst in 8.5.3 diesen Unsinn nicht ändert. Zum Glück kann man den einmal ordentlich gemachten Code immer wieder mit Copy und Paste übernehmen.

Und ab einer gewissen Nutzeranzahl überwiegt die gesparte Supportzeit deutlich die investierte Entwicklerzeit !

Viele Grüße

André