Тип объекта#

Тип объекта — механизм настройки поведения типизированных объектов. Он позволяет задавать для объекта набор стандартных и проектных настроек: закладки, печатные формы, переходы состояний, объектные характеристики, права по умолчанию и другие параметры.

Внимание

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

Интерфейс «Типы объектов»#

Путь: Настройка системы > Сущности > Типы объектов > Типы объектов.

alt text

В интерфейсе Типы объектов выделяются три основные области:

  1. Список типов объектов — содержит типы объектов, фильтры и панель операций.

  2. Разделы настройки — показывает настройки, доступные для выбранного типа объекта.

  3. Область выбранной настройки — отображает параметры и операции выбранного раздела настройки.

Список типов объектов#

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

Наименование колонки

Тип ввода значения

Описание

Код

Ручной ввод

Системный код типа объекта.

Наименование

Ручной ввод

Наименование типа объекта, отображаемое в интерфейсе.

Краткое наименование

Ручной ввод

Сокращенное наименование типа объекта.

Описание

Ручной ввод

Дополнительное описание назначения типа объекта.

Класс

Справочник Классы

Класс, для объектов которого применяется тип объекта.

Подкласс

Выпадающий список

Подкласс, уточняющий бизнес-логику в рамках выбранного класса.

По умолчанию

Признак

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

Подставочный тип

Признак

Определяет, используется ли тип объекта как подставочный.

Версионный

Признак

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

Класс версий

Справочник Классы

Класс, в котором хранятся версии объектов данного типа.

Выборка карточки

Ручной ввод

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

Отображение карточки

Ручной ввод

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

Жизненный цикл

Справочник Жизненные циклы

Жизненный цикл, связанный с типом объекта.

Не активен

Признак

Исключает тип объекта из активного использования.

Дата окончания использования

Дата

Дата, после которой тип объекта не используется.

Изображение

Ручной ввод

Номер изображения, используемого как иконка типа объекта.

Коллекция изображения

Ручной ввод

Коллекция изображений, из которой берется иконка типа объекта.

Требуется акцепт при выгрузке во внешнюю систему

Признак

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

Создание и редактирование типа объекта#

Тип объекта можно создать через интерфейс справочника или из кода. Способ выбирается по тому, должна ли настройка остаться локальной в конкретной базе или поставляться вместе с конфигурацией модуля либо проекта.

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

  • Создание из кода используется, если тип объекта должен поставляться вместе с конфигурацией модуля или проекта.

При выборе способа создания учитывается общее правило переноса данных: если от данных зависит бизнес-логика, они должны поставляться через конфигурацию и устанавливаться программно, например через DataInstall. Если настройка не является обязательной для работы поставляемой логики, она может быть выполнена локально через интерфейс. Подробнее см. раздел Подход expand/contract при обновлении системы.

Создание через интерфейс#

Чтобы создать тип объекта из справочника типов объектов:

  1. Нажмите Создать.

  2. Заполните обязательные поля:

    • Код;

    • Наименование;

    • Класс.

  3. При необходимости заполните дополнительные параметры: Подкласс, По умолчанию, Версионный, Жизненный цикл, Выборка карточки, Отображение карточки и другие поля.

  4. Сохраните запись.

Тип объекта также можно создать из карточки нужного класса. Для этого откройте класс, перейдите на вкладку Типы объекта и создайте запись через стандартный интерфейс типов объектов. Порядок заполнения полей такой же: укажите Код, Наименование, Класс и при необходимости заполните дополнительные параметры.

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

Подробное описание разделов настройки, их полей, технической логики и примеров настройки см. в разделе Настройки типа объекта.

Создание из кода#

Пример создания подкласса и типа объекта:

def regObjectType(bpNeedRefresh: Boolean = true): Unit = {
  session.commit()
  Btk_Pkg().setRWSharedUOWEditType()

  val idvInvoice = Btk_SubClassApi().register(
    "invoiceIn",
    "Приходная накладная",
    idClass,
    ""
  ).get(_.id)

  session.flush()

  if (bpNeedRefresh || Btk_ObjectTypeApi().findByMnemoCodeAndClass("Stm_ActInInvoice", idClass).isNull) {
    Btk_ObjectTypeApi().register(
      spCode = "Stm_ActInInvoice".ns,
      spCaption = "Приходная накладная".ns,
      spShortCaption = "Приходная накладная".ns,
      idpRefClass = idClass,
      idpSubClass = idvInvoice,
      bpIsDefault = 1.nn
    )
  }

  session.commit()
}

Пример регистрации скрипта в теге dbData для ODM-класса Stm_ActIn:

<script name="regObjectType" version="1">
    <install>Stm_ActInApi.regObjectType(false);</install>
</script>

Если вместе с типом объекта нужно создать закладки, переходы состояний и другие стандартные настройки, используйте соответствующие API-методы. Примеры регистрации стандартных настроек см. в разделе Регистрация стандартных настроек из кода.

Подключение индивидуальных настроек типа объекта#

Настройки типа объекта могут быть расширены индивидуальными классами настроек. Такие настройки могут включать или отключать бизнес-логику, управлять фреймами, настраивать права доступа и выполнять другие действия в зависимости от поставленной задачи.

Индивидуальная настройка добавляется в список настроек типа объекта.

Путь: Настройка системы > Сущности > Типы объектов > Настройка детализации типов объектов.

Чтобы подключить индивидуальную настройку к классу:

  1. Выберите необходимую настройку типа объекта.

  2. Нажмите Детализация.

  3. В нижнем фрейме нажмите Создать.

  4. Выберите класс, для типов объектов которого должна отображаться настройка.

  5. Нажмите Сохранить.

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

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

Если список подклассов не заполнен, ограничение по подклассам не применяется.

Подключение типа объекта к классу#

Примечание

Для супертипа document ссылка на тип объекта idObjectType создается автоматически.

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

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

Обязательным условием для типизации объектов является наличие в типизируемом классе атрибута-ссылки на Btk_ObjectType. Атрибут обязательно должен называться idObjectType. Это имя зарезервировано фреймворком и не может использоваться для других целей.

Пример объявления атрибута:

<attr name="idObjectType"
      attribute-type="Long"
      caption="Тип объекта"
      order="50"
      type="refObject"
      isVisible="true"
      ref.class="Btk_ObjectType"/>

Подкласс#

Подкласс — это логическая типизация для разделения бизнес-логики в рамках одного класса. Подклассы добавляются разработчиками, и на них можно завязываться в коде. Несколько типов объекта могут быть привязаны к одному подклассу.

Справочник Настройка системы > Сущности > Типы объектов > Подклассы используется для просмотра всех подклассов, зарегистрированных в системе.

В справочнике отображаются:

  • Код;

  • Наименование;

  • Суперкласс — класс, к которому привязан подкласс.

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

Примечание

Системные имена подклассов можно использовать в коде.

Общая схема классов и типов объекта