Beispielskript - Remote Control

Aus ArcFlow Wiki
Version vom 19. August 2020, 14:46 Uhr von AfWikiBot (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „<languages /> <translate> <!-- <title>Beispielskript - Remote Control</title> --> <table class=BigTable bgcolor="#242A34"> <tr> <td class="BigTitle"…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen
 Beispielskript - Remote Control
Beispielskript für den Aufruf über die Application Remote Control

Das folgende Skript kann über die Application Remote Control aufgerufen werden. Die entsprechenden Einstellungen vorausgesetzt, wird über die Parameter des Aufrufs eine Arbeitsmappe identifiziert, die dann in ArcFlow angezeigt wird.

Voraussetzungen:

Die Einstellungen der Application Remote Control müssen vorhanden sein. Zudem muss mindestens ein Mappenfeld für eine Arbeitsmappe definiert sein. Die Mappe wird über den Inhalt dieses Mappenfeldes gefunden, d.h. das entsprechende Mappenfeld muss gefüllt sein. Soll zum Beispiel aus einem ERP-System die Arbeitsmappe eines Kunden aufgerufen werden, kann bei den Kunden-Arbeitsmappen ein Mappenfeld "CustomerNo" definiert werden und durch einen Datenabgleich mit der Nummer aus dem ERP-System gefüllt werden.

Aufruf der Remote Control

Ist das Skript in ArcFlow geschrieben und übersetzt worden, kann es mit folgendem Aufruf durchgeführt werden:

AF_RmtControl.exe /USER=admin /PASSWORD= /ACTION=OPEN_DIALOG /FNC=AFArcFileShowByScript /SCRIPT=ShowAbm /DOCTYPE=<Name des Mappenfelds> /DOCNO=<Inhalt des Mappenfelds> /DOCID=

Bei unserem Beispiel mit der Kundennummer würde /DOCTYPE=CustomerNo und in /DOCNO die Kundennummer aus dem ERP-System übergeben werden.

Bei dem Aufruf muss der Name des Mappenfeldes übergeben werden, nicht der Anzeigename (siehe Archivablage / Mappenfelder).

Sind zwei Arbeitsmappen mit dem gleichen Feldinhalt vorhanden, wird auf die erste gefundene Mappe positioniert.

// *****************************************************************
// Remote control
// *****************************************************************

// Input variables:
// gAFRmtCtrlDocType       : alpha;         // Doc type
// gAFRmtCtrlDocNo         : alpha;         // Doc no.
// gAFRmtCtrlId            : alpha;         // No.
// gAFRmtCtrlOptions       : int;           // FLAGS

// Output variables:
// gAFAbmId                : int;           // Workfolder no.
// gAFArcNr                : alpha(12);     // Archive no.
// gAFArcFileNr            : int;           // Attachment file no.

// *****************************************************************
// main function
main
(
  /* void */
)
: logic;                                    // Return of the script

  local
  {
    tErr     : int;
    tCteList : handle;
    tCteItem : handle;
  }

{
  tCteList # AfCteOpen(_CteList);
  tErr # AFAbmLstGetByAbmFld(gAFRmtCtrlDocType,gAFRmtCtrlDocNo,tCteList);
  if (tErr != _ErrOk)
  {
    // Fehler beim Lesen der Mappenfelder
    WinDialogBox(gAFActParentDlg,'ArcFlow-Skript: ShowAbm','Fehler beim Lesen der Mappenfelder. ' + sAFCRLF +
                                 'Mappenfeld: ' + gAFRmtCtrlDocType + sAFCRLF +
                                 'Wert: ' + gAFRmtCtrlDocNo + sAFCRLF +
                                 'Fehler: ' + CnvAI(tErr),_WinIcoError,_WinDialogOk,0);
  }
  else
  {
</p>

<p>    if (tCteList->CteInfo(_CteCount) = 0)
    {
      WinDialogBox(gAFActParentDlg,'ArcFlow-Skript: ShowAbm','Keine Arbeitsmappe gefunden.' + sAFCRLF +
                                   'Mappenfeld: ' + gAFRmtCtrlDocType + sAFCRLF +
                                   'Wert: ' + gAFRmtCtrlDocNo,_WinIcoInformation,_WinDialogOk,0);
      gAFAbmId     # 0;
      gAFArcNr     # '';
      gAFArcFileNr # 0;
    }
    else
    {
      tCteItem # tCteList->CteRead(_CteFirst);
      gAFAbmId     # CnvIA(tCteItem->spName);
      gAFArcNr     # '';
      gAFArcFileNr # 0;
    }
  }
  tCteList->AFCteCloseAll();

  // Return: True => continue processing; False => cancel processing
  return(True)
}