Открыть меню
Toggle preferences menu
Открыть персональное меню
Вы не представились системе
Your IP address will be publicly visible if you make any edits.

Хранение данных. Классы: различия между версиями

Материал из Платформа Эра. Документации
 
(не показано 29 промежуточных версий этого же участника)
Строка 3: Строка 3:
= Общая информация =
= Общая информация =
[[Файл:Раздел Classes.png|мини|Раздел Classes приложения Builder]]
[[Файл:Раздел Classes.png|мини|Раздел Classes приложения Builder]]
Классы являются основой всех систем и приложений, разрабатываемых на платформе Эра. Набор классов в пакетее реализует структуру данных, с которой взаимодействуют остальные элементы пакета.
Классы являются основой всех систем и приложений, разрабатываемых на платформе Эра. Набор классов в пакете реализует структуру данных, с которой взаимодействуют остальные элементы пакета.  
Каждый класс определяется набором параметров, полей и действий. Параметры класса определяют его наименование, <u>поведение</u>, способ хранения данных, структуру наследования и т.д. Обзор параметров класса будет произведен ниже в данной статье.   
 
Каждый класс определяется набором параметров, свойств (полей) и действий. Параметры класса определяют его наименование, <u>поведение</u>, способ хранения данных, структуру наследования и т.д. Обзор параметров класса будет произведен ниже в данной статье
 
Для создания и изменения параметров классов, необходимо использовать приложение Builder, раздел Classes.   


Набор полей определяет <u>структуру</u> данных класса, а также формирует связь объектов этого класса с другими классами (в рамках всех пакетов системы).   
Набор полей определяет <u>структуру</u> данных класса, а также формирует связь объектов этого класса с другими классами (в рамках всех пакетов системы).   
Строка 13: Строка 16:


* entity - сущность, объект для хранение данных
* entity - сущность, объект для хранение данных
* object -
* interface - интерфейс для взаимодействия других классов (не хранит данные, только определяет структуру)
* interface - интерфейс для взаимодействия других классов (не хранит данные, только определяет структуру).
* object - аналог интерфейса, для которого также не создается хранилище, однако создаются обертки при генерации кода. Позволяет реализовать, например, "интерфейс" с расчитываемыми полями


Классы могут наследовать поля и действия от других, родительских классов.
Классы могут наследовать поля и действия от других, родительских классов.


Для каждого класса, после активации пакета создается <u>хранилище</u>, соответствующее настройкам класса.
Для каждого нового класса, при активации пакета совершается следующий набор действий: 
 
* создается <u>хранилище</u>, соответствующее настройкам класса
* создается два '''control'а''' (элемент управления) по-умолчанию, для визуализации данных класса в табличном виде и в виде карточки редактирования
* генерируется исходный код работы с классом. Блоки кода, включенные в параметры класса сохраняются


Хранилище может размещаться в оперативной памяти, в распределенной объектной БД, в реляционной БД Postgres (с партициями для исторических данных и без), в брокере Kafka, а также сохранять данные в аналитической колоночной БД Clickhouse.   
Хранилище может размещаться в оперативной памяти, в распределенной объектной БД (mnesia), в реляционной БД Postgres (с партициями для исторических данных и без), в брокере Kafka, а также сохранять данные в аналитической колоночной БД Clickhouse.   


Класс может быть абстрактным (abstract), или интерфейсом (interface) в этом случае, для него не генерируются хранилище. Данные вариации классов не хранят в себе данные, и используются для взаимодействия между другими классами и описания структур данных.   
Класс может быть абстрактным (abstract), или интерфейсом (interface) в этом случае, для него не генерируются хранилище. Данные вариации классов не хранят в себе данные, и используются для наследования, взаимодействия между другими классами и описания структур данных.   
    
    
= Параметры класса =
= Параметры класса =
[[Файл:Параметры класса.png|мини|Окно редактирования параметров класса]]У класса достаточно большой набор настраиваемых параметров. Для удобства, рассмотрим их в порядке группировки в окне редактирования.
[[Файл:Параметры класса.png|мини|Окно редактирования параметров класса]]У класса достаточно большой набор настраиваемых параметров. Для удобства, рассмотрим их в порядке группировки в окне редактирования.


Все настройки разделены по вкладкам в окне редактирования:


* Common - общие настройки класса
* Properties - свойства класса. Данная вкладка будет детально рассмотрена в следующей статье
* Actions - действия класса. Данная вкладка будет детально рассмотрена в следующей статье
* Security - параметры, задающие правила доступа к данным класса
* UI - параметры, влияющие на визуализацию класса в интерфейсе
* Help - информация для использования в справке и подсказках<br />
=== Вкладка Common ===
Основная вкладка, содержащая ключевые параметры работы класса.[[Файл:Блок Name and Location.png|мини|Блок Name and Location]]


[[Файл:Блок Name and Location.png|мини|Блок Name and Location]]
=== Name and Location ===




==== Name and Location ====


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


При создании классов, в целях единообразия, технической красоты и удобства сопровождения, выработаны следующие соглашения по наименованию:


* name: uppercase (Ticket, CurrentConnection, ArchiveConnection)
* multiName: uppercase (Tickets, CurrentConnections, ArchiveConnections)
* class folders: lowercase with slash (connections, acd/core, tickets/catalogs)


{| class="wikitable"
 
{| class="wikitable mw-collapsible"
|+Параметры класса
|+Параметры класса
!Название параметра
!Название параметра
Строка 75: Строка 96:
|Заголовок класса, используется для отображения данных пользователю (напр., при отображении реестра данных класса)
|Заголовок класса, используется для отображения данных пользователю (напр., при отображении реестра данных класса)
|}
|}
[[Файл:Раздел Data.png|мини|Блок Data]]
[[Файл:Раздел Data.png|мини|Блок Data|283x283пкс]]


=== Data ===
==== Data ====


В данном блоке, настраивается низкоуровневое поведение класса.


 
Можно задать параметры хранения данных, настроить кеширование на различных уровнях платформы, а также в случае необходимости, реализовать получение данных из собственных источников (вместо использования штатного механимза хранилища)
{| class="wikitable"
{| class="wikitable mw-collapsible"
|+Параметры класса
|+Параметры класса
!Название параметра
!Название параметра
Строка 169: Строка 191:
|Дополнительные опции (opts) для design/classes
|Дополнительные опции (opts) для design/classes
Полный список опций доступен в [https://vendor.era-platform.ru/docs/era/latest/entities/design/class.html документации к классу]
Полный список опций доступен в [https://vendor.era-platform.ru/docs/era/latest/entities/design/class.html документации к классу]
|}
|}[[Файл:Блок Class.png|мини|Блок Class]]


=== Class ===
==== Class ====
[[Файл:Блок Class.png|мини|Блок Class]]








{| class="wikitable"
{| class="wikitable mw-collapsible"
|+Параметры класса
|+Параметры класса
!Название параметра
!Название параметра
Строка 203: Строка 224:
|Предполагается, что класс уже существует (создан на слое платформы), но в него необходимо добавить недостающие поля
|Предполагается, что класс уже существует (создан на слое платформы), но в него необходимо добавить недостающие поля
|}
|}
[[Файл:Блок Autodelete.png|мини|Блок Autodelete]]
==== Autodelete ====
{| class="wikitable mw-collapsible"
|+Параметры класса
!Название параметра
!Значение по-умолчанию
!Комментарий
|-
|expiresMode
|none
|Режим автоматического удаления устаревших объектов (по истечении времени жизни)
Только для storage_mode = <code>runtime</code>.
* <code>none</code> - режим автоудаления не используется.
* <code>modify</code> - таймштамп выставляется автоматически в момент любой модификации сущности.
* <code>create</code> - таймштамп выставляется автоматически только при создании сущности.
* <code>custom</code> - таймштамп выставляется только вручную с помощью REST.
|-
|expiresTimestampPropertyName
|
|Имя поля, относительно которого рассчитывается время жизни (timestamp, в миллисекундах unix time * 1000)
|-
|expiresTimeToLivePropertyName
|
|Имя поля, содержащего время жизни объекта (в секундах)
|}
[[Файл:Блок Lookup.png|мини|Блок Lookup]]
==== Lookup ====
{| class="wikitable mw-collapsible"
|+Параметры класса
!Название параметра
!Значение по-умолчанию
!Комментарий
|-
|lookupLink
|True
|Разрешить ли переход к объектам данного типа по гиперссылкам
|-
|lookupLinkKind
|
|Способ открытия гиперссылки:
* default
* redirect
* tabbed
* popup
|-
|lookupAddEnabled
|
|Разрешить автоматическое пополнение справочника (добавление значений из выпадающих списков)
|-
|lookupAddConfirmationText
|
|Текст подтверждения при автоматическом пополнении справочника
|-
|lookupAddValues
|
|Значения при автоматическом пополнении справочника (JSON)
|-
|lookupSearchExpr
|
|Поле или список полей для поиска в выпадающих списках (JSON)
|-
|indexedProperties
|
|Индексированные свойства для быстрого поиска в локальном кэше
|}
[[Файл:Блоки Misc и Templates.png|мини|Блоки Misc и Templates]]
==== Misc ====
{| class="wikitable mw-collapsible"
|+Параметры класса
!Название параметра
!Значение по-умолчанию
!Комментарий
|-
|historyChangesMode
|
|Режим автоматического сохранения истории изменений объектов класса
|-
|previousName
|
|Предыдущее имя класса (fullMultiName, для автоматического переименования старой таблицы при активации пакета)
|-
|enabled
|
|Включен ли данный класс. Отключенные классы игнорируются при активации пакета
|}
==== Templates ====
{| class="wikitable mw-collapsible"
|+Параметры класса
!Название параметра
!Значение по-умолчанию
!Комментарий
|-
|generateCommunications
|
|Генерация joined-свойства, содержащего средства связи
|-
|generateUniversalHistory
|
|Генерация вкладки с универсальной историей и комментариями
|}
[[Файл:Блок Code.png|мини|Блок Code]]
==== Code ====
{| class="wikitable mw-collapsible"
|+Параметры класса
!Название параметра
!Значение по-умолчанию
!Комментарий
|-
|afterApplyUpdatesCode
|
|Фрагмент кода, выполняемый после применения изменений (TypeScript)
|-
|beforeInsertCode
|
|Фрагмент кода, выполняемый перед добавлением (TypeScript)
|-
|beforeModifyCode
|
|Фрагмент кода, выполняемый перед изменением (TypeScript)
|-
|beforeDeleteCode
|
|Фрагмент кода, выполняемый перед удалением (TypeScript)
|}
=== Вкладка Properties ===
Опциональные параметры, определяют применение полей класса.[[Файл:Блок Properties. Misc.png|мини|Блок Properties. Misc]]
==== Блок Misc ====
{| class="wikitable mw-collapsible"
|+Параметры класса
!Название параметра
!Значение по-умолчанию
!Комментарий
|-
|keyPropertyName
|
|Имя ключевого свойства (которое сохраняется в полях-ссылках других классов)
|-
|displayPropertyName
|
|Имя отображаемого свойства (которое отображается в выпадающих списках)
|-
|colorPropertyName
|
|Имя свойства, содержащего цвет (отображается в пользовательских интерфейсах)
|-
|hashPropertyName
|
|Имя свойства, хэш-функцией от которого определяется идентификатор id
|-
|modificationTimePropertyName
|
|Имя свойства, в которое автоматически сохраняется время последнего изменения объекта
|-
|autoCalcCondition
|
|Условие, при выполнении которого рассчитываются поля с заданным autoCalcExpression (TypeScript)
|}
=== Вкладка Security ===
Опциональные параметры, определяют настройки доступа к данным класса.[[Файл:Блок Roles access.png|мини|Блок Roles access]]
==== Roles access ====
{| class="wikitable mw-collapsible"
|+Параметры класса
!Название параметра
!Значение по-умолчанию
!Комментарий
|-
|readRoles
|
|Роли, которым разрешено чтение (если оба списка пусты – все роли пакета имеют разрешение на чтение и запись)
|-
|writeRoles
|
|Роли, которым разрешена запись (если оба списка пусты – все роли пакета имеют разрешение на чтение и запись)
|-
|readByIDRoles
|
|Роли, которым разрешено чтение по ИД (если полное чтение ограничено)
|}
[[Файл:Блок readFilter.png|мини|Блок readFilter]]
==== readFilter ====
Фильтр, применяемый к классу при чтении (ограничивает выдачу строк).
Возможные параметры конфигурации фильтра можно посмотреть на [https://vendor.era-platform.ru/docs/era/latest/api/rest/v1/model/overview/index.html#read_collection_filter портале вендора].
{| class="wikitable mw-collapsible mw-collapsed"
|+Параметры класса
!Название параметра
!Значение по-умолчанию
!Комментарий
|-
|roles
|
|
|-
|userPropertyNames
|
|
|-
|subordintatedPropertyNames
|
|
|-
|mandatePropertyName
|
|
|-
|customFilter
|
|
|}
==== writeFilter ====
Блок writeFilter по составу аналогичен блоку readFilter.
Фильтр, применяемый к классу при записи (запрещает изменение строк).
Возможные параметры конфигурации фильтра можно посмотреть на [https://vendor.era-platform.ru/docs/era/latest/api/rest/v1/model/overview/index.html#read_collection_filter портале вендора].
{| class="wikitable mw-collapsible mw-collapsed"
|+Параметры класса
!Название параметра
!Значение по-умолчанию
!Комментарий
|-
|roles
|
|
|-
|userPropertyNames
|
|
|-
|subordintatedPropertyNames
|
|
|-
|mandatePropertyName
|
|
|-
|customFilter
|
|
|}
=== Вкладка UI ===
На данной вкладке содержится большое число параметров, влияющих на интерфейс работы с данными.
В данной статье будут рассмотрены только параметры, влияющие на логику работы класса. Остальные параметры UI будут рассмотрены в статье, посвещенной control'ам.
[[Файл:Блок dataOptions.png|мини|Блок dataOptions]]
==== dataOptions ====
{| class="wikitable mw-collapsible"
|+Параметры класса
!Название параметра
!Значение по-умолчанию
!Комментарий
|-
|allowInsert
|
|Доступно добавление данных
|-
|allowInsertRoles
|
|Роли с доступом к добавлению данных
|-
|allowModify
|
|Доступно изменение данных
|-
|allowModifyRoles
|
|Роли с доступом к изменению данных
|-
|allowDelete
|
|Доступно удаление данных
|-
|allowDeleteRoles
|
|Роли с доступом к удалению данных
|-
|allowActions
|
|Доступны действия класса
|-
|autoCalcProperties
|
|Использовать автоматический расчет значений полей
|-
|autoRefreshInterval
|
|Интервал автоматического обновления данных
|}
==== Вкладка Help ====
Опциональные параметры, опеределяют выводимые подсказки
{| class="wikitable"
|+Параметры класса
!Название параметра
!Значение по-умолчанию
!Комментарий
|-
|description
|
|Описание класса, выводится подсказкой в реестре класса
|-
|includeProperties
|
|Включать ли описания полей в текст подсказки
|-
|includeActions
|
|Включать ли описания действий в текст подсказки
|-
|showInTable
|
|
|}
Следующая статья курса: [[Хранение данных. Классы. Поля и действия]]
Предыдущая статья курса: [[Быстрый старт]]
[[Категория:Курс "Разработка приложений"]]
[[Категория:Курс "Разработка приложений"]]

Текущая версия от 15:59, 20 января 2025

Предыдущая статья курса: Быстрый старт

Общая информация

Раздел Classes приложения Builder

Классы являются основой всех систем и приложений, разрабатываемых на платформе Эра. Набор классов в пакете реализует структуру данных, с которой взаимодействуют остальные элементы пакета.

Каждый класс определяется набором параметров, свойств (полей) и действий. Параметры класса определяют его наименование, поведение, способ хранения данных, структуру наследования и т.д. Обзор параметров класса будет произведен ниже в данной статье.

Для создания и изменения параметров классов, необходимо использовать приложение Builder, раздел Classes.

Набор полей определяет структуру данных класса, а также формирует связь объектов этого класса с другими классами (в рамках всех пакетов системы).

Набор действий может определять некоторые операции, которые могут производиться над объектами данного класса. С помощью действий может реализовываться часть логики работы с классом. Также для реализации логики работы с данными можно использовать обработчики (handlers) и сервисы (services).

При создании модели класса, указывается его тип (classKind):

  • entity - сущность, объект для хранение данных
  • interface - интерфейс для взаимодействия других классов (не хранит данные, только определяет структуру)
  • object - аналог интерфейса, для которого также не создается хранилище, однако создаются обертки при генерации кода. Позволяет реализовать, например, "интерфейс" с расчитываемыми полями

Классы могут наследовать поля и действия от других, родительских классов.

Для каждого нового класса, при активации пакета совершается следующий набор действий:

  • создается хранилище, соответствующее настройкам класса
  • создается два control'а (элемент управления) по-умолчанию, для визуализации данных класса в табличном виде и в виде карточки редактирования
  • генерируется исходный код работы с классом. Блоки кода, включенные в параметры класса сохраняются

Хранилище может размещаться в оперативной памяти, в распределенной объектной БД (mnesia), в реляционной БД Postgres (с партициями для исторических данных и без), в брокере Kafka, а также сохранять данные в аналитической колоночной БД Clickhouse.

Класс может быть абстрактным (abstract), или интерфейсом (interface) в этом случае, для него не генерируются хранилище. Данные вариации классов не хранят в себе данные, и используются для наследования, взаимодействия между другими классами и описания структур данных.

Параметры класса

Окно редактирования параметров класса

У класса достаточно большой набор настраиваемых параметров. Для удобства, рассмотрим их в порядке группировки в окне редактирования.

Все настройки разделены по вкладкам в окне редактирования:

  • Common - общие настройки класса
  • Properties - свойства класса. Данная вкладка будет детально рассмотрена в следующей статье
  • Actions - действия класса. Данная вкладка будет детально рассмотрена в следующей статье
  • Security - параметры, задающие правила доступа к данным класса
  • UI - параметры, влияющие на визуализацию класса в интерфейсе
  • Help - информация для использования в справке и подсказках

Вкладка Common

Основная вкладка, содержащая ключевые параметры работы класса.

Блок Name and Location


Name and Location

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

При создании классов, в целях единообразия, технической красоты и удобства сопровождения, выработаны следующие соглашения по наименованию:

  • name: uppercase (Ticket, CurrentConnection, ArchiveConnection)
  • multiName: uppercase (Tickets, CurrentConnections, ArchiveConnections)
  • class folders: lowercase with slash (connections, acd/core, tickets/catalogs)


Параметры класса
Название параметра Значение по-умолчанию Комментарий
package [текущий выбранный пакет] Определяет, к какому пакету будет относиться данный класс
folderName Определяет имя папки для группировки классов
name Системное наименование класса в единственном числе (используется в API)
multiName Системное наименование класса во множественном числе числе (используется в API)
fullName [package]/[folderName]/[name] Формируется автоматически, используется для доступа к данным через API
fullMultiName [package]/[folderName]/[multiName] Формируется автоматически, используется для доступа к данным через API
caption Заголовок класса, используется для отображения данных пользователю (напр., при отображении карточки редактирования)
multiCaption Заголовок класса, используется для отображения данных пользователю (напр., при отображении реестра данных класса)
Блок Data

Data

В данном блоке, настраивается низкоуровневое поведение класса.

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

Параметры класса
Название параметра Значение по-умолчанию Комментарий
storageMode category Определяет тип хранилища, создаваемого для класса

ram/runtime/category/history

  • ram - хранение в распределенной объектной БД (mnesia on ram only). Не сохраняет данные на диск. Целостность и сохранность данных обеспечивается пока доступен один из экземпляров группы микросервисов, ответственной за обслуживание класса. Производительность операций доступа по ключу и операций записи ~10000 в секунду в расчете на один свободный поток обработчик.
  • runtime - хранение в распределенной объектной БД (mnesia on disc+ram). Сохраняет данные на диск и под нагрузкой значительно загружает дисковую подсистему на запись. Производительность операций доступа по ключу и операций записи ~10000 в секунду в расчете на один свободный поток обработчик.
  • category - хранение в реляционной БД postgresql без партицирования. Скорость до 10000 операций в секунду в режиме параллельной обработки, ~3000 операций в секунду в синхронном режиме.
  • history - хранение в реляционной БД postgresql с партицированием по дате. Требует указания размерности партишена (год, месяц, день), и поля со значением для патицирования.
  • transactionlog - отправка данных в кластер Kafka. При обнаружении storage с type=clickhouse с тем же значением instance автоматически генерирует таблицу-приемщик из Kafka в ClickHouse (ReplicatedReplacingMergeTree), и делает доступными операции чтения.
storageInstance Используется только для storage_mode = category, history, transactionlog

Данным параметром задается ключ инстанса для хранения данных. При отсутствии настроенного хранилища с кодом 'auto' класс автоматически привязывается к модельной базе ('era_model_DOMAIN'), созданной через основное подключение к БД Postgres домена).

section Имя секции для выбора экземпляра DMS
integrityMode sync_fast_notify Режим обеспечения целостности (приоритетность применения изменений в хранилище и рассылки уведомлений)
  • async - N(=10) очередей чтения с распределением по хешам идентификаторов, очередь чтения не используется.
  • sync - одна очередь записи, одна очередь чтения.
  • sync_fast_read - N(=10) очередей чтения с распределением по хешам идентификаторов, M(=10) очередей чтения. Отправка уведомления после сохранения в БД. Читатели ждут завершения более ранних операций записи.
  • sync_fast_notify - N(=10) очередей чтения с распределением по хешам идентификаторов, M(=10) очередей чтения. Отправка уведомления об изменении перед сохранением в БД. Читатели не ждут завершения более ранних операций записи.
partitionPropertyName Используется только для storage_mode = history, transactionlog

Является опциональным для режима history, и обязательным для transactionlog В данном параметре определяется имя поля (с типом datetime), которое будет использоваться для построения партиции в Postgresql / префикса ключа в Kafka+Clickhouse

maxLimit Максимальное количество строк при чтении одной страницы. Используется в API при пагинации данных
realtime Обеспечение обновлений данных в реальном времени (путем подписки на изменения). Данный параметр в том чилсе, влияет на работу в интерфейсе (когда два пользователя пытаются изменять один и тот же объект этого класса).
serverCacheMode none Режим кэширования данных на сервере (слой платформы, роль DMS)
  • full - кэшируется весь объем данных. Применимо только для type=category. Чтение производится из кэша - поиск по идентификатору в кэше быстрый, но выборка при большом объеме может быть медленнее чем в оригинальном движке БД. Не применяется для storage_mode = 'transactionlog'
  • temp - кэшируется последнее используемое в ограниченном объеме. Удаляется автоматически при переполнении кэша. Поиск по идентификатору в кэше быстрый, выборка всегда производится в оригинальном хранилище БД.
  • none - кэш не используется.
clientCacheMode temp Режим кэширования данных на клиенте (в приложениях и микросервисах продуктового слоя).

Возможные значения аналогичны serverCacheMode

classDataSource model Источник данных класса

Возможные значения:

  • model - данные из хранилища
  • view - данные из представления (только в режиме category и history)
  • root - данные из сервиса
restURL URL сервиса для получения данных. Используется только при dataSource = root
dataFactoryServiceName Имя сервиса, который используется в качестве фабрики данных (вместо классического REST)
dataFactoryMethodName Имя метода сервиса, который используется в качестве фабрики данных (вместо классического REST)
tuningOptions Дополнительные опции (opts) для design/classes

Полный список опций доступен в документации к классу

Блок Class

Class

Параметры класса
Название параметра Значение по-умолчанию Комментарий
classKind entity Тип класса (сущность, объект или интерфейс)
parent Родительский класс (для наследования свойств и действий)
abstract False Для абстрактных классов не создаются таблицы в хранилищах, они предназначены для дальнейшего наследования
unionContents Список дочерних классов для объединения в единую коллекцию
onlyAddProperties Предполагается, что класс уже существует (создан на слое платформы), но в него необходимо добавить недостающие поля
Блок Autodelete

Autodelete

Параметры класса
Название параметра Значение по-умолчанию Комментарий
expiresMode none Режим автоматического удаления устаревших объектов (по истечении времени жизни)

Только для storage_mode = runtime.

  • none - режим автоудаления не используется.
  • modify - таймштамп выставляется автоматически в момент любой модификации сущности.
  • create - таймштамп выставляется автоматически только при создании сущности.
  • custom - таймштамп выставляется только вручную с помощью REST.
expiresTimestampPropertyName Имя поля, относительно которого рассчитывается время жизни (timestamp, в миллисекундах unix time * 1000)
expiresTimeToLivePropertyName Имя поля, содержащего время жизни объекта (в секундах)
Блок Lookup

Lookup

Параметры класса
Название параметра Значение по-умолчанию Комментарий
lookupLink True Разрешить ли переход к объектам данного типа по гиперссылкам
lookupLinkKind Способ открытия гиперссылки:
  • default
  • redirect
  • tabbed
  • popup
lookupAddEnabled Разрешить автоматическое пополнение справочника (добавление значений из выпадающих списков)
lookupAddConfirmationText Текст подтверждения при автоматическом пополнении справочника
lookupAddValues Значения при автоматическом пополнении справочника (JSON)
lookupSearchExpr Поле или список полей для поиска в выпадающих списках (JSON)
indexedProperties Индексированные свойства для быстрого поиска в локальном кэше
Блоки Misc и Templates

Misc

Параметры класса
Название параметра Значение по-умолчанию Комментарий
historyChangesMode Режим автоматического сохранения истории изменений объектов класса
previousName Предыдущее имя класса (fullMultiName, для автоматического переименования старой таблицы при активации пакета)
enabled Включен ли данный класс. Отключенные классы игнорируются при активации пакета

Templates

Параметры класса
Название параметра Значение по-умолчанию Комментарий
generateCommunications Генерация joined-свойства, содержащего средства связи
generateUniversalHistory Генерация вкладки с универсальной историей и комментариями
Блок Code

Code

Параметры класса
Название параметра Значение по-умолчанию Комментарий
afterApplyUpdatesCode Фрагмент кода, выполняемый после применения изменений (TypeScript)
beforeInsertCode Фрагмент кода, выполняемый перед добавлением (TypeScript)
beforeModifyCode Фрагмент кода, выполняемый перед изменением (TypeScript)
beforeDeleteCode Фрагмент кода, выполняемый перед удалением (TypeScript)

Вкладка Properties

Опциональные параметры, определяют применение полей класса.

Блок Properties. Misc

Блок Misc

Параметры класса
Название параметра Значение по-умолчанию Комментарий
keyPropertyName Имя ключевого свойства (которое сохраняется в полях-ссылках других классов)
displayPropertyName Имя отображаемого свойства (которое отображается в выпадающих списках)
colorPropertyName Имя свойства, содержащего цвет (отображается в пользовательских интерфейсах)
hashPropertyName Имя свойства, хэш-функцией от которого определяется идентификатор id
modificationTimePropertyName Имя свойства, в которое автоматически сохраняется время последнего изменения объекта
autoCalcCondition Условие, при выполнении которого рассчитываются поля с заданным autoCalcExpression (TypeScript)

Вкладка Security

Опциональные параметры, определяют настройки доступа к данным класса.

Блок Roles access

Roles access

Параметры класса
Название параметра Значение по-умолчанию Комментарий
readRoles Роли, которым разрешено чтение (если оба списка пусты – все роли пакета имеют разрешение на чтение и запись)
writeRoles Роли, которым разрешена запись (если оба списка пусты – все роли пакета имеют разрешение на чтение и запись)
readByIDRoles Роли, которым разрешено чтение по ИД (если полное чтение ограничено)
Блок readFilter

readFilter

Фильтр, применяемый к классу при чтении (ограничивает выдачу строк).

Возможные параметры конфигурации фильтра можно посмотреть на портале вендора.

Параметры класса
Название параметра Значение по-умолчанию Комментарий
roles
userPropertyNames
subordintatedPropertyNames
mandatePropertyName
customFilter

writeFilter

Блок writeFilter по составу аналогичен блоку readFilter.

Фильтр, применяемый к классу при записи (запрещает изменение строк).

Возможные параметры конфигурации фильтра можно посмотреть на портале вендора.

Параметры класса
Название параметра Значение по-умолчанию Комментарий
roles
userPropertyNames
subordintatedPropertyNames
mandatePropertyName
customFilter

Вкладка UI

На данной вкладке содержится большое число параметров, влияющих на интерфейс работы с данными.

В данной статье будут рассмотрены только параметры, влияющие на логику работы класса. Остальные параметры UI будут рассмотрены в статье, посвещенной control'ам.

Блок dataOptions

dataOptions

Параметры класса
Название параметра Значение по-умолчанию Комментарий
allowInsert Доступно добавление данных
allowInsertRoles Роли с доступом к добавлению данных
allowModify Доступно изменение данных
allowModifyRoles Роли с доступом к изменению данных
allowDelete Доступно удаление данных
allowDeleteRoles Роли с доступом к удалению данных
allowActions Доступны действия класса
autoCalcProperties Использовать автоматический расчет значений полей
autoRefreshInterval Интервал автоматического обновления данных

Вкладка Help

Опциональные параметры, опеределяют выводимые подсказки

Параметры класса
Название параметра Значение по-умолчанию Комментарий
description Описание класса, выводится подсказкой в реестре класса
includeProperties Включать ли описания полей в текст подсказки
includeActions Включать ли описания действий в текст подсказки
showInTable
Следующая статья курса: Хранение данных. Классы. Поля и действия
Предыдущая статья курса: Быстрый старт