4.21.2.4. Code lokal ausgeführt im CADconnector (VBS)

Der CadConnector kann Skripte laufen lassen, die in $CADENAS_SETUP\scripts\cadconnector\web abgelegt sind.

Eine Methode, die man laufen lassen kann, muss eine Funktion sein und einen "Context"-Parameter nehmen.

Mögliche Teile (members) des "Context"-Objekts sind bislang folgende: Mident, DialogResult, DialogDefinition, MailTemplate, ErrorDetails

Es gibt verschiedene Anwendungsfälle, wann solch eine Funktion aufgerufen werden kann, z.B. um die Daten des "add2db"-Dialogs zu verifizieren/anzureichern.

Hooks zu "Add2db" und "request per Mail" Dialogen können in erpcustom.cfg konfiguriert werden:

[WEB_CALLBACKS]
BeforeShowModule=
BeforeShowFunction=
BeforeCommitModule=
BeforeCommitFunction=

Sie müssen den Namen der vbs/vbb-Datei und den Namen der aufzurufenden Funktion unter $CADENAS_SETUP\scripts\cadconnector\web spezifizieren.

Der zuvor gezeigte "Hook" könnte Daten/Struktur des Dialogs modifizieren und z.B. Werte vorausfüllen oder sogar die Definition des Dialogs ändern, evtl. durch Deaktivierung einiger Felder. Um das zu tun, müssen Sie den Teil "DialogDefinition" des "context" Parameters modifizieren. Für Details siehe VBS-Dokumentation des "prxWebDialog".

Beispiel

function PreProcessAdd2DbDialog(context)
  dim dlg = context.DialogDefinition
  dim priceField = dlg.GetRootContainer().FindElement("price")
  'get price from SAP
  priceField.Value = CStr(25)
  set PreProcessAdd2DbDialog = dlg
end function

Der zuvor übergebene "Hook" kann den User-Input des Dialogs mittels des Teils DialogResult überprüfen. Für Details schauen Sie nach prxWebDialogResult.

Beispiel

function VerifyInput(context)
  dim price = CInt(context.DialogResult.Values.Item("price"))
  if (price < 1000) then 
    context.ErrorDetails = "Test error!"
    VerifyInput = false
  else
    VerifyInput = true
  end if
end function

Es gibt auch andere Situationen, wann ein Web-Dialog angezeigt werden könnte. Beispiel: OnExport Callbacks im CadConnector (dasselbe wie PSOL) könnten einen WebDialog (prxWebDialog) erstellen und 3Dfindit durch einen Execute-Aufruf veranlassen, es anzuzeigen.

Beispiel

function OnExportCad()
  dim dlg = CreateObject("cnstools.webdialog")
  dlg.Title = "Enter value"

  dim container = dlg.getRootContainer()
  dim lbl = container.addLabel("lbl1")
  lbl.Label = "Value: "
  container.addTextEdit("id1")

  dlg.addButton("ok", "OK", "submit")
  dlg.addButton("cancel", "Cancel", "cancel")

  dim result = dlg.execute() 
  stdprint(result.action)
  stdprint(result.values.Item("id1"))
end function