Hi zusammen,
folgendes Szenario:
In einer unserer Anwendungen existiert eine Maske "Task", welche u.a. verschiedene Statusarten (in Arbeit, delegiert, erledigt...) annehmen kann. Beim Ändern des Status wird der vom User per Prompt ausgewählte Status in das Feld "Status" geschrieben und anschließend ein neues Dokument mit der Maske "TaskStatus" erzeugt, in welches der Mitarbeiter anschließend Informationen eintragen kann:
@SetField("Status"; S$);
@Command([FileSave]);
@Command([ComposeWithReference]; ""; "TaskStatus"; 1);
Nun existiert eine Ansicht, welche mir alle offenen Tasks anzeigt (sprich: Status != "erledigt"). Ich öffne aus der Ansicht heraus ein Dokument und ändere den Status.
Grundsätzlich funktioniert das auch mit allen Statusänderungen wunderbar, nur beim Status "erledigt" krieg ich reproduzierbar "Eintrag im Index nicht gefunden", welches im ComposeWithReference begründet liegt: er setzt das Feld "Status" auf erledigt, speichert das Task-Dokument... in diesem Moment verschwindet das Dokument natürlich im Hintergrund aus der Ansicht der offenen Tasks -> Compose fliegt auf die Nase, weil das Dokument auf das er sich bezieht nicht mehr ausgewählt ist.
Also meine erste Idee: "na gut, dann erstell eben erst das Status-Dokument und speicher dann den Task":
@SetField("Status"; S$);
@Command([ComposeWithReference]; ""; "TaskStatus"; 1);
@Command([FileSave]);
Tja, nur bezieht sich dieses FileSave dann offensichtlich bereits auf das TaskStatus-Dokument... mein Task-Dokument bleibt ungespeichert, dafür meckern bereits Validierungsformeln der TaskStatus-Maske.
Nun meine Frage: wie löse ich diese Problematik am Geschicktesten?
Ich vermute, ich werde ComposeWithReference nicht überzeugen können, dass er sich einfach auf das grade geöffnete Dokument bezieht anstatt auf das in der dazugehörigen Ansicht ausgewählte.
Danke schon mal für Tipps
Ciao
Ben