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".
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.
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.
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
