Heapselect обычно используется для настройки представления списка и формы.

Еще один случай использования инструмента heapselect – редактирование динамических связанных списков на форме записи. Heapselect позволяет вам изменить набор записей, отображаемых в списке.

  1. Настройте URL-адрес heapselect.
  2. Создайте действие по URL с помощью URL-адреса heapselect или просто поделитесь URL с другим пользователями.

Когда пользователь переходит по ссылке, отображаемые записи всегда проверяются правилами контроля доступа (ACL).

Настройка URL-адреса heapselect


URL-адрес heapselect выполняет следующие действия с таблицей сущности:

  1. Сервер возвращает списки записей по их ID в двух окнах с помощью GET-параметров:
    1. В левом окне – записи, отфильтрованные по условию, доступны для ручного выбора пользователем.
    2. В правом окне – пользовательский внешний скрипт возвращает определенные записи таблицы по их ID.
  2. (Опционально) заголовок и отображаемое значение можно настроить.
  3. После нажатия Сохранить внешний скрипт применяется ко всем выбранным записям.

Чтобы настроить 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-параметрОписание
essenceCистемное название исходной таблицы.
condition

Cтрочные условия для фильтрации записей таблицы, используя операторы условий.

Вы можете просто применить нужный фильтр или настройки конструктора условий к таблице в форме списка, затем скопировать тело условия из URL-адреса браузера и использовать его в качестве условия heapselect. Узнайте больше о том, как работают фильтры.

select_ids_script_idПользовательский внешний скрипт, который возвращает список ID записей таблицы сущности в качестве результатов поиска. При применении этого скрипта heapselect добавляет записи таблицы с возвращением ID в правое окно Выбрано формы.
script_idПользовательский внешний скрипт, который применяется к записям таблицы essence, содержащимся в правом окне Выбрано.
display_valueНаименование колонки, которое будет отображаться как наименования записей в форме heapselect.
titleСтрочный заголовок формы heapselect. По умолчанию отображается заголовок Select Items.
parent_idID записи, на которую будет воздействовать примененное действие.
parent_tableID таблицы, на которую будет воздействовать примененное действие.
field_nameЗначение для определенного поля.
form_viewПредставление формы или списка. Все пользователи переключаются на указанный вид независимо от их предпочтений.

Использование heapselect


После настройки URL-адреса heapselect используйте опции heapselect, выполнив следующие действия:

  1. Используйте URL-адрес, чтобы войти в форму и выбрать нужные записи. Окно Доступно для выбора содержит все поля таблицы, кроме выбранных. Записи из окна Выбрано выбираются для дальнейшего применения скрипта. Перемещайте элементы, перетаскивая их и используя кнопки  и .

    • Чтобы удалить или добавить все поля, нажмите на кнопку  или .
    • Чтобы переместить несколько элементов подряд, выберите их с нажатой кнопкой Shift и перетащите из поля Доступно для выбора в поле Выбрано.
    • Чтобы переместить сразу несколько разбросанных элементов, выберите их с нажатой кнопкой Ctrl и перетащите из поля Доступно для выбора в поле Выбрано.


  2. Нажмите Сохранить, чтобы применить скрипт heapselect к записям в окне Выбрано.

Пример использования


Кейс:

Добавьте связанный список Конфигурационные единицы в запись таблицы Сотрудники, где условием выбора является Расположение равно {расположение текущего пользователя}.

Чтобы настроить связанные списки с heapselect, выполните следующие шаги:

  1. Создайте связанный список, используя инструмент динамических связанных списков. В нашем случае – это CI my Location.

    Scripted Related List example
    if(Boolean(parent.sys_id)){
      current.addQuery('location', parent.location.sys_id);
    }
  2. Создайте внешний скрипт. В нашем случае – это 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. Создайте действие пользовательского интерфейса к созданному связанному списку со следующими настройками:

    ПолеЗначение
    Таблица

    Таблица, которая отображается в связанном списке.

    Условия и действия
    На новой записиtrue
    На существующей записиtrue
    URL

    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

В результате на форме записи Сотрудника появляется редактируемый связанный список. Пользователь может добавлять или удалять записи из списка конфигурационных единиц, которые имеют то же расположение, что и сотрудник. 

  • No labels