Zugriff auf ein per @Command([ComposeWithReference]...) erstelltes Dokument

  • Hallo,


    ich habe ein Dokument, von dem ich per ComposeWithReference Kinderdokumente erzeugen möchte, die eine ganze Menge der Daten aus dem Dokument übernehmen. Anschließend möchte ich in der selben Formel noch weitere Felder in dem neuen Dokument verändern... Geht das???
    Wenn ja wie??


    Hier der Code, der nicht geht...


    Code
    @Command([EditDocument];@Command([ComposeWithReference];"":"";"(IncorporationOrder)";2));
    _Workflow:="OrderBO-Germany";
    _Masks:=@GetProfileField("(WFParameters)";"OrderMasks";_Workflow);
    @SetField("OrderMasks";_Masks)


    Was mache ich falsch??


    Norbert

  • Auf "Was mache ich falsch" lautet die erste Frage: "Was willst du denn machen ?" ComposewithReference ist ein Befehl, der das aus dem Mailumfeld bekannte ANTWORT MIT PROTOKOLL formalisiert.


    Du wirst also keine Einzelfelder aus deinem Startdokument wiederfinden. Die werden alle in ein Feld, das übrigens auch BODY heißen muß, in einen komprimierbaren Abschnitt mit oder ohne Anhänge erstellt.


    Vielleicht willst du ein normales Antwortdokument mit der Option FORMELN ÜBERNEHMEN WERTE AUS GEWÄHLTEM DOKUMENT erstellen oder etwas ganz anderes. Das geht auf jeden Fall aus deinem Schreiben nicht klar hervor.

  • Zitat

    Du wirst also keine Einzelfelder aus deinem Startdokument wiederfinden. Die werden alle in ein Feld, das übrigens auch BODY heißen muß, in einen komprimierbaren Abschnitt mit oder ohne Anhänge erstellt.


    Wenn ich das ComposeWithReference mit der Option "2" mache, dann werden die Feldinhalte in entsprechende Felder übernommen, wenn entsprechende Formeln in den Feldern des neuen Dokuments vorhanden sind...


    Zitat

    Vielleicht willst du ein normales Antwortdokument mit der Option FORMELN ÜBERNEHMEN WERTE AUS GEWÄHLTEM DOKUMENT erstellen oder etwas ganz anderes. Das geht auf jeden Fall aus deinem Schreiben nicht klar hervor.


    Genau sowas will ich dabei machen, jedoch nur mit bestimmten Feldern.
    Ich möchte aus einem Zentraldokument Aufträge an unterschiedliche Abteilungen erstellen, die jedoch nicht im Original arbeiten sollen (die Gefahr für Replizierkonflikte bei Parrallelen Prozessen ist mir zu hoch). Deshalb sollen die in Antwortdokumenten arbeiten. Wenn die Arbeit abgeschlossen ist, kann ich das Ergebnis bzw. Protokoll ins Hauptdokument zurückübertragen.


    Ich möchte jetzt eigentlich nur in der Formel, nachdem ich das Antwortdokument mit den übertragenen Feldinhalten habe, ein paar Werte aus einem Profildokument eintragen. Wenn ich das aber in der selben Formel mache, dann werden die Eintragungen im Hauptdokument vorgenommen....
    Wie kriege ich nach dem ComposeWithRefence in der Formel Zugriff auf das neue Dokument???


    Norbert

  • Nun ja, ich wollte schlau sein :hammer: und nur eine Maske erstellen, die berechnete Teilmasken mit den Unteraufgaben enthält. Somit könnte ich beim erstellen das Feld, welcher Prozess gestartet wird setzen, der dann die benötigten Teilmasken definiert (aus einem Profildokument).... Die Teilmasken sollten im Original und Antwortdokument gleichermassen benutzt werden, um Designänderungen nur an einer Stelle machen zu müssen....


    Aber ich denke mal ich werde das ganze wohl weniger elegant mit Einzelmasken für jeden Prozess machen müssen. Oder gibt es noch einen Trick??


    Norbert

  • Ooooh gott, jetzt wollte ich mal einen Ausflug in die Verf***te Formelsprache machen, weil das so elegant aussah....


    Das sind ca. 150 Felder, von denen jeder Subprozess ca. 30-40 Felder kriegen soll... Das ist scheisse mit CopyAllItems, da brauche ich dann 120 RemoveItem; aber die Einzelnen Items zu kopieren ist auch Fingerwundklopperei...


    Heul


    Norbert

  • Sind die zu kopierenden Felder alle in einer Teilmaske ?


    Dann kannst du es folgendermassen machen:


    Set fmSub = ndb.GetForm("Name der Teilmaske")
    forall x in fmSub.Fields
    call docNeu.replaceItemValue(x, docOrg.GetItemValue(x))
    end forall


    Das kopiert alle Felder aus dem alten Dokument ins neue, die in der teilmaske als Felder vorliegen

  • Dann schreibst du beim Erstellen die Werte aus dem Hauptdokument, die die Teilmaskenauswahl betreffen, in ein Userprofildokument (oder in Environmentvariablen) und ziehst diese Werte im neuen Dokument im Kopfteil ein. Dann werden nur die entsprechenden Teilmasken gezogen, die sich auf diese Felder im ANtwortdokument beziehen.

  • Zitat

    Set fmSub = ndb.GetForm("Name der Teilmaske")


    Welchen Typ muß fmSub und ndb haben??


    Norbert

  • Hallo codec,


    wenn Du bei der Formelsprache bleiben willst, hast Du es schon mit der Function @UpdateFormulaContext versucht?
    Damit wird laut Hilfe der Context auf das aktuelle Fenster (neues Dokument) gelegt.

  • Zitat

    wenn Du bei der Formelsprache bleiben willst, hast Du es schon mit der Function @UpdateFormulaContext versucht?


    Jetzt wollte ich mich gerade auf immer dem Gott des Lotus Script unterwerfen und da kommst Du mit einer Lösung für mein Formelproblem, die es (im Ersten Test) tatsächlich tut....


    Mal sehen, wie der Wettstreit der Götter weiter geht...


    Danke


    Norbert

  • Ich weiß:
    "Du sollst nur einen Gott haben..."
    Aber Dein (und unser) Gott heißt eben Notes, und der scheint viele Untergötter (und Unterteufelchen) zu haben...

  • Ich setz das mal auf Erledigt, auch wenn ich nicht weiß, welches Unterteufelchen (das ist garantiert der bessere Begriff als Untergott) dann endgültig das Rennen machen wird....



    Danke an alle...


    Norbert