Autor Thema: Speichern-Nachfrage bei erneutem öffnen und Weiterleiten  (Gelesen 2055 mal)

Offline Dynadrate

  • Frischling
  • *
  • Beiträge: 6
Hallo!
Erstmal hallo an alle! Hab hier schon eine Zeit lang mitgelesen, und bin nun auf ein Problem gestoßen das ich nicht selbst oder mit Hilfe der Suche lösen kann. Mein Listing:

REM {In case no approver is set};
@If(ManagerHumanResources = "" & BTLeader = "" & GeneralManagerHREurope = "" & VicePresidentEurope = "" & President = ""; @Do(@Prompt([Ok];"Forward request";"Please set at least one approver");@Return(""));"");

temp := @Prompt([YesNo];"Forward request";"Do you want to forward this staff request?");
@If(temp = 0 | temp = "";@Return("");"");

REM {edit mode necessary to set status field};
@Command([EditDocument];1);

REM {Who's resposible after authorization?};
@While(recipient = "";
   @If(
      Status = 0; @Do(recipient := ManagerHumanResources; @SetField("Status"; 100));
      Status = 100; @Do(recipient := BTLeader; @SetField("Status"; 200));
      Status = 200; @Do(recipient := GeneralManagerHREurope; @SetField("Status"; 300));
      Status = 300; @Do(recipient := VicePresidentEurope; @SetField("Status"; 400));
      Status = 400; @Do(recipient := President; @SetField("Status"; 500));
      Status = 500; @Do(recipient := CreatedBy; @Do(@SetField ("Status"; 600);@SetField ("FinishedBy";@UserName);@SetField("FinishedOn";@Now)));
   "")
);

REM {define CopyTo};
@If(Status=600; CopyTo := ManagerHumanResources;"");

REM {set debug fields};
@SetField("ForwardedBy";@UserName);
@SetField("ForwardedTo";recipient);
@SetField("CurrentlyResponsible";recipient);
@SetField("ForwardedOn";@Now);
@SetField("Author";recipient);
@SetField("Reader"; @Unique(Reader:@UserName));

REM {If the request has been finished in this action, write alternate history text};
REM {else, write simple "forwarded by" note};
@If(FinishedBy=@UserName;
   
   @Do(
      @SetField("DocumentHistory";DocumentHistory : (@Text(@Now) + " staff request finished by " + @Text(@Name([CN];@UserName)) + ", request returned to author " + @Text(@Name([CN];recipient)) +",  copy sent to " + @Text(@Name([CN];CopyTo)) ) )
   ;
      @MailSend(recipient;CopyTo;"";"Staff request finished: " + Position;"";"A staff report has been finished, please check request."+ @NewLine + "Please remember: it can take about 30 minutes for replicating a document to a notes server in an other location." + @NewLine +"If you are a laptop user, please make sure that your databases have been replicated first." + @NewLine + "Link to document:";[IncludeDoclink])
   );

   @Do(
      @SetField("DocumentHistory";DocumentHistory : (@Text(@Now) + " staff request forwarded by " + @Text(@Name([CN];@UserName)) + ", request forwarded to " + @Text(@Name([CN];recipient)) ) )
   ;
      @MailSend(recipient;"";"";"Staff request created: " + Position;"";"A staff report has been created, please check request."+ @NewLine + "Please remember: it can take about 30 minutes for replicating a document to a notes server in an other location." + @NewLine +"If you are a laptop user, please make sure that your databases have been replicated first." + @NewLine + "Link to document:";[IncludeDoclink]))
   );

REM {save&close};
@PostedCommand([FileSave]);
@PostedCommand([FileCloseWindow])

Wie man sieht, es geht um einen Antrag der mehrere Stufen durchlaufen muss. Dabei kann es sein, dass eine Stufe nicht befragt wird, daher die while-Schleife. Wenn zugestimmt wird, wirds an den nächsten weitergeleitet, bis der Antrag schlieslich wieder beim Autor an kommt.

Nun das Problem: Wenn das Dokument erstellt und gespeichert wurde, und danach erneut geöffnet und weitergeleitet wird, wird gefragt ob das Dokument gespeichert werden soll. Wenn man mit "ja" bestätigt, stürzt Notes ab. Warum ist das so? Immerhin passiert das nicht, wenn man das Dokument erzeugt und direkt weiterleitet.

Gruß, Markus

Edit: Da ich nicht weiß, wo der Fehler auftritt hier ist der komplette Code gelistet...Ich hoffe jedoch mit der Formatierung etwas zur Übersichtlichkeit beizutragen.
« Letzte Änderung: 03.09.08 - 16:56:54 von Dynadrate »

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Speichern-Nachfrage bei erneutem öffnen und Weiterleiten
« Antwort #1 am: 03.09.08 - 16:23:03 »
Willkommen im Forum!

Zwei Tipps, wie Du hier schneller zu Antworten kommst:
1) Schreibe einen richtigen Namen unter Deine Postings.
2) Kürze den Code solange zusammen, bis genau die Teile übrig bleiben, die das Problem verursachen. Mangels Nachvollziehbarkeit am praktischen Beispiel sind wir hier auf das Lesen des (langen) Codes angewiesen, was bei Formelsprache ohnehin schon nicht ganz einfach ist.

Warum tust Du Dir für ein derartiges Konstrukt überhaupt Formelsprache an? Das schreit doch eigentlich förmlich nach LotusScript (Möglichkeiten, Lesbarkeit, DEBUGGER!).

Bernhard

Offline LN4ever

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 505
  • Geschlecht: Männlich
Re: Speichern-Nachfrage bei erneutem öffnen und Weiterleiten
« Antwort #2 am: 03.09.08 - 22:57:14 »
Hallo Freund Dünner Draht (oder so ähnlich),

ich könnte wetten, daß du bei dem Statuswechsel ein Autorenfeld setzst, das ab dem ersten Save im Backend dann auch seine Wirkung tut.

Das UI merkt aber nichts von alledem - und da gibt es in der Maske noch so ein Feld "Zuletzt gespeichert am", das automatisch berechnet ist und natürlich von beim FILECLOSEWINDOW von dem Wert abweicht, der gespeichert wurde.

Also fragt das Frontend als höflicher Mensch noch einmal vor dem Schließen des Fensters, ob diese Änderungen gespeichert werden sollen. Erst wenn du JA sagst, will es deiner Bitte auch nachkommen, aber das Backenddokument sagt ihm, daß es das nicht mehr darf.

Da hilft nur Eines: du mußt dem Frontend die Höflichkeit abgewöhnen. Zwischen das FILESAVE und das FILECLOSEWINDOW setzst du eine Zeile

FIELD SAVEOPTIONS:="0"

Das heißt: Frontend, frag nicht lang rum, mach das Fenster einfach zu. Das Geniale dabei ist, daß dieses Feld SAVEOPTIONS jetzt nicht im Dokument gespeichert wird, denn
- beim ersten SAVE war es noch nicht da
- ein zweites SAVE gibt es nicht (mehr)
Dieses Feld ist also ein Vermittler zwischen Frontend und Backend.

Gruß

Norbert

Situs vilate in isse tabernit.

Offline Dynadrate

  • Frischling
  • *
  • Beiträge: 6
Re: Speichern-Nachfrage bei erneutem öffnen und Weiterleiten
« Antwort #3 am: 04.09.08 - 17:52:24 »
Hallo Norbert!
Erstmal danke für die ausführliche und verständliche Antwort!
Du hast vollkommen Recht, Ich setzte nach dem Statuswechsel

@SetField("Author";recipient);

Also als Autor den nächst-Verantwortlichen.
Ich habe nun die letzten Zeilen, wie folgt angepasst:

REM {save&close};
@PostedCommand([FileSave]);
FIELD SAVEOPTIONS:="0";
@PostedCommand([FileCloseWindow])

Komischerweise wird aber noch immer gefragt, ob nicht gespeichert werden soll. Danach erfolgt das Aufhängen, dass mit Strg+Untbr abgebrochen werden kann.
Was hab ich noch übersehen?

Als weitere Möglichkeit sehe ich nur noch, einen MailSend-Agenten hinten 'ran zu hängen, oder das Listing komplett in Lotus Skript zu übersetzen. Beides nicht gerade meine Favoriten!

Dein Freund, dünner Draht  ;)

Offline Dynadrate

  • Frischling
  • *
  • Beiträge: 6
Re: Speichern-Nachfrage bei erneutem öffnen und Weiterleiten
« Antwort #4 am: 22.09.08 - 13:07:27 »
Ich hab das Problem soeben selbst lösen können.
Ich habe den Bearbeitungmodus in der Aktion gesetzt, damit die Status-Felder geändert werden können, wenn ein Antrag genehmigt wird.

Ein einfaches
@If(@IsDocBeingEdited=0;@Command([EditDocument];1);"");

hats erledigt  :)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz