Аспекты

Аспекты - это гибкая возможность расширения функционала типов ECOS и сущностей.

Журнал аспектов доступен по адресу: /v2/admin?journalId=ecos-aspects&type=JOURNAL

Модель аспекта

id: String // Идентификатор аспекта
name: MLText // Имя аспекта (справочная информация)
prefix: String // Префикс аспекта. Будет добавляться перед идентификатором каждого атрибута, которые описаны в attributes и systemAttributes
configFormRef: EntityRef // Ссылка на форму, которую следует использовать для редактирования конфигурации аспекта в типе ECOS
attributes: List<AttributeDef> // Атрибуты аспекта, которые будут добавлены к сущностям с данным аспектом
systemAttributes: List<AttributeDef> // Системные атрибуты аспекта, которые будут добавлены к сущностям с данным аспектом. Системные атрибуты могут быть изменены только под пользователем system.

В конфигурации типа предусмотрено поле aspects, которое содержит список аспектов и их конфигурацию:

TypeDef
...
aspects: List<TypeAspectDef>
...

TypeAspectDef
ref: EntityRef // ссылка на аспект
config: ObjectData // конфигурация аспекта

API

Проверить наличие аспекта у сущности

await Citeck.Records.get('emodel/some-id@local-id').load('_aspects._has.aspectToTest?bool!')

где,

emodel/some-id@local-id - идентификатор сущности, у которой мы хотим проверить наличие аспекта

aspectToTest - идентификатор аспекта, наличие которого мы проверяем

Получить конфиг аспекта из сущности

await Citeck.Records.get('emodel/some-id@local-id').load('_type.aspectById.you-aspect-id.config')

Добавить аспект к сущности

Примечание

Добавление так же происходит автоматически, когда мы проставляем для сущности атрибут из аспекта

var rec = Citeck.Records.get('emodel/some-id@local-id');
rec.att('att_add__aspects', 'emodel/aspect@aspectToAdd');
await rec.save();

где,

emodel/some-id@local-id - идентификатор сущности, к которой мы хотим добавить аспект

aspectToAdd - идентификатор аспекта, который мы добавляем

Удаление аспекта

var rec = Citeck.Records.get('emodel/some-id@local-id');
rec.att('att_rem__aspects', 'emodel/aspect@aspectToRemove');
await rec.save();

где,

emodel/some-id@local-id - идентификатор сущности, у которой мы хотим удалить аспект

aspectToRemove - идентификатор аспекта, который мы удаляем.

Пользовательское описание работы с аспектами