Ist nicht der einzige Unterschied zwischen einem NotesUIDocument und einem NotesDocument der, dass ersteres im Frontend geöffnet ist und letzteres im Backend gespeichert?
Nein, der Zusammenhang lässt sich am ehesten so darstellen:
uidoc = form + (doc) + x
Wobei x ein oder mehrere weitere UI Elemente (z.B. Teilmasken) und doc(s) sein können, da eine Maske ja beliebig weitere Daten nachladen (@Getdocfield) oder aus weiteren Datenbanken (@DbLookup), Systemen (DECS, ODBC) ziehen und in das Formular (=resultierendes UIDoc) einbetten kann die das doc gar nicht kennen kann/muss.
Die Information, welcher Maske das uidoc oder das doc zugrunde liegt, ist doch Teil der Daten, die darin gespeichert sind, oder?
Jaein. Ein doc hat zwar meistens (nicht immer) ein Form-Feld aber ob es überhaupt eine (oder mehrere) Maske(n) mit diesem Namen gibt und diese dann auch benutzt werden können/dürfen ist nicht sicher. Dokumente können auch embedded Forms haben, aber auch dann wird beim Öffnen ein uidoc daraus. Nutzer können bei geöffnetem Dokument die Maske über einen Menüpunkt wechseln - schon sieht das uidoc komplett anders aus, bei gleichem doc wohlgemerkt.
Beispiel: öffne eine Mail und wähle im Menü Ansicht > Maske wechseln... > Aufgabe
Aber wenn ich dich richtig verstehe, ist ein doc, solange es nicht geöffnet ist, optisch unstrukturiert?
Völlig richtig. Nicht nur optisch. Auch inhaltlich. Notes hat weder referentielle Integrität noch Datendefinitionen im klassischen RDBMS Sinn. Jedes doc kann andere Felder/Inhalte haben (oder auch nicht haben). Das gleiche Feld kann in einem doc eine Zahl, im nächsten eine Zeichenkette und im dritten nicht mal vorhanden sein. Und sprechend müssen Feldnamen auch nicht wirklich sein.
Wenn in einem doc ein Feld "Ort" mit dem Wert "Arktis" enthalten ist - was sagt uns das? Ohne den Rest der Anwendung erstmal nichts. Es könnte ein Geburtsort gemeint sein, ein Fundort oder ein Reiseziel.
Wenn man aber Dokumente aus einer UIView druckt (kann man ja auch über die Benutzeroberfläche), druckt man doch eigentlich auch docs und keine uidocs, oder?
Kommt drauf an. Man kann die View selbst drucken (also als Tabelle). Dann ist die UIView quasi das UIDoc, weil sie definiert was wohin gedruckt wird (und welche Teile weggelassen werden).
Oder man druckt über die View alle markierten Dokumente einzeln, dann ist die UIView nur ein Hilfsmittel zur Selektion und jedes Doc wird einzeln geöffnet und mit dem dabei verwendeten Formular (=UIDoc) gedruckt. Das muss aber nicht das sein, das im Formfeld steht. So gibt es viele Anwendungen die alternative Masken beim Drucken benutzen weil beim Drucken und Ausfüllen unterschiedliche Anforderungen stehen.
Oder - komplett andere Sicht - man speicht Werte von "docs" z.B. als txt oder csv im Dateisystem und druckt diese dann per LS/VBA per Excel oder Word als Serienbrief. Hier wären dann weder UIView noch UIDoc beteiligt. Wie das Ergebnis dann aussieht bestimmt hier ein Office-Formular.
Last but not least kann man ja auch Pages, XPages etc drucken - komplett ohne doc oder mit nachgeladenen Werten diverser docs.
HTH
Carsten