Добрый день.
Как мне добавить в элемент лукапа деталь с выбором из справочника?
Нравится
Пример из нашей базы знаний (стиль сохранён).
Как запилить справочник со страницей редактирования И деталью в нагрузку.
1. Делаем деталь со страницей редактирования через мастер;
2. Создаем Schema of the Edit Page в конфигураторе, вставляем туда разметку, которую должна отображать наша страница редактирования детали:
define("UsrCompanyStructureTypePageV2", [],
function() {
return {
entitySchemaName: "UsrCompanyStructureType",
details: /**SCHEMA_DETAILS*/{
"CompanyStructureDetail": {
"schemaName": "UsrCompanyStructureMemberDetailV2",
"filter": {
"masterColumn": "Id",
"detailColumn": "UsrType"
}
}
}/**SCHEMA_DETAILS*/,
attributes: {},
methods: {},
rules: {},
userCode: {},
diff: /**SCHEMA_DIFF*/[
{
"operation": "insert",
"name": "Name",
"values": {
"layout": {
"colSpan": 12,
"rowSpan": 1,
"column": 0,
"row": 0,
"layoutName": "Header"
},
"bindTo": "Name"
},
"parentName": "Header",
"propertyName": "items",
"index": 0
},
{
"operation": "insert",
"name": "CompanyStructureDetail",
"values": {
"itemType": 2
},
"parentName": "GeneralInfoTab",
"propertyName": "items",
"index": 1
}
]/**SCHEMA_DIFF*/
};
});3. Регистрируем страницу редактирования в БД через процедуру:
EXEC [dbo].[tsp_RegisterPage]
@ModuleEntityName = N'UsrCompanyStructureType ',
@PageName = N'UsrCompanyStructureTypePageV2',
@TypeColumnUId = NULL,
@TypeValue = NULL,
@AddMenuCaptionRus = 'Добавить',
@AddMenuCaptionEng = 'Add',
@CardHeaderCaptionRus = NULL,
@CardHeaderCaptionEng = NULLЕсли пропадает кнопка Добавить надо создать в SysModuleEditLcz с текстом что будет отображаться на кнопке:
insert into SysModuleEditLcz (id, CreatedOn, RecordId, ColumnUId, SysCultureId, Value)
select newid(), getdate(), 'D716F900-239E-44F3-98A8-DBBF3517FB9A', 'A19BF4BF-E22B-49B5-B6E0-918FF6290020', 'A5420246-0A8E-E111-84A3-00155D054C03', 'New'RecordID – ID записи из SysModuleEdit нашей зарегистрированной страницы. Можно найти по CreatedOn (т.к. регистрация страницы по идее есть последняя операция то это будет последняя запись в таблице) или через имя схемы объекта по связи SysModuleEntityId – SysEntitySchemaUId из SysSchema
ColumnID – какая-то внутренняя константа, откуда берется не вникал
SysCultureID – ID языка на которой будет отображаться запись
Value – сам текст на кнопке
5. В результате в справочнике появляется ещё одна кнопка для открытия выбранной записи, которая открывает нашу страницу. С деталью можно работать как обычно.
Пример из нашей базы знаний (стиль сохранён).
Как запилить справочник со страницей редактирования И деталью в нагрузку.
1. Делаем деталь со страницей редактирования через мастер;
2. Создаем Schema of the Edit Page в конфигураторе, вставляем туда разметку, которую должна отображать наша страница редактирования детали:
define("UsrCompanyStructureTypePageV2", [],
function() {
return {
entitySchemaName: "UsrCompanyStructureType",
details: /**SCHEMA_DETAILS*/{
"CompanyStructureDetail": {
"schemaName": "UsrCompanyStructureMemberDetailV2",
"filter": {
"masterColumn": "Id",
"detailColumn": "UsrType"
}
}
}/**SCHEMA_DETAILS*/,
attributes: {},
methods: {},
rules: {},
userCode: {},
diff: /**SCHEMA_DIFF*/[
{
"operation": "insert",
"name": "Name",
"values": {
"layout": {
"colSpan": 12,
"rowSpan": 1,
"column": 0,
"row": 0,
"layoutName": "Header"
},
"bindTo": "Name"
},
"parentName": "Header",
"propertyName": "items",
"index": 0
},
{
"operation": "insert",
"name": "CompanyStructureDetail",
"values": {
"itemType": 2
},
"parentName": "GeneralInfoTab",
"propertyName": "items",
"index": 1
}
]/**SCHEMA_DIFF*/
};
});3. Регистрируем страницу редактирования в БД через процедуру:
EXEC [dbo].[tsp_RegisterPage]
@ModuleEntityName = N'UsrCompanyStructureType ',
@PageName = N'UsrCompanyStructureTypePageV2',
@TypeColumnUId = NULL,
@TypeValue = NULL,
@AddMenuCaptionRus = 'Добавить',
@AddMenuCaptionEng = 'Add',
@CardHeaderCaptionRus = NULL,
@CardHeaderCaptionEng = NULLЕсли пропадает кнопка Добавить надо создать в SysModuleEditLcz с текстом что будет отображаться на кнопке:
insert into SysModuleEditLcz (id, CreatedOn, RecordId, ColumnUId, SysCultureId, Value)
select newid(), getdate(), 'D716F900-239E-44F3-98A8-DBBF3517FB9A', 'A19BF4BF-E22B-49B5-B6E0-918FF6290020', 'A5420246-0A8E-E111-84A3-00155D054C03', 'New'RecordID – ID записи из SysModuleEdit нашей зарегистрированной страницы. Можно найти по CreatedOn (т.к. регистрация страницы по идее есть последняя операция то это будет последняя запись в таблице) или через имя схемы объекта по связи SysModuleEntityId – SysEntitySchemaUId из SysSchema
ColumnID – какая-то внутренняя константа, откуда берется не вникал
SysCultureID – ID языка на которой будет отображаться запись
Value – сам текст на кнопке
5. В результате в справочнике появляется ещё одна кнопка для открытия выбранной записи, которая открывает нашу страницу. С деталью можно работать как обычно.
Владимир Соколов,
Большое спасибо за информацию. Есть один момент. У меня отсутствует хранимка с таким названием. Постарался найти запрос на создание, но те, что удалось откопать, невалидны из-за измененных столбцов в таблице SysModuleEditLcz.
В этой таблице никакие изменения я, конечно, не делал)
![]()
Вроде, устанавливали. Вот здесь есть обсуждение про неё