Скрипт фильтрации статусов

Описание скрипта

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

Место настройки скрипта

Форма редактирования атрибута "Статус", см. Настройка атрибутов класса и типа объектов.

Когда выполняется скрипт

При открытии формы смены статуса.

Результат выполнения скрипта

Возвращает список кодов статусов, в которые будет возможен переход.

Переменные и их значения

Глобальные переменные:

  • user — пользователь, инициализировавший событие. Является объектом класса "Сотрудник" (employee).

    Если событие инициализировал суперпользователь, то user=null.

    Если событие инициализировано скриптом (скриптовое действие по событию, скрипт на вход в статус), то переменная user берется из контекста инициировавшего его скрипта.

    Пример: пользователь выполнил изменение атрибута → произошло изменение статуса объекта (действие по событию) → произошло изменение ответственного (действие на вход в статус) → произошло оповещение (действие по событию) .Во всех скриптах этой цепочки переменная user должна содержать сотрудника, выполнившего первоначальное изменение атрибута.

  • ip — ip-адрес рабочего места пользователя user. Если действие выполняется автоматически системой (а не пользователем), то переменная не определяется.
  • appVersion — версия приложения.
  • api — используется для обращения к методам api, например api.utils, api.ldap, api.timing, см. Методы API;
  • modules — используется для обращения к скриптовому модулю и конкретному методу, определенному в нем, с помощью конструкции: modules.{код модуля}.{имя метода}({параметры метода}...), см. Скрипт текста модуля;
  • logger — используется для отладки скриптов и позволяет вывести в лог на указанный уровень переданную строку, см. Оформление и отладка скриптов.
  • utils — синоним api.utils.

Переменные контекста:

  • subject — владелец атрибута. Переменная может использоваться во всех скриптах фильтрации, включая скрипты на форме добавления (subject не null). Если скрипт используется на форме добавления, то в переменной subject содержится только набор определяющих фильтрацию атрибутов.
  • possibleStates — список кодов статусов, в которые возможен переход из текущего статуса объекта согласно матрице переходов. Набор статусов, на который накладывается фильтр, формируется из статусов, разрешенных для перехода из текущего согласно матрице переходов.
  • cardObject — объект, из карточки которого было инициировано действие.

    Если действие инициировано НЕ из карточки объекта, то cardObject = null.

Особенности скрипта

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

Рекомендации

Для получения FQN класса (типа) объекта рекомендуется использовать метод .getMetainfo(). Для сравнения его со строкой необходимо выполнить явное преобразование с помощью метода .toString().

Примеры скрипта

1. Скрипт возвращает все возможные статусы, если список категорий запроса не пуст, иначе возвращает пустой список статусов:

// если subject null,
// необходимо вернуть список кодов определяющих атрибутов на форме
if(null == subject)
{
return ['categories']
}
if(!initialValues.categories.isEmpty())
{
return possibleStates
}

2. Скрипт возвращает все возможные статусы, кроме статуса resolved:

if(null == subject)
{
return ['attrCode']
}
else
{
def states = [].plus(possibleStates)
states.remove('resolved')
return states
}