Объектные характеристики#
Объектные характеристики — это пользовательские свойства, расширяющие функциональность классов без изменения схемы базы данных. Документ описывает способы хранения, настройки, валидации и программного управления характеристиками.
Характеристики: понятие и назначение#
Характеристика — качественное или количественное свойство объекта.
В системе реализованы как специальные атрибуты для хранения дополнительной информации.
Существует два способа хранения:
В JSON-контейнере объекта
Основной способ. Представляет собой NoSQL-расширение строки таблицы. Позволяет динамически добавлять характеристики без пересборки проекта и обновления схемы БД.Как атрибут класса с признаком «объектная характеристика»
Используется в высоконагруженных сценариях, где доступ к JSON-полям недостаточно эффективен. Характеристика хранится в отдельной колонке таблицы. Требует синхронизации схемы БД при добавлении.
Интеграция с выборкой#
Для вывода характеристик используется универсальное отображение Card_ObjectAttr. Его генерация управляется параметром objectAttrCardType в ODM.
Варианты настройки#
Значение |
Описание |
|---|---|
|
Объектные характеристики не используются. Отображение не формируется. |
|
Характеристики настраиваются на уровне класса или типа объекта. Если у класса есть тип объекта — настраивается на нём. Если нет — отображаются все характеристики. |
|
Характеристики настраиваются для групп. |
|
Характеристики настраиваются для групп и дополняются теми, что заданы на типе объекта. |
Отсутствие настройки эквивалентно objectAttrCardType="Simple".
Что отображается в закладке#
В отображении выводятся:
Значения атрибутов с флагом
isObjectAttr="true".Значения из JSON-контейнера
jObjAttrs_dz.Универсальные характеристики (см. раздел Универсальные характеристики в Документации по модулю btk).
Настройка характеристик на проекте#
Пользователь может добавить характеристики через интерфейс:
Откройте приложение «Настройка системы».
Перейдите в раздел «Сущности > Классы».
Откройте карточку нужного класса.
Перейдите на закладку «Атрибуты».
При необходимости задайте значение по умолчанию для существующих атрибутов.
Создайте атрибут объектной характеристики.
Примечание
Имена атрибутов должны соответствовать соглашению:
Строковые: начинаются с
s, напримерsStringAttrName.Числовые: начинаются с
n, напримерnNumberAttrName.Даты: начинаются с
d, напримерdDateAttrName.Логические: начинаются с
b, напримерbBooleanAttrName.
Сбросьте кэш метаданных:
Снимите галочку в пункте менюСервис > Управление решением > Использовать кэш метаданных выборок.Выполните операцию «Сбросить кэш настройки» на текущей закладке.
Значения по умолчанию#
Значения по умолчанию подставляются при создании объекта.
Если класс использует группировку — значения берутся из основной группы.
Для базовых атрибутов#
Указываются в ODM.
Устанавливаются через DPI при вставке.
Могут быть переопределены на проекте.
Проектное переопределение#
В списке атрибутов укажите значение в поле «Значение по умолчанию».
Для сброса: выполните операцию «Удалить переопределение значения по умолчанию».
Программное переопределение#
Используйте метод:
ru.bitec.app.btk.Btk_AttributeApi#overrideDefaultValue
Формат значений по умолчанию#
Ссылочные поля: ID ссылочного объекта.
Переменная ссылочность: GID ссылочного объекта.
Числа: десятичный разделитель — точка.
Дата: формат
dd.MM.yyyy HH:mm:ss.
Значениеsysdate→ текущая дата при вставке объекта.
Программная установка значений JSON-характеристик#
В бизнес-логике#
val rop = Bs_GoodsApi.load(209851.nl)
// Установка ссылочной характеристики
Bs_GoodsApi().setAttrValue(rop, "idGradeJson", 77016.nl)
В Jexl-скрипте#
var rop = Bs_GoodsApi.load(209851L); // Установка ссылочной характеристики Bs_GoodsApi.setAttrValue(rop, «idGradeJson», 77016L);