Ссылка¶
Описание¶
Ссылка - тип данных, который хранит простое значение и которое интерпретируется системой как ссылка на ключевой атрибут объекта другого класса. Данный объект может быть объектом любого класса, включая исходный. При указании класса-родителя есть возможность создавать объекты родительского и дочерних классов. Ссылки вместе с объектом грузятся по семантике, заданной в мете класса-ссылки или атрибута-ссылки.
Отображаемые значения в атрибуте ссылочного типа выводятся в соответствии с семантикой, указанной в ссылочном классе этого атрибута.
Возможность замены объекта по обратной ссылке определяется параметром nullable
, связывающего ссылочный атрибут. При замене объекта связь будет потеряна, и объект по ссылке будет удален при попытке изменить связь из коллекции с обратной ссылкой.
Типы связей, реализуемые типом «Ссылка»:¶
Ссылочный тип с точки зрения используемых полей атрибутивной части меты классов:
один-ко-многим
- классическая связь дочернего объекта на родительский объект. Необходимо определить ссылку и указать класс вложенного элемента - связи создаются при помещении в ссылку и хранятся как отдельная сущность в БД.один-к-одному
- аналогична связи один-ко-многим, означает наличие ссылки и вложенного объекта с ссылкой-связкой на исходный объект. В ссылке необходимо указать ссылку-связку, а у нее указать ссылочный атрибут вложенного объекта по которому формируется связь. Обязательно в атрибуте-ссылке указать свойство"unique": true
.
Ссылка в формате JSON¶
Пример¶
{
"orderNumber": 20,
"name": "ssylka",
"caption": "Ссылка",
"type": 13,
"size": null,
"decimals": 0,
"allowedFileTypes": null,
"maxFileCount": 0,
"nullable": true,
"readonly": false,
"indexed": false,
"unique": false,
"autoassigned": false,
"hint": null,
"defaultValue": null,
"refClass": "collRefCatalog@develop-and-test",
"itemsClass": "",
"backRef": "",
"backColl": "",
"binding": "",
"semantic": null,
"selConditions": [],
"selSorting": [],
"selectionProvider": null,
"indexSearch": false,
"eagerLoading": false,
"formula": null
}
Режимы отображения атрибута типа «Ссылка» на форме:¶
Режимы отображения задаются в мете представления. Могут определяться при помощи свойства "mode"
либо задаваться шаблоном в свойстве "options"
.
- «mode»: 0 - отображение только семантики объекта по ссылке
- «mode»: 1 - отображение ссылки на форму объекта по ссылке
- «mode»: 3 - иерархический поиск объекта
- «mode»: 4 - уточняющий поиск объекта
Обратные ссылки¶
Обратная ссылка в контексте ссылок получается следующим образом:
- Создаётся атрибут с типом 13, указанием ссылочного класса
refClass
и указанием свойства"backRef"
- куда записывается код атрибута из ссылочного класса. - В ссылочном классе должен быть атрибут-ссылка, ссылающийся на исходный класс и имеющий свойство
"unique": true
.
Обратная ссылка в формате JSON¶
Пример¶
{
"orderNumber": 30,
"name": "backref",
"caption": "Обратная ссылка",
"type": 13,
"size": null,
"decimals": 0,
"allowedFileTypes": null,
"maxFileCount": 0,
"nullable": true,
"readonly": false,
"indexed": false,
"unique": false,
"autoassigned": false,
"hint": null,
"defaultValue": null,
"refClass": "otorbrRef@develop-and-test",
"itemsClass": "",
"backRef": "ref",
"backColl": "",
"binding": "",
"semantic": "data",
"selConditions": [],
"selSorting": [],
"selectionProvider": null,
"indexSearch": false,
"eagerLoading": true,
"formula": null
}
Внимание:¶
"type": 13
- тип атрибута «Ссылка»"refClass"
- название класса, объекты которого могут хранить свои идентификаторы в ссылке и, таким образом, формировать связь к объекту по идентификатору."backRef"
- указывается имя атрибута, который принадлежит классу, заданному в свойстве"refClass"
. Атрибут должен иметь тип «Ссылка» и ссылку на исходный класс.- При указании класса-родителя есть возможность создавать объекты родительского и дочерних классов.
- Ссылки вместе с объектом грузятся по семантике, заданной в мете класса-ссылки или атрибута-ссылки.
Пример¶
Employee: {
property: {
aaa: {
refClass: Post,
backRef: bbb,
...
},
...
}
}
Post: {
property: {
bbb: {
refClass: Employee,
...
},
...
}
}