Добрый день.
Как мне добавить в элемент лукапа деталь с выбором из справочника?
Нравится
Пример из нашей базы знаний (стиль сохранён).
Как запилить справочник со страницей редактирования И деталью в нагрузку.
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.
В этой таблице никакие изменения я, конечно, не делал)
Вроде, устанавливали. Вот здесь есть обсуждение про неё