Предыдущая статья курса: Хранение данных. Классы
Общая информация
Свойства, или поля определяют структуру данных класса.
Конечный набор полей класса определяется несколькими коллекциями:
- data - основные свойства, определяющие структуру класса в хранилище
- calculated - вычислимые в реальном времени свойства, доступные только в приложениях и обертках
- joined - присоединенные свойства, содержащие информацию из других классов (детали/табличные части)
- override - переопределенные свойства, позволяющие скорректировать некоторые настройки унаследованных от родителей свойств
Коллекция свойств data
Основная работа при создании классов будет сосредоточена на коллекции data, которая и определяет основную структуру данных класса. Например, при хранении данных класса в Postgres, состав колонок таблицы будет в первую очередь определяться коллекцией data (а также наследованными колонками, если указан родительский класс).
Каждое свойство определяется, в первую очередь, типом данных, которые будут в нем храниться.
Существует три вида типов данных:
- Базовое значение (base/) - значимые типы данных, в конечной структуре будут храниться значения данных свойств (например, строка/число/бинарные данные/дата)
- Перечисление - тип данных, позволяющий выбирать значение из заданного в пакете списка констант (например, статусы обращения - новое, в работе, отменено, завершено и т.д.)
- Класс - ссылочный тип данных, позволяющий связывать различные классы между собой. В конечной структуре будут храниться ссылки на данные других классов (например, ссылка на контакт, организацию или другие вспомогательные данные)
Параметры свойств коллекции 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'ам.
В данной статье рассмотрим только основные параметры, влияющие на отображение свойств.
Общие параметры отображения
Имя | Значение по-умолчанию | Комментарий |
---|---|---|
showInTable | True | Отображать ли данное свойство в реестре данных класса |
showInCard | True | Отображать ли данное свойство в карточке редактирования |
showInGroupModify | False | Включать ли данное свойство в интерфейс группового изменения объектов |
editor | Ссылка на редактор данного свойства (создаются в разделе Editors приложения Builder) | |
required | False | Признак обязательности данного свойства (проверка на стороне front-end) |
readOnly | False | Значение свойства доступно только для чтения (проверка на стороне front-end) |
orderIndex | Порядковый номер для сортировки |
Параметры отображения в карточке редактирования
Имя | Значение по-умолчанию | Комментарий |
---|---|---|
tabCaption | Имя вкладки, в которой будет отображаться данное свойство | |
groupCaption | Имя группы, в которой будет отображаться данное свойство | |
colSpan | Ширина в колонках, которую будет занимать данное свойство | |
actionButtons | JSON, описывающий кнопки действия с данным свойством | |
cardContents | ||
control_fullName | Полное имя Control'а, который отвечает за вывод данного свойства (опционально, для переопределения отображения) | |
controlOptions | Значение параметров контрола (опционально, для переопределения отображения) |
Параметры отображения в таблице реестра данных
Имя | Значение по-умолчанию | Комментарий |
---|---|---|
width | Ширина колонки | |
wordWrap | False | Переносить ли текст значения, если он не влезает в ширину колонки |
allowShowHide | True | Разрешить скрытие и отображение колонки данного свойства |
allowSorting | True | Разрешить сортировку по данному свойству |
allowFiltering | True | Разрешить фильтрацию по данному свойству |
allowHeaderFiltering | True | |
allowSearch | True | Разрешить поиск по значениям в колонке данного свойства |
showCellHint | Отображать подсказку в ячейке таблицы | |
exportMode | auto | Доступность экспорта данных:
|
Параметры валидации данных
Имя | Значение по-умолчанию | Комментарий |
---|---|---|
maxLength | Максимальная длина содержимого (строки) | |
mask | Маска содержимого
Пример: L000LL – госномер автомобиля Доступные элементы:
| |
validationPattern | Шаблон содержимого (регулярное выражение) | |
validationMessage | Сообщение о неудачной валидации | |
validationCode | Код (JavaScript) валидации.
Пример:
|
Справочные данные
Имя | Значение по-умолчанию | Комментарий |
---|---|---|
description | Описание поля, для включения в справку по классу | |
hint | Подсказка к полю, отображается в карточке редактирования по нажатию на иконку со знаком вопроса, в таблице реестра данных при наведении на ячейку со значением (если включено в настройках) |
Установка значений по-умолчанию
Значения свойств по-умолчанию могут быть заданы кодом (TypeScript) с помощью параметра defaultValue в параметрах свойства.
Также, существует специальная коллекция defaultValues, в которой в виде пары "имя свойства":[код установки значения] можно централизовано задать значения по-умолчанию.
Коллекция свойств calculated
Коллекция calculated определяет набор свойств, значения которых не будут помещаться в хранилище, а будут расчитываться, согласно указанному алгоритму.
В настройках класса можно установить признак, чтобы все расчетные свойства обновлялись автоматически.
Такие свойства определяются следующим набором параметров:
Имя | Значение по-умолчанию | Комментарий |
---|---|---|
name | Системное название. Используется для формирования колонок в хранилище, а также при работе с API | |
caption | Заголовок. Используется при выводе данных пользователю | |
dataType | Тип данных. Опрееделяет тип хранимых свойством данных. Формируется динамически исходя из списка доступных в конкретной системе пакетов | |
required | Признак обязательного свойства. Если установлен в True, то объект класса не может быть сохранен, если данное свойство не заполнено (проверка на стороне back-end) | |
multi | ||
getCode | Код (TypeScript), который задает алгоритм получения значения свойства | |
setCode | Код (TypeScript), который задает алгоритм установки значения свойства |
Настройки на вкладке UI аналогичны настройкам для базовой коллекции свойств data.
Коллекция свойств joined
Свойства из коллекции joined служат для работы с данными связанных объектов.
Данные свойства работают по принципу JOIN из реляционных баз данных. Для работы этих свойств, необходимо указать класс присоенидяемых данных, а также указать поля, значения которых должны совпасть для присоединения.
Joined свойства могут работать в двух режимах связности (multi):
- один к одному
- один ко многим
В параметрах свойства указывается тип объекта для связи, поля для связи и режим работы (multi)
При использовании режима "один к одному", свойства связанного объекта будут отображены в карточке текущего объекта. В таком режиме, возможно изменение этих свойств.
При использовании режима "один ко многим", найденные связанные объекты будут выведены в качестве таблицы (списка). В таком режиме данные объекты доступны только для чтения. Для их изменения, необходимо перейти в карточку каждого конкретного объекта с помощью гиперссылки и внести изменения в ней.
В качестве примера, для режима "один к одному", можно привести присоединение карточки клиента к карточке обращения, для того чтобы видеть данные, не переходя в его карточку.
В качестве примера, для режима "один ко многим", можно привести присоединение списка заказов клиента в его карточку. Каждый заказ необходимо редактировать отдельно, однако их список находится перед глазами для удобства поиска.
Флажок autoCreate позволяет автоматически создавать присоединенный объект, если он не найден (напр., создавать нового клиента с номером телефона).
Параметры joined-свойств
Имя | Значение по-умолчанию | Комментарий |
---|---|---|
name | Системное название. Используется для формирования колонок в хранилище, а также при работе с API | |
caption | Заголовок. Используется при выводе данных пользователю | |
dataType | Тип данных. Опрееделяет тип хранимых свойством данных. Формируется динамически исходя из списка доступных в конкретной системе пакетов.
В данном случае используются только типы классов, базовые типы и перечисления не поддерживаются. Для joined-свойств определяет объект, по данным которого будет осуществляться поиск значений, подходящих для присоединения | |
required | Признак обязательного свойства. Если установлен в True, то объект класса не может быть сохранен, если данное свойство не заполнено (проверка на стороне back-end) | |
multi | Определяет тип работы свойства.
При Multi = False, будет присоединена одна запись с возможностью редактирования. При Multi = True, будет присоединен список записей в режиме read-only | |
selfPropertyName | Имя свойства текущего класса, для связи с присоединямемым классом | |
joinedPropertyName | Имя свойства присоединяемого класса для связи с текущим | |
autoCreate | Автоматически создавать новую сущность присоединяемого класса, если данные для связи не были найдены | |
hiddenColumns | Список скрываемых колонок присоединяемого класса (для обеспечения лакончиности интерфейса, опциональный параметр) |
Коллекция свойств override
Свойства из данной коллекции переопределяют некоторые параметры унаследованных от родительского класса свойств.
Для работы переопределения, необходимо задать точное название свойства.
Параметры свойств, доступные для переопределения:
Имя | Значение по-умолчанию | Комментарий |
---|---|---|
name | Системное название. Используется для формирования колонок в хранилище, а также при работе с API | |
caption | Заголовок. Используется при выводе данных пользователю | |
unmodifiable | Признак, запрещающий изменение данного свойства | |
lookup | ||
unique | Признак уникального значения. При установленном значении True, требует соблюдения уникальности значений данного свойства среди всех объектов данного класса |
Также, для переопределения доступны все параметры вкладки UI