Description
Ошибка связана с превышением максимальной длины URL для запроса. Для ссылочного поля настроен динамический ограничитель (условие формируется скриптом). Формат значения ID is one of arrayOfIds.
При большом числе элементов в массиве arrayOfIds, адрес с условием превышает ограничение длины URL. Указать значение в ссылочном поле через окно dictionary или autosuggest невозможно.
Workaround
В качестве решения необходимо:
- Вынести скрипт расчета массива 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;
}
- Заменить формат условия в скрипте динамического фильтра. Скрипт фильтра должен возвращать 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)