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

Хранение данных. Классы. Поля и действия

Материал из Платформа Эра. Документации
Предыдущая статья курса: Хранение данных. Классы

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

Свойства, или поля определяют структуру данных класса.

Конечный набор полей класса определяется несколькими коллекциями:

  • data - основные свойства, определяющие структуру класса в хранилище
  • calculated - вычислимые в реальном времени свойства, доступные только в приложениях и обертках
  • joined - присоединенные свойства, содержащие информацию из других классов (детали/табличные части)
  • override - переопределенные свойства, позволяющие скорректировать некоторые настройки унаследованных от родителей свойств

Коллекция свойств data

Основная работа при создании классов будет сосредоточена на коллекции data, которая и определяет основную структуру данных класса. Например, при хранении данных класса в Postgres, состав колонок таблицы будет в первую очередь определяться коллекцией data (а также наследованными колонками, если указан родительский класс).

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

Существует три вида типов данных:

  • Базовое значение (base/) - значимые типы данных, в конечной структуре будут храниться значения данных свойств (например, строка/число/бинарные данные/дата)
  • Перечисление - тип данных, позволяющий выбирать значение из заданного в пакете списка констант (например, статусы обращения - новое, в работе, отменено, завершено и т.д.)
  • Класс - ссылочный тип данных, позволяющий связывать различные классы между собой. В конечной структуре будут храниться ссылки на данные других классов (например, ссылка на контакт, организацию или другие вспомогательные данные)
Параметры свойства коллекции data

Параметры свойств коллекции data

Параметры свойства
Имя Значение по-умолчанию Комментарий
name Системное название. Используется для формирования колонок в хранилище, а также при работе с API
caption Заголовок. Используется при выводе данных пользователю
dataType Тип данных. Опрееделяет тип хранимых свойством данных. Формируется динамически исходя из списка доступных в конкретной системе пакетов
required False Признак обязательного свойства. Если установлен в True, то объект класса не может быть сохранен, если данное свойство не заполнено (проверка на стороне back-end)
multi False
defaultValue Код (TypeScript), задающий значение по-умолчанию
unique False Признак уникального значения. При установленном значении True, требует соблюдения уникальности значений данного свойства среди всех объектов данного класса
lookup False
indexed False Признак, позволяющий настроить индексирование данных объекта по данному свойству
unmodifiable False Признак, запрещающий изменение данного свойства
weakLink
autoCalcExpression Код (TypeScript), задающий алгоритм расчета данного свойства
beforeSetCode Код (TypeScript), выполняющийся перед изменением значения свойства
afterSetCode Код (TypeScript), выполняющийся после изменения значения свойства

Ограниение доступа к свойствам

Для каждого свойства могут быть заданы фильтры для ограничения доступа к данным по ролям. Праметры фильтров указываются в соотсветствии с документацией на портале вендора.

Параметры отображения свойств (вкладка UI)

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

Большая часть данных параметров будет рассмотрена отдельно в статье, посвещенной Control'ам.

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

Блок optionsUI

Общие параметры отображения

Блок optionsUI
Имя Значение по-умолчанию Комментарий
showInTable True Отображать ли данное свойство в реестре данных класса
showInCard True Отображать ли данное свойство в карточке редактирования
showInGroupModify False Включать ли данное свойство в интерфейс группового изменения объектов
editor Ссылка на редактор данного свойства (создаются в разделе Editors приложения Builder)
required False Признак обязательности данного свойства (проверка на стороне front-end)
readOnly False Значение свойства доступно только для чтения (проверка на стороне front-end)
orderIndex Порядковый номер для сортировки

Параметры отображения в карточке редактирования

Блок Card
Блок Card
Имя Значение по-умолчанию Комментарий
tabCaption Имя вкладки, в которой будет отображаться данное свойство
groupCaption Имя группы, в которой будет отображаться данное свойство
colSpan Ширина в колонках, которую будет занимать данное свойство
actionButtons JSON, описывающий кнопки действия с данным свойством
cardContents
control_fullName Полное имя Control'а, который отвечает за вывод данного свойства (опционально, для переопределения отображения)
controlOptions Значение параметров контрола (опционально, для переопределения отображения)
Блок Table

Параметры отображения в таблице реестра данных

Блок Table
Имя Значение по-умолчанию Комментарий
width Ширина колонки
wordWrap False Переносить ли текст значения, если он не влезает в ширину колонки
allowShowHide True Разрешить скрытие и отображение колонки данного свойства
allowSorting True Разрешить сортировку по данному свойству
allowFiltering True Разрешить фильтрацию по данному свойству
allowHeaderFiltering True
allowSearch True Разрешить поиск по значениям в колонке данного свойства
showCellHint Отображать подсказку в ячейке таблицы
exportMode auto Доступность экспорта данных:
  • auto
  • enabled
  • disabled
Блоки Validation, Misc, Help

Параметры валидации данных

Блок Validation
Имя Значение по-умолчанию Комментарий
maxLength Максимальная длина содержимого (строки)
mask Маска содержимого

Пример: L000LL – госномер автомобиля Доступные элементы:

  • 0 – цифра
  • 9 – цифра или пробел
  • # – цифра, пробел, + или -
  • L – буква
  • C – любой символ кроме пробела
  • c – любой символ
  • A – цифра или буква
  • a – цифра, буква или пробел
validationPattern Шаблон содержимого (регулярное выражение)
validationMessage Сообщение о неудачной валидации
validationCode Код (JavaScript) валидации. Пример:

{

"validationCode": "return value_ === '123'", "validationMessage": "Должно быть 123"

}

Справочные данные

Блок Help
Имя Значение по-умолчанию Комментарий
description Описание поля, для включения в справку по классу
hint Подсказка к полю, отображается в карточке редактирования по нажатию на иконку со знаком вопроса, в таблице реестра данных при наведении на ячейку со значением (если включено в настройках)

Установка значений по-умолчанию

Коллекция defaultValues

Значения свойств по-умолчанию могут быть заданы кодом (TypeScript) с помощью параметра defaultValue в параметрах свойства.

DefaultValue

Также, существует специальная коллекция defaultValues, в которой в виде пары "имя свойства":[код установки значения] можно централизовано задать значения по-умолчанию.


Коллекция свойств calculated

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

В настройках класса можно установить признак, чтобы все расчетные свойства обновлялись автоматически.

Такие свойства определяются следующим набором параметров:

Параметры свойства
Имя Значение по-умолчанию Комментарий
name Системное название. Используется для формирования колонок в хранилище, а также при работе с API
caption Заголовок. Используется при выводе данных пользователю
dataType Тип данных. Опрееделяет тип хранимых свойством данных. Формируется динамически исходя из списка доступных в конкретной системе пакетов
required Признак обязательного свойства. Если установлен в True, то объект класса не может быть сохранен, если данное свойство не заполнено (проверка на стороне back-end)
multi
getCode Код (TypeScript), который задает алгоритм получения значения свойства
setCode Код (TypeScript), который задает алгоритм установки значения свойства

Настройки на вкладке UI аналогичны настройкам для базовой коллекции свойств data.

Коллекция свойств joined

Свойства из коллекции joined служат для работы с данными связанных объектов.

Данные свойства работают по принципу JOIN из реляционных баз данных. Для работы этих свойств, необходимо указать класс присоенидяемых данных, а также указать поля, значения которых должны совпасть для присоединения.

Настройки joined-свойства

Joined свойства могут работать в двух режимах связности (multi):

  • один к одному
  • один ко многим

В параметрах свойства указывается тип объекта для связи, поля для связи и режим работы (multi)

При использовании режима "один к одному", свойства связанного объекта будут отображены в карточке текущего объекта. В таком режиме, возможно изменение этих свойств.

Пример присоединения карточки клиента. Зеленым выделены поля класса Customer

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

Пример присоединения списка заказов

В качестве примера, для режима "один к одному", можно привести присоединение карточки клиента к карточке обращения, для того чтобы видеть данные, не переходя в его карточку.

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

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


Параметры joined-свойств

Параметры свойства
Имя Значение по-умолчанию Комментарий
name Системное название. Используется для формирования колонок в хранилище, а также при работе с API
caption Заголовок. Используется при выводе данных пользователю
dataType Тип данных. Опрееделяет тип хранимых свойством данных. Формируется динамически исходя из списка доступных в конкретной системе пакетов.

В данном случае используются только типы классов, базовые типы и перечисления не поддерживаются. Для joined-свойств определяет объект, по данным которого будет осуществляться поиск значений, подходящих для присоединения

required Признак обязательного свойства. Если установлен в True, то объект класса не может быть сохранен, если данное свойство не заполнено (проверка на стороне back-end)
multi Определяет тип работы свойства.

При Multi = False, будет присоединена одна запись с возможностью редактирования. При Multi = True, будет присоединен список записей в режиме read-only

selfPropertyName Имя свойства текущего класса, для связи с присоединямемым классом
joinedPropertyName Имя свойства присоединяемого класса для связи с текущим
autoCreate Автоматически создавать новую сущность присоединяемого класса, если данные для связи не были найдены
hiddenColumns Список скрываемых колонок присоединяемого класса (для обеспечения лакончиности интерфейса, опциональный параметр)

Коллекция свойств override