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