# Действия

Действия позволяют вам задать дополнительную логику, которая будет исполняться при создании или изменении объектов или их зависимостей.

Создание действий требует навыков программирования, так как действия написаны на языке Javacript.

# Редактирование действий

Вы можете создать, изменить или удалить действие зайдя в настройки системы и выбрав меню Действия

Вам будут доступны следующие настройки:

  • Идентификатор - это, текст по которому в дальнейшем вы сможете обращаться к этому действию, он должен быть на английском языке и не должен содержать пробелов.

  • Наименование - название действия.

  • Исходный код - код на языке Javascript, который и будет исполняться

Действие запускается по некоторому событию, называемому триггером. Система поддерживает следующие события:

  1. Изменение или создание объекта

Вам необходимо выбрать, когда действие будет вызвано и для какого объекта.

  1. Изменение или создание зависимости между объектами

Вам необходимо выбрать, когда действие будет вызвано и для какого типа зависимостей.

  1. По нажатию кнопки. Система покажет дополнительную кнопку в интерфейсе объекта и действие будет вызвано если пользователь нажмет на нее.

Вам необходимо выбрать, название кнопки и для какого объекта ее показывать.

# Исходный код действия

Вы можете написать любую логику в действии, например:

Вам доступны следующие объекты внутри вашего кода:

  • item - это javascript объект который представляет из себя текущее состояние объекта системы, он имеет следующие свойства:

    • item.identifier - Идентификатор объекта.
    • item.id - внутренний идентификатор объекта
    • item.typeIdentifier - Идентификатор типа объекта.
    • item.typeId - Внутненний идентификатор типа объекта.
    • item.parentIdentifier - Идентификатор родительского объекта.
    • item.name - Это название объекта. Для каждого языка - свое название: item.name.ru - для русского языка, item.name.en - для английского и т.д.
    • item.createdAt - время создания объекта
    • item.createdBy - кто создал объект
    • item.updatedAt - время последней модификации объекта
    • item.updatedBy - кто последний модифицировал объект
    • item.values - текущие значения атрибутов объекта. Значение каждого атрибута хранится в свойстве с наименованием как идентификатор атрибута. То есть, если у нас есть атрибут color то его значение будет в item.values.color
  • values - новые значения атрибутов объекта. Значение каждого атрибута хранится в свойстве с наименованием как идентификатор атрибута. То есть, если у нас есть атрибут color то его значение будет в values.color

  • models.item - объект javascript который позволяет работать с базой данных для объектов

  • models.itemRelation - объект javascript который позволяет работать с базой данных для зависимостей

  • isImport - true если изменение происходит при импорте данных, false если изменение вызвано через интерфейс системы