Skip to content

Latest commit

 

History

History
333 lines (229 loc) · 13.3 KB

Aspects.rst

File metadata and controls

333 lines (229 loc) · 13.3 KB

Аспекты

Аспект расширяет функционал типа данных без изменения самого типа.

Для просмотра существующих аспектов и их редактирования создан журнал Аспекты (Раздел администратора - Модель - Аспекты):

image

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

  • редактировать json-файл;
  • редактировать свойства;
  • скачать;
  • удалить.

См. больше информации о разработке<aspects>

Создание нового аспекта

Форма создания нового аспекта состоит из 2 вкладок.

Вкладка "Основные":

image

п/п Наименование Описание
1 Идентификатор уникальный идентификатор аспекта
2 Префикс
Предназанчен, чтобы различать атрибуты из разных аспектов.
Префикс добавляется ко всем атрибутам аспекта по шаблону {prefix}:{attribute.id}.
Таким образом атрибуты могут быть доступны в формах, конфигах действий, мутации записей.
Если префикс отдельно не задан, то по умолчанию равен идентификатору.
3 Название локализованное наименование
4 Форма конфигурации
Функционал позволяет расширять конфигурацию типа, не меняя форму типа.
Форма может быть выбрана из ранее созданных или создана.

Вкладка "Атрибуты":

image

Атрибуты аспекта и системные атрибуты аспекта, которые будут добавлены к сущностям с данным аспектом.

п/п Наименование Описание Пример заполнения
1 Id идентификатор поля, по которому оно будет доступно на форме, в журнале. testAttribute (camelCase)
2 Имя имя поля для отображения пользователю. Тестовый атрибут
3 Тип тип поля. Поддерживаемые типы<ecos-model_types> выбирается из списка предлагаемых. По умолчанию выставляется text.
4 Множественный множественный ввод разрешен флаг
5 Обязательный поле обязательно к заполнению флаг
6 Вычисляемые атрибуты функионал, позволяющий установить выражение-зависимость, позволяющий гибко создавать производные атрибуты См. подробно<attribute_rights> настройка конфигурации в зависимости от типа и сложности вычисления атрибута

В поле _aspects как и при добавлении любого другого аспекта вносится информация об аспекте.

image

Note

Каждый аспект может быть добавлен как явно (во вкладке Аспекты), так и автоматически (см. ниже Учет времени)

Примеры

Связан с другим документом

Аспект "Связан с другим документом" создан для работы виджета "Связи документа" (добавение и отображение связей с сущностью ):

image

В поле assoc:associatedWith вносится информация о связанных сущностях.

image

Имеет штрихкод

Аспект "Имеет штрихкод" создан для формирования штрихкода к документу:

image

В аспекте нет атрибутов, но есть форма настройки:

image

При выборе аспекта в типе данных можно настроить формат штрих-кода и атрибут, из которого брать данные для формирования штрих-кода (по умолчанию номер документа _docNum).

Для реализацции сложной логики - необходимо создать вычисляемый атрибут<count_attributes>, и на основе него добавить аспект и далее брать настройку штрих-кода из атрибута.

Учет времени

Аспект "Учет времени" создает записи о потраченном времени по задаче:

image

В аспекте есть атрибут timeTracking - запись о потраченном времени:

image

Отражается в виде дочерней ассоциации: time-trackable:timeTracking:

image

При таком выборе атрибут аспекта является дочерней ассоциацией.

Следовательно, по сущности timeTracking можно перейти к родителю. В атрибуте timeTracking, соответственно, содержатся ссылки на все дочерние сущности.

Таким образом образуется двухсторонняя связь:

  • от дочернего к родителю по системному атрибуту _parent,
  • от родителя к дочернему по настроенному атрибуту.

Если удаляется родитель, то удаляются дочерние сущности по всем ассоциациям.

Если заданы права по умолчанию, то дочерние наследуют права от родителей. Соответственно, просматривать timeTracking могут все, у кого доступ к документу.

При создании timeTracking- сущности доступны 2 атрибута, которые позволяют сделать связь с родителем:

_parent?str: "emodel/type@document"  //Заявка, с которой мы связываем родителя.
_parentAtt?str: "time-trackable:timeTracking"  //Атрибут от родителя к дочерней сущности, куда его нужно добавить.

Конфигурация истории

Аспект «Конфигурация истории» создан для возможности конфигурации записи свойств в историю.

image

image

Для настройки необходимо добавить этот аспект в тип данных на вкладке Аспекты:

image

Исключенные атрибуты

По кнопке Настроить в строке Исключенные атрибуты доступен выбор атрибутов типа данных, информация об изменении которых не будет записываться в историю, и отражаться в виджете «История событий», соответственно.

image

image

Например, если в карточке изменить информацию о наименовании, категории и стоимости, то в виджете «История событий» отразится информация только об измененной стоимости:

image

Если в типе данных настроены аспекты (например, Версионные данные, Имеет документы), то атрибуты из них так же можно выбрать:

image

image

Атрибуты для записи истории при создании

По кнопке Настроить в строке Атрибуты для записи истории при создании доступен выбор атрибутов типа данных, информация о создании которых будет записываться в историю, и отражаться в виджете «История событий», соответственно.

image

image

Например:

image

Так же можно вносить атрибуты непосредственно в json:

  • excludedAtts - исключенные атрибуты;
  • onCreationHistoricalAtts - атрибуты для записи истории при создании

image

image

Отключить историю

image

При выставленном чекбоксе Отключить историю при изменении никакие данные не будут записываться в историю, и отражаться в виджете «История событий», соответственно.