6.3.4. Codice eseguito localmente in CADconnector (VBS)

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.

Esempio

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.

Esempio

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.

Esempio

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