Аспект расширяет функционал типа данных без изменения самого типа.
Для просмотра существующих аспектов и их редактирования создан журнал Аспекты (Раздел администратора - Модель - Аспекты):
В журнале администратору с каждой записью доступен стандартный набор действий:
- редактировать json-файл;
- редактировать свойства;
- скачать;
- удалить.
Форма создания нового аспекта состоит из 2 вкладок.
Вкладка "Основные":
п/п | Наименование | Описание |
---|---|---|
1 | Идентификатор | уникальный идентификатор аспекта |
2 | Префикс | Предназанчен, чтобы различать атрибуты из разных аспектов.
Префикс добавляется ко всем атрибутам аспекта по шаблону
{prefix}:{attribute.id} .Таким образом атрибуты могут быть доступны в формах, конфигах действий, мутации записей.
Если префикс отдельно не задан, то по умолчанию равен идентификатору.
|
3 | Название | локализованное наименование |
4 | Форма конфигурации | Функционал позволяет расширять конфигурацию типа, не меняя форму типа.
Форма может быть выбрана из ранее созданных или создана.
|
Вкладка "Атрибуты":
Атрибуты аспекта и системные атрибуты аспекта, которые будут добавлены к сущностям с данным аспектом.
п/п | Наименование | Описание | Пример заполнения |
---|---|---|---|
1 | Id | идентификатор поля, по которому оно будет доступно на форме, в журнале. | testAttribute (camelCase) |
2 | Имя | имя поля для отображения пользователю. | Тестовый атрибут |
3 | Тип | тип поля. :ref:`Поддерживаемые типы<ecos-model_types>` | выбирается из списка предлагаемых. По умолчанию выставляется text. |
4 | Множественный | множественный ввод разрешен | флаг |
5 | Обязательный | поле обязательно к заполнению | флаг |
6 | Вычисляемые атрибуты | функионал, позволяющий установить выражение-зависимость, позволяющий гибко создавать производные атрибуты :ref:`См. подробно<attribute_rights>` | настройка конфигурации в зависимости от типа и сложности вычисления атрибута |
В поле _aspects
как и при добавлении любого другого аспекта вносится информация об аспекте.
Note
Каждый аспект может быть добавлен как явно (во вкладке Аспекты), так и автоматически (см. ниже Учет времени)
Аспект "Связан с другим документом" создан для работы виджета "Связи документа" (добавение и отображение связей с сущностью ):
В поле assoc:associatedWith
вносится информация о связанных сущностях.
Аспект "Имеет штрихкод" создан для формирования штрихкода к документу:
В аспекте нет атрибутов, но есть форма настройки:
При выборе аспекта в типе данных можно настроить формат штрих-кода и атрибут, из которого брать данные для формирования штрих-кода (по умолчанию номер документа _docNum
).
Для реализацции сложной логики - необходимо создать :ref:`вычисляемый атрибут<count_attributes>`, и на основе него добавить аспект и далее брать настройку штрих-кода из атрибута.
Аспект "Учет времени" создан записи о потраченном времени по задаче:
В аспекте есть атрибут timeTracking
- запись о потраченном времени:
Отражается в виде дочерней ассоциации: time-trackable:timeTracking
:
При таком выборе атрибут аспекта является дочерней ассоциацией.
Следовательно, по сущности timeTracking
можно перейти к родителю. В атрибуте timeTracking
, соответственно, содержатся ссылки на все дочерние сущности.
Таким образом образуется двухсторонняя связь:
- от дочернего к родителю по системному атрибуту
_parent
,- от родителя к дочернему по настроенному атрибуту.
Если удаляется родитель, то удаляются дочерние сущности по всем ассоциациям.
Если заданы права по умолчанию, то дочерние наследуют права от родителей. Соответственно, просматривать timeTracking
могут все, у кого доступ к документу.
При создании timeTracking
- сущности доступны 2 атрибута, которые позволяют сделать связь с родителем:
_parent?str: "emodel/type@document" //Заявка, с которой мы связываем родителя. _parentAtt?str: "time-trackable:timeTracking" //Атрибут от родителя к дочерней сущности, куда его нужно добавить.