Технические вопросы
7.x

Как устанавливается связь между деталью и ее страницей редактирования ?

Как устанавливается связь между деталью и ее страницей редактирования ?
Не удается найти упоминаний в исходном коде или в какой либо записи в БД, что явным образом бы связывало деталь и ее страницу редактирования, неужели связь происходит по имени схемы ?

Схема детали указывается при объявлении детали в схеме карточки куда она добавляется, там же указывается и целевой объект БД, мастер-колонки и т.д.
В таблице SysDetails существует запись которая связывает конкретную деталь ее наименование и опять же объект детали.
Где-же связь со страницей редактирования ?

Нравится

4 комментария

"Севостьянов Илья Сергеевич" написал:Как устанавливается связь между деталью и ее страницей редактирования ?

sql запросом

Ну в смысле SQL-запросом.
Вот деталь CustomDetail для объекта CustomObject:
1) Создаем схему детали - CustomDetailScheme
[javascript]
define("СustomDetailScheme", [], function() {
return {
entitySchemaName: "CustomObject",
details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/,
methods: {}
};
});

[/javascript]
2) Создаем страницу редактирования CustomObjectAddPage ([color=red]это я так хотел бы ее назвать[/color], мастер создает CustomObject1Page)
[javascript]
define("CustomObjectAddPage", [], function() {
return {
entitySchemaName: "CustomObject",
details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
diff: /**SCHEMA_DIFF*/[
{
"operation": "insert",
"name": "SomeField4e5d48ba-e8d3-4e7f-936d-cbf296d05c99",
"values": {
"layout": {
"colSpan": 24,
"rowSpan": 1,
"column": 0,
"row": 0,
"layoutName": "Header"
},
"bindTo": "SomeField"
},
"parentName": "Header",
"propertyName": "items",
"index": 0
}
]/**SCHEMA_DIFF*/,
methods: {},
rules: {}
};
});
[/javascript]
3) В некой схеме карточки, например в схеме Контакта - в замещающем объекте объявляем добавление на страницу, в синтаксисе которого определяется объект детали и ее схема, а так же колонки по которым запись текущей карточки объединяется с записью в объекте детали:
[javascript]
define("ContactPageV2", [],
function() {
return {
entitySchemaName: "Contact",
attributes: {},
details: {
"myCustomDetail": {
"schemaName": "СustomDetailScheme",
"filter": {
"detailColumn": "Contact",
"masterColumn": "Id"
}
}
},
diff: [
{
"operation": "insert",
"name": "myCustomDetail",
"values": {
"itemType": 2,
"markerValue": "added-detail",
"visible": true
},
"parentName": "GeneralInfoTab",
"propertyName": "items",
"index": 3
}
],
methods: {}
};
}
);
[/javascript]
Саму же деталь, называем "КастомнаяДеталь" и регистрируем
запись в SysDetail в которой собственно и сопоставляются:
"Заголовок" (Caption) к UId записям в таблице SysSchema - схемы детали (DetailSchemaUId) и схемы объекта детали (EntitySchemaUId)

Связи схемы детали и объекта детали - аш в 3-х местах, и ни единого упоминания страницы редактирования для объекта детали ни в коде ни в БД.
Каким же образом созданная мастером CustomObject1Page работает, а стоит создать схему мне самостоятельно и назвать ее CustomObjectAddPage то каким образом мне установить ее как странице редактирования для детали - ни в коде ни в БД я не нашел упоминаний, мысль только одна - что схема карточки редактирования объекта детали выбирается по имени, т.е. для детали с объектом CustomObject бедт осуществляться поиск схемы CustomObject[цифра]Page .
Так что ли получается ?

"Севостьянов Илья Сергеевич" написал:Так что ли получается ?

Нет, связь происходит через таблицу SysModuleEdit через развязочный объект SysModuleEntity. К примеру:

Вот объект:
SELECT * FROM SysSchema WHERE Name = 'Opportunity' AND ExtendParent = 0
запоминаем его UId --ae46fb87-c02c-4ae8-ad31-a923cdd994cf

Вот его развязочная запись:
SELECT * FROM SysModuleEntity WHERE SysEntitySchemaUId = 'ae46fb87-c02c-4ae8-ad31-a923cdd994cf'
Запоминаем Id --a4e7bf65-7380-e011-afbc-00155d04320c

Ну и вот страница(цы) редактирования:
SELECT * FROM SysModuleEdit WHERE SysModuleEntityId = 'a4e7bf65-7380-e011-afbc-00155d04320c'

Вот собственно в SysModuleEdit и можно подменить страницу.

Спасибо, вот теперь ситуация немного прояснилась, там же и UId миникарточки и еще мног овсего интересного :)

Показать все комментарии