Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: kdreier am 22.08.06 - 09:53:49
-
Servus,
in einer LibraryDB verwende ich Responsedocs u.a. zur Versionskontrolle. So gibt es in einem Versionstrack ein jeweils gültiges Haupt- und u.U. mehrere veraltete Dokumente. Zusätzlich können weitere Dokumente noch im Entwurfstatus sein. Diese werden, solange sie im Status Entwurf stehen, als Antwortdokument zum gerade gültigen gezeigt.
Nun möchte ich ggf. ein beliebiges Dokument kopieren und als neues Dokument ablegen. Das Problem ist, führe ich ein
Set NewDoc = doc.CopyToDatabase(db)
mit dem Hauptdokument durch, wird ein neues Hauptdokument ohne Antworten angelegt. Mache ich das mit einem Antwortdokument, so ist auch die Kopie wieder ein Antwortdokument zu dem bisherigen Hauptdokument.
??? Vielleicht ist es zu einfach um es zu sehen, aber wie löse ich ein Antwortdokument vom Hauptdokument ab? ???
Ach ja, den Track Das Arbeiten mit Haupt- und Antwort-Dokumenten habe ich natürlich gelesen. Ist sehr hilfreich, davon steht aber leider nix drin.
Danke
Karsten
-
Vielleicht ist es zu einfach um es zu sehen, aber wie löse ich ein Antwortdokument vom Hauptdokument ab?
Ich würde sagen, indem Du das Feld $REF löscht bzw. in das Feld die DocID des neuen Hauptdokumentes einträgst.
Oder hab ich was falsch verstanden?
-
Hallo Karsten,
du kannst aus einem Antwortdokument ein Hauptdokument machen, in dem Du das Item $Ref löschst.
Viele Grüße
ghost
-
Ok,
vielleicht hab ichs ja schon. Mit der "brutalen" Methode:
Mit .RemoveItem("$REF") den Link zum Hauptdokument löschen. Dann wird es als eigenständiges Dokument angezeigt.
Sind irgendwelche Nebenwirkungen bekannt?
Gruß
Karsten
-
Äh ja,
sind wir wohl alle gleichzeitig draufgekommen. Naja, schön mal darüber gesprochen zu haben.
Trotzdem, Vielen Dank
Karsten
-
Hast Du eine eigene Maske für die Antworten (wegen des Maskentyps "Antwort")? Falls ja, musst Du auch noch einen Maskenwechsel machen.
Falls nicht (d.h. Du hast eine Maske für Haupt- und Antwortdokumente), nehme ich an, dass Du mit $VersionOpt arbeitest. Dann musst Du neben $REF auch noch
call doc.RemoveItem("$VersionOpt")
machen.
Andreas
-
Nein, ich verwende bei Haupt- und Antwortdokumenten die gleiche Maske. Mit $VersionOpt arbeite ich ebenfalls nicht, da mir die Noteseingebaute automatische Versionsverwaltung zu unflexibel ist.
Ich habe eine eigene Versionsverwaltung eingebaut, die auch mit Entwurfstatus, Promote, Demote usw. zurechtkommt. Die "Response"-Funktionalität wird nur zur einfachen Anzeige zusammengehöriger Dokumente genutzt.
Karsten
-
Wenn Du mit einer Maske arbeitest, dann darf aber auch niemand eine Antwort bearbeiten und speichern. Das muss programmtechnisch sichergestellt sein. Ansonsten wird nämlich die Antwort flugs wieder zum Hauptdokument (so wie bei einem Replizierkonflikt).
Verhindern kann man das bspw., wenn in den Maskeneigenschaften eine MANUELLE Versionshistorie eingestellt ist. Dann braucht man auch kein $VersionOpt.
Andreas
-
Das ist richtig.
grundsätzlich dürfen keine bereits gespeicherten Dokumente bearbeitet werden, es sei denn, sie sind noch im Entwurfsstatus. Dann ändert ein einfaches Speichern den Status allerdings nicht.
Um einen Entwurf gültig zu schalten muß ein "Promote" ausgeführt werden. Dann wird aus dem bisherigen Antwortdokument das neue Hauptdokument mit dem gesamten Versionstrack als Antworten.
Abgefangen wird das Editieren in den Events "QueryOpen" und "QueryModeChange" abhängig vom Dokumentstatus.
Karsten