Skip to main content
Version: 1.23.3

Heapselect

Heapselect is commonly used for the list and form layout configuration.

Another case of using the heapselect tool is editing synthetically related lists on a record form. The heapselect allows you to change the set of records displayed in the list.

tip

The best practice:

  1. Configure the heapselect URL.
  2. Create a URL Action using the heapselect URL or simply share the URL with other users.

When the user follows the link, the records displayed are always checked by the ACLs.

Heapselect URL configuration


How the heapselect works

The heapselect URL performs the following actions to the entity table:

  1. The server returns lists of records by their sys_id in two boxes using GET-parameters:
    1. In the left box – records filtered by the condition are available for the manual selection by a user.
    2. In the right box – the custom script include (select_ids_script_id) returns specific table records by their sys_id.
  2. (Optional) The title and the column value (display_value) displayed may be configured.
  3. When clicking Save, the script_id script include applies to all the record selected.

To configure the heapselect URL, use the GET-parameters and the view below:

<your_instance_URL>/<page_name>/<table_name>?condition=<conditional_expression>
&selected_ids_script_id=<script_returning_sys_ids>
&script_id=<script_applied>
&display_value=<column_name>
&title=<some_text>
&field_name=<field_value>
&form_view=<form_view_name>

GET-parameters description

GET parameterDescription
essenceThe system name of the source table.
condition

String conditions for table records filtering using the system condition operators and encoded URL characters.

You can also apply the desired filter or the condition builder settings to the table in a list form, then copy the condition body from the browser URL and use it as the heapselect condition. Learn more about how the filter works.

select_ids_script_idThe custom Script Include that returns the list of the entity table records IDs (sys_id) as operation results. When applying this script, the heapselect adds table records with the returned sys_id in the Selected box of the form.
script_idThe Script Include that is applied to the entity table records contained in the Selected box of the form.
display_valueThe name of a column to be displayed as record names in the heapselect form.
titleThe string title of the heapselect form. By default, the Select Items title displayed.
parent_idThe ID of the record that will be affected by the action applied.
parent_tableThe ID of the table that will be affected by the action applied.
field_nameA value to a specific field.
form_viewThe view of the form or a list. All users will switch to the defined view regardless of their preferred view.

Heapselect usage


After the heapselect URL is configured, use the heapselect options by following the steps below:

  1. Use the URL to enter the form and select the desired records. The Available box contains all the table fields, excluding the selected ones. The records of the Selected box are selected for further script applying. Move elements by dragging them or using the and buttons.
    • To remove or add all the fields, click the or button.
    • To move several elements in a row, select them with the Shift key pressed and drag them from the Available box to the Selected one.
    • To move several scattered elements at once, select them with the Ctrl key pressed and drag them from the Available box to the Selected one.
  2. Click Save to apply the heapselect script to the records of the Selected box.

Use case


Case:

Add a related Configuration Item list to an Employee (employee) table record, where the selection condition is Location is {current user Location}.

To configure the Related Lists with heapselect, complete the following steps:

  1. Create a related list using the Scripted Related Lists tool. In this case, it is CI my Location.

    Scripted Related List example

    if(Boolean(parent.sys_id)){
    current.addQuery('location', parent.location.sys_id);
    }
  2. Create a script include. In this case, it is heapSelectExecute.

    heapSelectExecute example

    setResult(heapSelectExecute(essence, selectedIds));

    function heapSelectExecute(essence, selectedIds) {
    let selectedElements = [];
    let record = new SimpleRecord(essence);
    record.addQuery('sys_id', 'IN', selectedIds);
    record.query();
    record.setMultipleValue('location', parent.location.sys_id);
    record.updateMultiple();
    }
  3. Add a UI action to the created related list with the following settings:

    FieldValue
    TableThe table displayed in this related list.

    Conditions and Actions

    FieldValue
    Show inserttrue
    Show updatetrue
    URL

    Heapselect URL with all the necessary parameters. See the Heapselect URL configuration section of this article to learn more.

    /heap-select/sys_cmdb_ci?condition=(ci_status!=1)&select_ids_script_id=158764810812561263&script_id=158764868812483099&display_value=number&title=Edit CI Location

    Position and Style

    FieldValue
    Use forRelated Lists
    Scripted listtrue
    Header lefttrue

As a result, there is an editable related list on the Employee record form. A user can add or remove records from the list of configuration items that have the same location as the employee.