Деталь внутри лукапа

Добрый день.

Как мне добавить в элемент лукапа деталь с выбором из справочника?

Прикрепленные файлы

Нравится

3 комментария
Лучший ответ

Пример из нашей базы знаний (стиль сохранён).



Как запилить справочник со страницей редактирования И деталью в нагрузку.

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.

В этой таблице никакие изменения я, конечно, не делал)

Вроде, устанавливали. Вот здесь есть обсуждение про неё 

https://community.terrasoft.ua/questions/sozdanie-detali-s-neskolkimi-tipami-i-vypadausim-spiskom-na-knopke-add-dla-bpm-75

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