Autor Thema: Action Failed, To run this agent you must have at least one document selected  (Gelesen 3779 mal)

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Genau diese Fehlermeldung im Betreff will ich abfangen  ;)

Details:
Ein Agent mit dem Target "All selected documents" wird aufgerufen.
Wenn kein Dokument ausgewählt ist, kommt in R6 die o.g. Fehlermeldung unten in der Statusleiste (wo es leicht übersehen werden kann). In R5 kommt afaik eine Messagebox.
Ich will den Fehler abfangen und eine eigene Massagebox dem User bieten.
Das Target "All selected docs" will ich allerdings nicht ändern.

Hat wer eine Idee? Ich befürchte im Agenten-Code selbst ist es zu spät, da der erst gar nicht aufgerufen wird  :P

Matthias
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Glombi

  • Gast
In Script oder Formelsprache?

Andreas

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Der Agent selbst ist Script.

Aufgerufen wird der Agent per Formelsprache.

Deine Frage ist gut! Denn hier könnte man ja schon daran drehen, also beim Aufruf  ;)
Lieber wär mir natürlich im Agenten selbst, aber man kann nicht alles haben  :)

Ich werde mal testen, ob ich einen Error zurückbekomme beim [ToolsRunMacro] @Command.

Matthias


**EDIT**
Also das hier geht schonmal nicht, ich bekomme keinen Rückgabewert von ToolsRunMacro:
@If(
   @IsError(
      @Command([ToolsRunMacro]; "(Testagent)")
   );
   @Prompt([Ok]; "Mööp"; "Kein Dokument ausgewählt !");
   ""
)
« Letzte Änderung: 03.10.04 - 20:45:43 von TMC »
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline ..Andreas..

  • Junior Mitglied
  • **
  • Beiträge: 60
  • Geschlecht: Männlich
  • Brevity is the soul of wit.
Wenn Du mittels Formelei rausbekommen willst, ob ein Dokument gewählt wurde oder nicht, dann frag einfach nach der @UniversalID des aktuellen Dokumentes.

So könnte das ganze aussehen:

_testUNID := @Text(@UniversalID));
@If(_testUNID != @Repeat("0"; 32);
         [call agent];
         [Meldung | nix tun]
      )


Das Problem: wenn mehrere Dokumente markiert sind, und der Markierrahmen auf einer Kategorie steht liefert die Formel ebenfalls 32 * "0" (nichts selektiert).

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Danke, Seton.

Allerdings ist Dein erwähntes Problem entscheidend und daher ist diese Lösung leider nicht möglich.

Weitere Herausforderung:
Im Agenten selber verwende ich Frontend-Klassen, sodass ein Aufruf per LotusScript (also agent.Run) auch nicht erlaubt ist.
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline ..Andreas..

  • Junior Mitglied
  • **
  • Beiträge: 60
  • Geschlecht: Männlich
  • Brevity is the soul of wit.
OK, ein ScriptAgent der auf die selektierten Dokument angewendet werden soll ...

... wenn Du einfach nicht "selektierte Docs", sondern die "normale Einstellung" (habe im Moment kein Notes da, kann es also nicht genau benennen) wechselst, und Dir die Dokumente via database.UnprocessedDocuments verschaffst.
Wenn die Collection dann keine Dokumente enthält (Collection.Count = 0) ist das Script halt beendet.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
@Seton:
NotesDatabase.UnprocessedDocuments zielt je nach Agent-Kontext immer auf andere Zustände. Markierte Dokumente sind es eben, wenn der Agent auf "markierte Dokumente" zielt. Triggert man den Agent anders, greift also der Zusammenhang zwischen "unprocessed" und markierten Docs nicht mehr.

@Matthias:
Da ich mich dem Thema asap auch (wieder) widmen muss, bin ich an dem Thread weiter dran. Gerade momentan reicht aber die Zeit nicht.

Bernhard
« Letzte Änderung: 03.10.04 - 21:58:05 von koehlerbv »

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
@Seton:
Du meinst bestimmt Target "None / Run once (@Commands may be used)".

Problem dabei ist, dass das De-Selektieren der Dokumente nach Agentlauf nicht automatisch vorgenommen wird.
Außerdem gibt da die UnprocessedDocuments - Property dann nicht alle selektierten Dokumente zurück AFAIK.

Ich denke ich hake das Thema ab.

Workaround hier wäre evtl., nur Backend-Klassen zu verwenden und den Agenten per Script aufzurufen - oder diese Frontend-Aktionen z.B. über Execute auszuklammern (da diese hier nur für den Aufruf aus einer Maske heraus benötigt werden). Aber das erscheint mir hier für dieses verhältnismäßig kleine Problem zu aufwändig.

*EDIT*: Da hat Bernhard schneller geantwortet, daher habe ich oben ein "@Seton" ergänzt   ;)
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz