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

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

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

Вам необходимо выбрать, когда действие будет вызвано и для какого типа зависимостей.
- По нажатию кнопки. Система покажет дополнительную кнопку в интерфейсе объекта и действие будет вызвано если пользователь нажмет на нее.

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

Вам доступны следующие объекты внутри вашего кода:
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 если изменение вызвано через интерфейс системы