Domino 9 und frühere Versionen > ND6: Entwicklung

Web: Dokument mit bestimmter Form anzeigen

(1/3) > >>

kdreier:
Servus,
ich brauche mal wieder Hilfe.

Ich möchte den Inhalt eines Dokumentes in einem druckerfreundlichen Formular anzeigen. Das Öffnen des Dokumentes im Browser mit der Standardform klappt ohne weiteres. In dieser Form sind aber diverse Elemente (Farbig, Buttons, etc.), die ich nicht drucken möchte. Zusätzlich wird die Form im eigenen Frame innerhalb eines Framesets angezeigt. Und wie der IE so etwas verdruckt, ist ja hinlänglich bekannt.

Daher möchte ich aus der Dokumentenansicht über einen Button ein neues Browserfenster öffnen. Hier soll nun eine andere Form (ohne irgendwelchen Schnickschnack) verwendet werden, damit man das sauber drucken kann.
Also flugs kleine JS Funktion, und los:

--- Code: ---function OpenPrintForm(db, ParentUNID) {
window.open('/' + db + '/frmDocumentWebPrint/?OpenForm&ParentUNID=' + ParentUNID);
}

--- Ende Code ---

Klappt auch alles, die generierte URL passt soweit, auch die ParentUNID stimmt. Trotzdem werd ich nicht glücklich:


* Lt. Designer-Hilfe kann ich nur ein Dokument in einer bestimmten Form öffnen, wenn ich irgendwie Vererbung nutze. Mache ich das so wie in der Hilfe beschrieben, öffne ich tatsächlich ein neues Browserfenster und die angegebene Form wird auch verwendet. Nur leider sind alle Felder leer, nur statische Elemente (Tabellen, Feldnamen, etc.) sind sichtbar. Für den Notesclient hatte ich diese Form mit berechneten Feldern erstellt. Klappt im Notesclient wunderbar. Nur im Browser sind alle Felder leer.

Bin nun langsam ratlos - dass muss doch möglich sein, oder?

Gruß
Karsten

datenbanken24:
Das ist möglich und Dein URL sieht auch völlig korrekt aus
und sollte genau das machen, was Du erwartest.
Wir nutzen hier exakt analoge URLs und die tun's problemlos.

Dein URL
window.open('/' + db + '/frmDocumentWebPrint/?OpenForm&ParentUNID=' + ParentUNID);

hat zwar einen Mini-Kosmetikfehler,

- der Slash zwischen ...Print/?OpenForm... gehört da nicht hin
  sondern es braucht nur ...Print?OpenForm... heißen

daran liegt es aber nicht, das habe ich hier mal ausprobiert und es klappt trotzdem.

Wenn etwas mit der UNID nicht stimmen würde, kommt eine Erroranzeige beim Öffnen der neuen Maske, also scheint das bei Dir auch ok zu sein..., dito bei Lesezugriffsschutz.

Das Dokument muss natürlich vorher gespeichert sein...
und es muss aus der gleichen Datenbank kommen.

Kann ja fast nur an den Feldern in der neuen Maske selbst liegen, aber da muss ja eigentlich nur noch die Berechnungsformel oder der Vorgabewert so heißen, wie das Feld im Parent-Dokument.

Der Ansatz und der URL sind also - so gesehen - völlig richtig...
und in der Praxis funktioniert das auch, zumindest hier, sorry.
Aber es kann ja auch schon mal helfen, das zu wissen.



Alternative  Möglichkeit:

Du kannst auch das bestehende Dokument direkt öffnen und nutzt - analog wie in Notes - eine Maskenformel in einer Ansicht. Du brauchst dazu eine Ansicht mit Maskenformel auf die Druckmaske (z.B. "AnsichtDM").

Das Dokument öffnest Du im Web über diese Ansicht per URL:

server/db/AnsichtDM/DokumentKey?opendocumemt bzw. ?editdocument

Da Du die UNID des Dokuments ja bereits im Zugriff hast, kannst Du die AnsichtDM in der ersten Spalte  nach UNID sortieren und als DokumentKey die UNID in den URL nehmen. Die Technik ist zu vergleichen mit einem DBlookup, es wird die Ansicht aus dem URL gesucht und danach der DokumentKey aus der URL in der ersten sortierbaren Spalte gesucht. Die Maskenformel wird im Web genauso ausgewertet wie in Notes - und das Dokument öffnet sich in der Druckmaske.

Gruß,
Uwe

kdreier:
Vielen Dank für deine Hilfe,
es stimmt, es war soweit alles korrekt. Mit einer Ausnahme:
In meiner Printform müssen alle Felder natürlich "echte" Felder sein, nicht nur <computed text> wie in meiner Notesform.

Gruß
Karsten

kdreier:
 :-\ Servus,
das Thema ist leider noch nicht ganz erledigt.
Das Vererben und Anzeigen in eine neue Form klappt schon ganz gut, aber nur fast.
Der Haken ist, dass der Inhalt eines RTF nicht vollständig in das erbende Feld übernommen wird.
Auch werden eingebettete Images überhaupt nicht übernommen. Es wird zwar ein <img> Tag erzeugt, nur leider ohne Inhalt.

Gibt es da Limits für das Vererben aus RTF? Und was soll das mit den Bildern, die sollen natürlich ebenfalls gedruckt werden. Bisher habe ich noch nichts gefunden.  ???

Gruß
Karsten

Ayhan:
Hi,

--- Code: ---Nachtrag!
Vergiss diesen Beitrag, Uwe hat das schon beschrieben (ich sollte wirklich die Beiträge vollständig lesen)!

--- Ende Code ---

eine viel einfachere Variante:

1. Erstelle eine Maske mit den entsprechenden Feldern (wie auch in deiner Originalmaske), layoute die Maske, Maskenname z. B. PrintForm
2. Erstelle eine Ansicht, Ansichtsname = "print", Liste hier alle Dokumente auf, 1. Spalte zeigt die DocUNID (aufsteigend sortiert), Maskenformel = "PrintForm"

Fertich!

Nun bastle deine JS um:

--- Code: ---function OpenPrintForm(db, ParentUNID) {
window.open('/' + db + '/print/' + ParentUNID + '?OpenDocument');
}

--- Ende Code ---

Nun wird dein Dokument über die Ansicht "print" aufgerufen und automatisch mit der Maske "PrintForm" gerendert; klarer Vorteil: Keine Vererbungsgeschichten...

Und wenn Du besonders fleißig sein möchtest, dann kannst noch in der Maske PrintForm in den onLoad-Event folgenden Code einpasten:

--- Code: ---window.print();
--- Ende Code ---
Damit wird automatisch das Druck-Dialog-Fenster vom Betriebssystem beim öffnen der Seite aufgerufen.

Viel Spaß  ;)

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln