Общее описание
В данном разделе описан порядок добавления атрибутов в диалогах создания сущностей ТЕЗИС. Сведения предназначены для администратора или разработчика, выполняющего настройку и сопровождение проекта.
В диалогах создания сущностей ТЕЗИС можно добавлять, изменять и удалять атрибуты. В таблице атрибутов доступны следующие действия:
-
добавление нового атрибута;
-
изменение ранее добавленного атрибута;
-
удаление атрибута.
Для каждого добавленного атрибута создаются или изменяются следующие элементы:
-
атрибуты, аннотации и методы
get/setв классе сущности; -
ключи локализации;
-
свойства в представлениях;
-
инверсные атрибуты для отношений типа «много»;
-
столбцы в таблицах экранов browse для атрибутов типа
datatypeи ссылок на сущности; -
поля в соответствующих контейнерах экранов edit для атрибутов типа
datatypeи ссылок на сущности; -
таблицы в экранах edit для атрибутов с отношением типа «много».
Диалог создания и изменения атрибута
Диалоговое окно отображается при добавлении или редактировании атрибута в диалогах создания карточки, документа, справочника, а также при добавлении атрибута к существующей сущности.
Параметры диалогового окна
Name — имя атрибута.
Требования:
-
поле обязательно для заполнения;
-
значение может содержать только буквы английского алфавита и цифры;
-
значение не должно совпадать с ключевыми словами Java;
-
значение не должно совпадать с именами уже добавленных или существующих атрибутов сущности;
-
значение не должно совпадать с именами атрибутов предков сущности, например
createTsизStandardEntityилиversionOfизDoc.
Localized name (ru, en) — локализованные названия атрибута.
Требования:
- поля обязательны для заполнения.
Required — признак обязательности атрибута. Если параметр установлен, значение атрибута должно быть задано.
Типы атрибутов
Для атрибута доступны три типа:
Simple attribute — атрибут типа Datatype.
Поле Type содержит список всех datatypes, указанных в конфигурационных файлах metadata.xml проекта и подключенных компонентов, с учетом переопределений.
Для отдельных типов отображаются дополнительные поля:
-
для
BigDecimal— Precision и Scale со значениями по умолчанию19и2; -
для
String— Length со значением по умолчанию50. Если указать значение0, будет создана строка без ограничения длины с аннотацией@Lob; -
для
Enumeration— поле Type со списком перечислений проекта и подключенных компонентов.
-
Entity reference
Entity reference— ссылка на сущность с отношениемMany_To_One.Поле Type содержит список сущностей проекта и подключенных компонентов. В список не включаются:
-
метаклассы с аннотацией
@MetaClass; -
встраиваемые сущности с аннотацией
@Embeddable; -
системные сущности с аннотацией
@SystemLevel; -
сущности без заданного имени;
-
переопределенные сущности, у потомков которых указана аннотация
@Extends.
-
-
Entity collection
Entity collection— ссылка на сущность с отношениемTo_Many.
Поле Type содержит список сущностей проекта, которые не являются вложениями, то есть наследниками Attachment, и карточками, то есть наследниками TsCard.
Поле Cardinality определяет тип отношения. Логика выбора зависит от наличия экранов выбранной сущности, зарегистрированных в меню.
В конфигурации меню проверяется наличие тегов item, в том числе во вложенных меню, с атрибутами id или screen, значение которых содержит имя выбранной сущности. Проверка выполняется с учетом того, что идентификаторы экранов должны формироваться по шаблону ${entityName}.${screenType}, например df$Bank.browse.
Если для сущности есть зарегистрированные экраны, пользователь может выбрать отношение ONE_TO_MANY или MANY_TO_MANY. Если зарегистрированные экраны отсутствуют, автоматически выбирается ONE_TO_MANY без возможности изменения.
Ключи локализации
Для каждого атрибута в пакеты локализации сущностей добавляется ключ следующего вида:
${className}.${attributeName}=${attributeLocName}
где:
-
className— имя класса сущности, указанное в поле Class name диалога создания сущности; -
attributeName— имя атрибута, указанное в поле Name диалога создания атрибута; -
attributeLocName— локализованное название атрибута, указанное в поле Localized name диалога создания атрибута.
Свойства в представлениях
Порядок добавления атрибутов в представления зависит от типа атрибута и вида представления.
Datatype и Enum
Атрибуты типов Datatype и Enum добавляются в представления, используемые в экранах browse и edit.
Если представление транзитивно наследуется от _local или _base, свойство атрибута в представление не добавляется. Если представление транзитивно наследуется от _minimal, свойство добавляется.
При этом не выполняется проверка, входит ли атрибут в NamePattern.
Entity reference
Атрибуты типа Entity reference добавляются в представления, используемые в экранах browse и edit, с представлением _minimal.
Entity collection
Атрибуты типа Entity collection добавляются только в представления, используемые в экранах edit.
Для сущности, указанной как тип атрибута, создается отдельное представление. С этим представлением атрибут включается в представление экрана edit.
Имя создаваемого представления формируется по шаблону:
${decapitalizedClassName}-${decapitalizedAttributeName}-${viewName}
где:
-
decapitalizedClassName— имя класса сущности, в которую добавляется атрибут-коллекция, с первой строчной буквой; -
decapitalizedAttributeName— имя атрибута с первой строчной буквой; -
viewName— имя представления, в которое добавляется атрибут.
Например, если для сущности с классом MyEntity создается представление edit, а в сущности есть атрибут-коллекция users типа User, будет создано представление:
myEntity-users-edit
Если в конфигурации представлений для сущности, выбранной как тип атрибута, существует представление browse, создаваемое представление наследуется от него. Если представление browse отсутствует, создаваемое представление наследуется от _local, и в него добавляются все атрибуты Entity reference, включая унаследованные, с представлением _minimal.
Инверсные атрибуты
Для атрибутов-коллекций создаются инверсные атрибуты:
-
MANY_TO_ONE— для атрибутовONE_TO_MANY; -
MANY_TO_MANY— для атрибутовMANY_TO_MANY.
Инверсные атрибуты добавляются в класс сущности и только в представление edit соответствующей сущности. В представление browse они не добавляются, чтобы не включаться в таблицы, создаваемые при добавлении атрибутов-коллекций.
Для инверсных атрибутов также создаются ключи локализации. Значения ключей соответствуют локализованному названию сущности.
Особенности добавления атриубтов в экраны
При добавлении атрибутов в экраны учитываются следующие особенности:
-
атрибуты типа
ByteArrayне добавляются в экраны; -
если добавляемый атрибут имеет аннотацию
@Lob, для соответствующей колонки таблицы добавляется атрибутsortable="false"; -
атрибуты-коллекции не добавляются в списочные экраны browse и lookup.



