CadConnector può eseguire gli script che sono memorizzati in $CADENAS_SETUP\scripts\cadconnector\web
Un metodo che può essere eseguito deve essere una funzione e accettare un parametro di contesto.
I possibili membri dell'oggetto contesto finora sono: Mident, DialogResult, DialogDefinition, MailTemplate, ErrorDetails.
Esistono diversi casi d'uso in cui tale funzione può essere richiamata, ad esempio per verificare/arricchire i dati del dialogo add2db.
I ganci di dialogo Add2db e request per Mail possono essere configurati in erpcustom.cfg:
[WEB_CALLBACKS] BeforeShowModule= BeforeShowFunction= BeforeCommitModule= BeforeCommitFunction=
Tu
deve specificare il nome del file VBS/VBB in $CADENAS_SETUP\scripts\cadconnector\web
,
e il nome della funzione da chiamare.
Il gancio before show potrebbe modificare i dati/struttura del dialogo, ad esempio precompilando i valori o addirittura cambiando la definizione del dialogo, magari disattivando alcuni campi. Per farlo, è necessario accedere e modificare il membro DialogDefinition del parametro context. Per maggiori dettagli, consultare la documentazione VBS di 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
Il gancio before commit può controllare gli input dell'utente del dialogo tramite il membro DialogResult. Cercare prxWebDialogResult per i dettagli.
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
Esistono anche altre situazioni in cui è possibile visualizzare una WebDialog. Ad esempio, i callback OnExport in CadConnector (come PSOL) possono creare una WebDialog (prxWebDialog) e lasciare che 3df la visualizzi chiamando execute su di essa.
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