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

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

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

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

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

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

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

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

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

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

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

  • 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
}