Zwar beantworte ich nicht konkret Deine Frage, möchte aber gerne etwas zum Thema "Masken im Dokument speichern" beitragen.
Diese Option würde ich niemals verwenden. Die wichtigsten Gründe dazu:
- keine nachträgliche Fehlerkorrektur in bestehenden Dokumenten möglich
- gleiches gilt für Funktionserweiterungen oder Layoutänderungen
- Mails mit gespeicherten Masken würde ich im System generell verbieten (technisch ausschließen), da die ideale Träger für Trojaner sind
- höherer Speicherbedarf je Dokument
Wie würde ich nun das von Dir geschilderte Grundproblem lösen (also die Erhaltung alter Versionen):
Die variablen Teile der Masken würde ich in Teilmasken auslagern und diese als berechnete Teilmaske in die Maske aufnehmen. Der Name der Teilmaske steht in einem Feld der Maske, das berechnet beim Anlegen ist.
Ändert sich nun der Inhalt eines Formulars, erstelle ich eine Kopie der Teilmaske und gebe im Namen eine Versionsnummer mit. In der zugehörigen Maske ändere ich die Formel im Teilmaskenfeld auf den neuen Namen.
Alle Dokumente, die mit der alten (Teil-)Maske erstellt wurden, haben das alte Aussehen, die danach erstellten das neue.
Einziger Nachteil ist eine höhere Anzahl von Teilmasken, da alle Versionen der Teilmasken vorgehalten werden müssen. Um das Problem, dass zu jeder Teilmaskenart (bei Dir wohl die 300) noch eine Maske exisitieren müsste, ließe sich so umgehen, indem man eine einzige Trägermaske baut und beim Erstellen von Dokumenten die Art des zu erstellenden Dokuments auswählen lässt, die dann das Feld mit der Teilmaske steuert. In dieser einen Maske sind dann die Basisfunktionen eines Dokuments der Datenbank, so dass die nicht von Maske zu Maske kopiert werden müssen (was man natürlich auch mittels einer (System-)Teilmaske realisieren könnte).