Versions Compared
Key
- This line was added.
- This line was removed.
- Formatting was changed.
Script
...
Includes are used to store JavaScript functions and classes that will execute on the server. Script
...
Includes generally
...
specify either an object class or a function.
...
Tip |
---|
Role required: admin. |
...
Creating a script include
...
A script include has a name, a description, and a script itself. Also, it is possible to specify
...
options active or client-callable.
...
To create a new script include, please complete the following steps:
- Navigate
...
- to System Settings → ScriptIncludes.
- Click New and fill in the fields.
- Click Save or Save and Exit to apply changes.
...
Script Include form fields
Field | Mandatory | Description |
---|---|---|
Name | Y | Script include name. |
...
Should match with the class name declared in the script field. Also, script include name should be unique and can not contain spaces. | ||
Description | N | Short action description. |
Active |
...
Select this checkbox to activate this script. When selected, the script will execute when called; otherwise, it will not execute. | |
Client |
...
Callable | Select this checkbox to make this script available to call on the client-side scripts. | ||||||||||||
Disable ACL Check | Select this checkbox to let this script include do go through an ACL check when executed within Client Scripts. | ||||||||||||
Script | Y | Define the server-side script to run when called from other scripts.
|
...
Practical case
You can
...
use client callable script includes in case
...
you need to use server-side methods on the client-side. For more clarity, let us consider two simple examples of calling a script include from:
- a client-side
- a server-side
...
Using client callable script include on forms
A practical case is a calculation of the time period between two specified values using a specific schedule.
For this, let us create script include with parameters like shown below:
Name | DurationCalculator | |||||||
---|---|---|---|---|---|---|---|---|
Active | true | |||||||
Client Callable | true | |||||||
Script | Enter a script from the code example below:
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
On the client-side, we use SimpleAjax:
- Create a SimpleAjax instance.
- Transfer the called method name using the reserved parameter sysparm_name.
- Transfer values from a form using the sysparm_start, sysparm_end, sysparm_schedule parameters.
- Call an include script using the getXML(callback) method.
- Process its response in the callback-function listed below.
- The answer variable will contain value return by the getDuration() method.
Code Block | |||||
---|---|---|---|---|---|
|
...
|
...
if (s_form.getValue('start') && |
...
s_form.getValue('end') && |
...
s_form.getValue('schedule_id')) { |
...
const calculate = |
...
new SimpleAjax('DurationCalculator'); |
...
// call script include |
...
calculate.addParam('sysparm_name', |
...
'getDuration'); // call method |
...
calculate.addParam('sysparm_start', s_form.getValue('start')); // pass param |
...
calculate.addParam('sysparm_end', s_form.getValue('end')); // pass param |
...
calculate.addParam('sysparm_schedule', s_form.getValue('schedule_id')); // pass param |
...
calculate.getXML(callback); |
...
function callback(response) { // value received from server-side const answer = response.responseXML.documentElement.getAttribute('answer'); s_form.setValue('duration', answer); } } |
Using client callable script include on lists
Another example is the calculation of list items after filtering.
For this, let us create script include with parameters like shown below:
Name | getListItemsCount | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Active | true | |||||||||||||
Client Callable | true | |||||||||||||
Script | Enter a script from the code example below:
|
The client-side code will be the following:
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
const queryString = window.location.search; const urlParams = new URLSearchParams(queryString); const sAjax = new SimpleAjax('getListItemsCount'); // initialize script include sAjax.addParam('sysparm_name', 'getCount'); // call method sAjax.addParam('sysparm_table_name', s_list.getTablesName()[0]); // pass param sAjax.addParam('sysparm_condition_query', urlParams.get('condition') || '()'); // pass param sAjax.getXML(callback); function callback(response) { // value received from server-side |
...
const answer = response.responseXML.documentElement.getAttribute('answer');
s_list.clearMessages();
s_list.addInfoMessage(`List items count: ${answer}`, 2000);
} |
Table of Contents | ||||
---|---|---|---|---|
|