Тип объекта#
Тип объекта — механизм настройки поведения типизированных объектов. Он позволяет задавать для объекта набор стандартных и проектных настроек: закладки, печатные формы, переходы состояний, объектные характеристики, права по умолчанию и другие параметры.
Внимание
В прикладном коде нельзя использовать системные имена типов объекта как устойчивый идентификатор бизнес-логики, потому что типы объектов могут добавляться и изменяться на проекте. Если поведение документа нужно программировать в зависимости от типа, используйте системное имя подкласса.
Интерфейс «Типы объектов»#
Путь: Настройка системы > Сущности > Типы объектов > Типы объектов.

В интерфейсе Типы объектов выделяются три основные области:
Список типов объектов — содержит типы объектов, фильтры и панель операций.
Разделы настройки — показывает настройки, доступные для выбранного типа объекта.
Область выбранной настройки — отображает параметры и операции выбранного раздела настройки.
Список типов объектов#
В списке отображаются основные параметры типов объектов. Эти параметры определяют связь типа объекта с классом, отображение карточки, использование версионности, жизненного цикла и другие общие признаки.
Наименование колонки |
Тип ввода значения |
Описание |
|---|---|---|
Код |
Ручной ввод |
Системный код типа объекта. |
Наименование |
Ручной ввод |
Наименование типа объекта, отображаемое в интерфейсе. |
Краткое наименование |
Ручной ввод |
Сокращенное наименование типа объекта. |
Описание |
Ручной ввод |
Дополнительное описание назначения типа объекта. |
Класс |
Справочник Классы |
Класс, для объектов которого применяется тип объекта. |
Подкласс |
Выпадающий список |
Подкласс, уточняющий бизнес-логику в рамках выбранного класса. |
По умолчанию |
Признак |
Определяет тип объекта, который подставляется по умолчанию для выбранного класса. |
Подставочный тип |
Признак |
Определяет, используется ли тип объекта как подставочный. |
Версионный |
Признак |
Указывает, что для объектов данного типа используется версионность. |
Класс версий |
Справочник Классы |
Класс, в котором хранятся версии объектов данного типа. |
Выборка карточки |
Ручной ввод |
Выборка, используемая для открытия карточки объекта по умолчанию. |
Отображение карточки |
Ручной ввод |
Отображение выборки, используемое для карточки объекта по умолчанию. |
Жизненный цикл |
Справочник Жизненные циклы |
Жизненный цикл, связанный с типом объекта. |
Не активен |
Признак |
Исключает тип объекта из активного использования. |
Дата окончания использования |
Дата |
Дата, после которой тип объекта не используется. |
Изображение |
Ручной ввод |
Номер изображения, используемого как иконка типа объекта. |
Коллекция изображения |
Ручной ввод |
Коллекция изображений, из которой берется иконка типа объекта. |
Требуется акцепт при выгрузке во внешнюю систему |
Признак |
Указывает, что при выгрузке объектов данного типа во внешнюю систему требуется подтверждение. |
Создание и редактирование типа объекта#
Тип объекта можно создать через интерфейс справочника или из кода. Способ выбирается по тому, должна ли настройка остаться локальной в конкретной базе или поставляться вместе с конфигурацией модуля либо проекта.
Создание через интерфейс используется для локальных и проектных настроек: например, для настройки у заказчика, тестирования или разовой доработки, которая не входит в поставляемую конфигурацию.
Создание из кода используется, если тип объекта должен поставляться вместе с конфигурацией модуля или проекта.
При выборе способа создания учитывается общее правило переноса данных: если от данных зависит бизнес-логика, они должны поставляться через конфигурацию и устанавливаться программно, например через DataInstall. Если настройка не является обязательной для работы поставляемой логики, она может быть выполнена локально через интерфейс. Подробнее см. раздел Подход expand/contract при обновлении системы.
Создание через интерфейс#
Чтобы создать тип объекта из справочника типов объектов:
Нажмите Создать.
Заполните обязательные поля:
Код;
Наименование;
Класс.
При необходимости заполните дополнительные параметры: Подкласс, По умолчанию, Версионный, Жизненный цикл, Выборка карточки, Отображение карточки и другие поля.
Сохраните запись.
Тип объекта также можно создать из карточки нужного класса. Для этого откройте класс, перейдите на вкладку Типы объекта и создайте запись через стандартный интерфейс типов объектов. Порядок заполнения полей такой же: укажите Код, Наименование, Класс и при необходимости заполните дополнительные параметры.
После создания или изменения типа объекта учитывайте, что он может использоваться в бизнес-логике, настройках отображений, переходах состояний, печатных формах, правах доступа и проектных доработках.
Подробное описание разделов настройки, их полей, технической логики и примеров настройки см. в разделе Настройки типа объекта.
Создание из кода#
Пример создания подкласса и типа объекта:
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-методы. Примеры регистрации стандартных настроек см. в разделе Регистрация стандартных настроек из кода.
Подключение индивидуальных настроек типа объекта#
Настройки типа объекта могут быть расширены индивидуальными классами настроек. Такие настройки могут включать или отключать бизнес-логику, управлять фреймами, настраивать права доступа и выполнять другие действия в зависимости от поставленной задачи.
Индивидуальная настройка добавляется в список настроек типа объекта.
Путь: Настройка системы > Сущности > Типы объектов > Настройка детализации типов объектов.
Чтобы подключить индивидуальную настройку к классу:
Выберите необходимую настройку типа объекта.
Нажмите Детализация.
В нижнем фрейме нажмите Создать.
Выберите класс, для типов объектов которого должна отображаться настройка.
Нажмите Сохранить.
Одну настройку можно подключить к нескольким классам. Если список классов не заполнен, настройка отображается для типов объектов всех классов.
Для ограничения настройки по подклассам используется аналогичная последовательность: откройте детализацию выбранной настройки, в нижнем фрейме создайте запись и выберите нужный подкласс.
Если список подклассов не заполнен, ограничение по подклассам не применяется.
Подключение типа объекта к классу#
Примечание
Для супертипа document ссылка на тип объекта idObjectType создается автоматически.
Объекты класса типизируются классом-настройкой Btk_ObjectType. В этой настройке можно задать несколько типов для одного класса системы, а также назначить тип по умолчанию.
Тип объекта подключается к классу в интерфейсе Типы объектов. Для подключения нужно создать новую запись или отредактировать существующую и указать, для какого класса используется этот тип объекта. После этого тип становится доступен для объектов выбранного класса и может использоваться в настройках, бизнес-логике и интерфейсе.
Обязательным условием для типизации объектов является наличие в типизируемом классе атрибута-ссылки на Btk_ObjectType. Атрибут обязательно должен называться idObjectType. Это имя зарезервировано фреймворком и не может использоваться для других целей.
Пример объявления атрибута:
<attr name="idObjectType"
attribute-type="Long"
caption="Тип объекта"
order="50"
type="refObject"
isVisible="true"
ref.class="Btk_ObjectType"/>
Подкласс#
Подкласс — это логическая типизация для разделения бизнес-логики в рамках одного класса. Подклассы добавляются разработчиками, и на них можно завязываться в коде. Несколько типов объекта могут быть привязаны к одному подклассу.
Справочник Настройка системы > Сущности > Типы объектов > Подклассы используется для просмотра всех подклассов, зарегистрированных в системе.
В справочнике отображаются:
Код;
Наименование;
Суперкласс — класс, к которому привязан подкласс.
Подкласс указывается в интерфейсе Типы объектов. При создании новой записи типа объекта или редактировании существующей записи заполните поле Подкласс. Один и тот же подкласс может использоваться в нескольких типах объекта одного класса.
Примечание
Системные имена подклассов можно использовать в коде.
Общая схема классов и типов объекта
