Heapselect
Heapselect обычно используется для настройки представления списка и формы.
Еще один случай использования инструмента heapselect – редактирование синтетических связанных списков на форме записи. Heapselect позволяет вам изменить набор записей, отображаемых в списке.
- Настройте URL-адрес heapselect.
- Создайте действие URL с помощью URL-адреса heapselect или просто поделитесь URL с другим пользователями.
Когда пользователь переходит по ссылке, отображаемые записи всегда проверяются правилами контроля доступа (ACL).
Настройка URL-адреса heapselect
Как работает heapselect
URL-адрес heapselect выполняет следующие действия с таблицей сущности:
-
Сервер возвращает списки записей по их ID в двух окнах с помощью GET-параметров:
- В левом окне – записи, отфильтрованные по условию, доступны для ручного выбора пользователем.
- В правом окне – пользовательский внешний скрипт возвращает определенные записи таблицы по их ID.
-
(опционально) Заголовок и отображаемое значение можно настроить.
-
После нажатия Сохранить внешний скрипт применяется ко всем выбранным записям.
Чтобы настроить URL heapselect, используйте GET-параметры и представление ниже:
<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-параметров
GET параметр | Описание |
---|---|
essence | Cистемное название исходной таблицы. |
condition | Cтрочные условия для фильтрации записей таблицы, используя операторы условий и закодированные символы URL. Вы можете просто применить нужный фильтр или настройки конструктора условий к таблице в форме списка, затем скопировать тело условия из URL-адреса браузера и использовать его в качестве условия heapselect. Узнайте больше о том, как работает фильтр. |
select_ids_script_id | Пользовательский внешний скрипт, который возвращает список ID записей таблицы сущности в качестве результатов поиска. При применении этого скрипта heapselect добавляет записи таблицы с возвращением ID в правое окно Выбрано формы. |
script_id | Пользовательский внешний скрипт, который применяется к записям таблицы essence, содержащимся в правом окне Выбрано. |
display_value | Наименование колонки, которое будет отображаться как наименования записей в форме heapselect. |
title | Строчный заголовок формы heapselect. По умолчанию отображается заголовок Select Items. |
parent_id | ID записи, на которую будет воздействовать примененное действие. |
parent_table | ID таблицы, на которую будет воздействовать примененное действие. |
field_name | Значение для определенного поля. |
form_view | Представление формы или списка. Все пользователи переключаются на указанный вид независимо от их предпочтений. |
Использование heapselect
После настройки URL-адреса heapselect используйте опции heapselect, выполнив следующие действия:
- Используйте URL-адрес, чтобы войти в форму и выбрать нужные записи. Окно Доступно для выбора содержит все поля таблицы, кроме выбранных. Записи из окна Выбрано выбираются для дальнейшего применения скрипта. Перемещайте элементы, перетаскивая их и используя кнопки и .
- Чтобы удалить или добавить все поля, нажмите на кнопку или .
- Чтобы переместить несколько элементов подряд, выберите их с нажатой кнопкой Shift и перетащите из поля Доступно для выбора в поле Выбрано.
- Чтобы переместить сразу несколько разбросанных элементов, выберите их с нажатой кнопкой Ctrl и перетащите из поля Доступно для выбора в поле Выбрано.
- Нажмите Сохранить, чтобы применить скрипт heapselect к записям в окне Выбрано.
Пример использования
Кейс:
Добавьте связанный список Конфигурационные единицы в запись таблицы Сотрудники, где условием выбора является Расположение равно {расположение текущего пользователя}.
Чтобы настроить связанные списки с heapselect, выполните следующие шаги:
-
Создайте динамический связанный список. В этом случае – КЕ моего расположения.
Пример динамического связанного списка
if(Boolean(parent.sys_id)){
current.addQuery('location', parent.location.sys_id);
} -
Создайте внешний скрипт. В этом случае – это
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();
} -
Создайте действие пользовательского интерфейса к созданному связанному списку со следующими настройками:
Поле Значение Таблица Таблица, которая отображается в связанном списке. Условия и действия
Поле Значение На новой записи true На существующей записи true URL URL heapselect со всеми необходимыми параметрами. Дополнительные сведения см. в разделе настройки URL heapselect.
/heap-select/sys_cmdb_ci?condition=(ci_status!=1)&select_ids_script_id=158764810812561263&script_id=158764868812483099&display_value=number&title=Edit CI Location
Позиция и стиль
Поле Значение Использовать для Связанных списков Синтетический список true Вверху слева true
В результате на форме записи сотрудника появляется редактируемый связанный список. Пользователь может добавлять или удалять записи из списка конфигурационных единиц, которые имеют то же расположение, что и сотрудник.