Ошибка 414 Request-URI Too Large при попытке ввести значение в ссылочное поле Reference/List

:speech_balloon: Description
Ошибка связана с превышением максимальной длины URL для запроса. Для ссылочного поля настроен динамический ограничитель (условие формируется скриптом). Формат значения ID is one of arrayOfIds.
При большом числе элементов в массиве arrayOfIds, адрес с условием превышает ограничение длины URL. Указать значение в ссылочном поле через окно dictionary или autosuggest невозможно.


:heavy_check_mark: Workaround

В качестве решения необходимо:

  1. Вынести скрипт расчета массива ID во внешний скрипт (Script Include). Рассмотрим для примера скрипт, который возвращает массив ID пользователей с ролью ITSM_agent. Название скрипта - get_ITSM_agents.
    Значение в поле Script:
function get_ITSM_agents() {
    const userRole = new SimpleRecord('sys_user_has_role');
    userRole.addQuery('role_id', '156951063014647724'); // ITSM_agent role id
    userRole.selectAttributes('user_id');
    userRole.query();
    let ITSM_agentIds = [];
    while (userRole.next()) {
        ITSM_agentIds.push(userRole.getValue('user_id'));
    }
    return ITSM_agentIds;
}
  1. Заменить формат условия в скрипте динамического фильтра. Скрипт фильтра должен возвращать JS-инъекцию с вызовом внешнего скрипта get_ITSM_agents:
(function executeDynamicScript(current = null /*null for scripts used in filters*/) {
    return "(sys_idINjavascript: { ss.importIncludeScript('get_ITSM_agents'); return get_ITSM_agents()})"
})(current)