Show/Hide Toolbars

Jim2® Business Engine Help File

scriptingengine

 

As this is an area that requires advanced skills, this Help File is not the appropriate place to explain this function in detail. Following is some basic information only. Contact support@happen.biz if further information is required.

 

Jim2 makes extensive use of scripting technology, providing unparalleled power to tailor to specific company and/or industry requirements.

 

As a default, the scripting engine is not available. This is to protect from potential issues with the database. This is also governed by Jim2 Security.

 

All information in this area is only relevant if on premises customers have permission to access the scripting engine. Scripts are written in DelphiScript (Pascal).

 

Scripts can easily be imported, and instantly become seamlessly integrated into Jim2.

 

Info

Note: The Scripting Engine is not accessible for Jim2.Cloud customers at any time.

 

The Scripting Engine opens in its own window, and appears as a second icon in the Windows task bar. When open, it also appears under switch windows located in the Jim2 Quick Access Toolbar.

 

scriptengswitch

 

The fully featured scripting engine supports:

Multiple script editing

Syntax highlighting

Editor code folding

Debugger break points

Editor bookmarks

Code completion (Shift+space within the code editor)

Code helper palette (available functions, variables, types, etc.)

Tool palette (form component selection, etc.)

Object inspector with properties and events editor

Form structure

Unit Code, Design and Info tabs

Debug panel with Local Variables, Watches and Call Stack

Report selection (allows execution of script against selected report within the scripting engine).

 

Library scripts

Library scripts are used for scripted Jim2 functions, such as the creation of ABA files, and for common code to be shared across multiple scripts. They can be included in scripts via the object Pascal Uses Unit syntax.

 

Server side scripting

The script and report run on the server, rather than locally on the Jim2 Client. The main advantage of this is, if a script can run server side, the associated report is available via Jim2 Mobile, including:

 

Script Name

Examples of related System Reports

Statement

CardFiles > CardFiles > Statement

Debtors > Debtors > Statement

Invoice

Invoices > Invoices > InvoiceSale

Invoices > Invoices > InvoiceSaleSimple

Invoices > Invoices > InvoiceService

Invoices > Invoices > InvoiceServiceSale

Job

Jobs > Jobs > Job Receipt

Jobs > Jobs > Job-Onsite

Job w/o Logo

Jobs > Jobs > Job

Jobs > Jobs > Manufacturing Job

Jobs > Jobs > Job No Comment

 

Separating user input from report generation

Typically, scripts are executed from the Jim2 Client by calling the script’s Run (DesignMode: boolean) procedure. When called from the report toolbar, DesignMode is false, and when called from within the Report Designer, DesignMode is true.

 

The scripting engine can be opened and used whilst still using the Jim2 Client. As such, scripts have direct access to the currently opened object (job, quote, etc.).

 

Server-side scripts require no user interaction, and have any report parameters (typically entered by the user via the script's associated form) passed to them via a JSON record.

 

A report that supports server side scripting is executed, calling the script’s RunServerSide (jsonstr : string) procedure. The variable jsonstr contains the report parameters. For example, the job script contains the following procedure:

 

procedure RunServerSide( jsonstr : string )

begin

DesignMode := False

ReportParams := JSON.Parse( jsonstr )

qJimJob := CreateComponent(self, ‘TFDQuery’)

qJimJob.Connection := DM.JimConnection

qJimJob.SQL.Text := ‘SELECT * FROM JimJob Where JobNo = ‘ + ReportParams.jobNo

qJimJob.Open()

if (qJimJob.EOF) then

raise Exception.Create( ‘JobNo ‘ + ReportParams.jobNo + ‘ does not exist’ )

RunReport()

end

 

Compiler directives

A script can, and should be coded to support both Client side and Server side execution, noting that some resources available Client side (for example, the actual form and its properties) are not available Server side.

 

To handle both sides, the scripting engine supports compiler directives to include/exclude Client side and Server side code as required.

 

For example the Statement script contains the following code that uses the SERVER_SCRIPTING compiler directive:

 

{$IFNDEF SERVER_SCRIPTING}

EmailSubject := ReportName + ‘ for’ + qCardFile.FieldByName(‘CardCode’).AsString + ‘ ‘ +

qCardFile.FieldByName(‘Name’).AsString +

‘ for Date ‘ + ReportVar1

EmailSubject := EmailSubject + ‘ from ‘ + CompanyName

{$ENDIF}

 

Further information

Event Scripts

Menu Scripts

Script Editor at a Glance

Scripting Engine

Import/Export Scripts

Scripting Security