Объектные характеристики#

Объектные характеристики — это пользовательские свойства, расширяющие функциональность классов без изменения схемы базы данных. Документ описывает способы хранения, настройки, валидации и программного управления характеристиками.

Характеристики: понятие и назначение#

Характеристика — качественное или количественное свойство объекта.
В системе реализованы как специальные атрибуты для хранения дополнительной информации.

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

  • В JSON-контейнере объекта
    Основной способ. Представляет собой NoSQL-расширение строки таблицы. Позволяет динамически добавлять характеристики без пересборки проекта и обновления схемы БД.

  • Как атрибут класса с признаком «объектная характеристика»
    Используется в высоконагруженных сценариях, где доступ к JSON-полям недостаточно эффективен. Характеристика хранится в отдельной колонке таблицы. Требует синхронизации схемы БД при добавлении.


Интеграция с выборкой#

Для вывода характеристик используется универсальное отображение Card_ObjectAttr. Его генерация управляется параметром objectAttrCardType в ODM.

Варианты настройки#

Значение

Описание

None

Объектные характеристики не используются. Отображение не формируется.

Simple

Характеристики настраиваются на уровне класса или типа объекта. Если у класса есть тип объекта — настраивается на нём. Если нет — отображаются все характеристики.

Group

Характеристики настраиваются для групп.

GroupAndObjectType

Характеристики настраиваются для групп и дополняются теми, что заданы на типе объекта.

Отсутствие настройки эквивалентно objectAttrCardType="Simple".

Что отображается в закладке#

В отображении выводятся:

  • Значения атрибутов с флагом isObjectAttr="true".

  • Значения из JSON-контейнера jObjAttrs_dz.

  • Универсальные характеристики (см. раздел Универсальные характеристики в Документации по модулю btk).


Настройка характеристик на проекте#

Пользователь может добавить характеристики через интерфейс:

  1. Откройте приложение «Настройка системы».

  2. Перейдите в раздел «Сущности > Классы».

  3. Откройте карточку нужного класса.

  4. Перейдите на закладку «Атрибуты».

  5. При необходимости задайте значение по умолчанию для существующих атрибутов.

  6. Создайте атрибут объектной характеристики.

Примечание

Имена атрибутов должны соответствовать соглашению:

  • Строковые: начинаются с s, например sStringAttrName.

  • Числовые: начинаются с n, например nNumberAttrName.

  • Даты: начинаются с d, например dDateAttrName.

  • Логические: начинаются с b, например bBooleanAttrName.

  1. Сбросьте кэш метаданных:
    Снимите галочку в пункте меню Сервис > Управление решением > Использовать кэш метаданных выборок.

  2. Выполните операцию «Сбросить кэш настройки» на текущей закладке.


Значения по умолчанию#

Значения по умолчанию подставляются при создании объекта.
Если класс использует группировку — значения берутся из основной группы.

Для базовых атрибутов#

  • Указываются в ODM.

  • Устанавливаются через DPI при вставке.

  • Могут быть переопределены на проекте.

Проектное переопределение#

  • В списке атрибутов укажите значение в поле «Значение по умолчанию».

  • Для сброса: выполните операцию «Удалить переопределение значения по умолчанию».

Программное переопределение#

Используйте метод:

ru.bitec.app.btk.Btk_AttributeApi#overrideDefaultValue

Формат значений по умолчанию#

  1. Ссылочные поля: ID ссылочного объекта.

  2. Переменная ссылочность: GID ссылочного объекта.

  3. Числа: десятичный разделитель — точка.

  4. Дата: формат 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);