Карточки объекта в зависимости от типа объекта в BPMonline 7
Есть задача в BPMonline 7 создать карточки полиграфических продуктов с различными техническими параметрами в зависимости от типа продукта, как это реализовано в разделе "Активности". В BPMonline 5 это делалось довольно легко через "Рабочие места". Но в новом интерфейсе понятие "Рабочих мест" упразднено, и теперь непонятно как это реализовать. Кто нибудь уже попробовал сделать что либо наподобие этого?
Нравится
Здравствуйте, Вохид!
В новом UI аналогичная ситуация, есть отдельные страницы для разных типов активностей: EmailPage, ActivityPage, CallPage в пакете NUI. Функциональность открытия отдельных карточек редактирования реализована на уровне ядра и действует в зависимости от соответствующих записей в базе данных, которые соответствуют зарегистрированным карточкам в рабочих местах. добавить эти записи можно запросом вручную.
Анна здравствуйте!
Можете привести детальный пример? Например в коробочной версии нет раздела продуктов, добавляем сам раздел в меню, затем создаем карточки продуктов и тд. Что за запрос надо вводить? После ввода запроса надо готовить дизайн карточки или до этого?
Здравствуйте, Вохид!
Информация о зарегистрированных карточках раздела хранится в таблице SysModuleEdit. В данной таблице строится связь объекта раздела и карточки редактирования, а также указывается тип, если используются разные карточки для разных типов записей.
Признак использования разных карточек в зависимости от типа устанавливается в таблице SysModuleEntity в колонке TypeColumnUid - если значение есть, указанная колонка используется как источник значения.
Таким образом, для того, чтобы задать разные карточки редактирования для разных записей, Вам необходимо:
1. Открыть метаданные объекта, получить из них идентификатор колонки Типа, а также значения в справочнике типов;
2. Добавить запросом в БД запись в SysModuleEntity;
3. Добавить запросом в БД записи для SysModuleEdit;
Спасибо Анна,
Я попросил тех поддержку прислать полную инструкцию.
Здравтвуйте, Вохид!
Вопрос рассматривается в рамках инцидента 0163662, решение будет предоставлено в виде письма.
А можно инструкию тут ? А то думаю многим будет интересно что бы суппорт лишний раз не беспокоить
Добрый день,
Необходимо создать две(или более) страницы редактирования "Схема модели представления карточки". В dependencies добавить объект, поля из которого в ней будут использоваться.
Далее, написать в редакторе JS код (по аналогии с другими карточками).
Опубликовать страницу.
Проделать тоже самое для второй карточки.
И затем зарегистрировать эти карточки в системе. Как зарегистрировать - смотрите во вложении.
registraciya_razdela_i_kartochki_redaktirovaniya_v_nui.docx
ХП для регистрации карточки.
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].[tsp_RegisterPage] @ModuleEntityName NVARCHAR(255), @PageName NVARCHAR(255), @TypeColumnUId NVARCHAR(255), @TypeValue NVARCHAR(255), @AddMenuCaptionRus NVARCHAR(255), @AddMenuCaptionEng NVARCHAR(255), @CardHeaderCaptionRus NVARCHAR(255), @CardHeaderCaptionEng NVARCHAR(255) AS BEGIN SET NOCOUNT ON; declare @SysModuleEntityId NVARCHAR(255); set @SysModuleEntityId = (select top 1 Id from SysModuleEntity where SysEntitySchemaUId = (select top 1 [UId] from SysSchema where Name = @ModuleEntityName)) IF (@SysModuleEntityId IS NULL) BEGIN -- 1 Этап Создание записи SysModuleEntity INSERT into SysModuleEntity(SysEntitySchemaUId, TypeColumnUId) values((SELECT TOP 1 [UId] FROM SysSchema WHERE Name = @ModuleEntityName), @TypeColumnUId) END ELSE BEGIN update SysModuleEntity set TypeColumnUId = @TypeValue where Id = @SysModuleEntityId END -- 3 Этап Создание записи SysModuleEdit insert INTO SysModuleEdit (SysModuleEntityId,UseModuleDetails,CardSchemaUId, TypeColumnValue) VALUES ((SELECT Id from SysModuleEntity where SysEntitySchemaUId = (SELECT TOP 1 [UId] FROM SysSchema WHERE Name = @ModuleEntityName)), 1,(select TOP 1 UId from SysSchema where Name = @PageName), @TypeValue) if (@AddMenuCaptionRus <> '') begin -- 7 if (exists (select 1 from SysCulture where Id = '1A778E3F-0A8E-E111-84A3-00155D054C03')) begin insert into SysModuleEditLcz (RecordId,ColumnUId,SysCultureId,Value) values ((select Id from SysModuleEdit where CardSchemaUId = (select TOP 1 UId from SysSchema where Name = @PageName) and TypeColumnValue = @TypeValue), 'A19BF4BF-E22B-49B5-B6E0-918FF6290020', '1A778E3F-0A8E-E111-84A3-00155D054C03', @AddMenuCaptionRus); end -- 8 if (exists (select 1 from SysCulture where Id = 'A5420246-0A8E-E111-84A3-00155D054C03')) begin insert into SysModuleEditLcz (RecordId,ColumnUId,SysCultureId,Value) values ((select Id from SysModuleEdit where CardSchemaUId = (select TOP 1 UId from SysSchema where Name = @PageName) and TypeColumnValue = @TypeValue), 'A19BF4BF-E22B-49B5-B6E0-918FF6290020', 'A5420246-0A8E-E111-84A3-00155D054C03', @AddMenuCaptionEng); end end if (@CardHeaderCaptionRus <> '') begin -- 7 if (exists (select 1 from SysCulture where Id = '1A778E3F-0A8E-E111-84A3-00155D054C03')) begin insert into SysModuleEditLcz (RecordId,ColumnUId,SysCultureId,Value) values ((select Id from SysModuleEdit where CardSchemaUId = (select TOP 1 UId from SysSchema where Name = @PageName) and TypeColumnValue = @TypeValue), '55132174-2B96-4E0A-830C-B8E952B12C45', '1A778E3F-0A8E-E111-84A3-00155D054C03', @CardHeaderCaptionRus); end -- 8 if (exists (select 1 from SysCulture where Id = 'A5420246-0A8E-E111-84A3-00155D054C03')) begin insert into SysModuleEditLcz (RecordId,ColumnUId,SysCultureId,Value) values ((select Id from SysModuleEdit where CardSchemaUId = (select TOP 1 UId from SysSchema where Name = @PageName) and TypeColumnValue = @TypeValue), '55132174-2B96-4E0A-830C-B8E952B12C45', 'A5420246-0A8E-E111-84A3-00155D054C03', @CardHeaderCaptionEng); end end END GO
Это для какой версии ? у меня отсутствует таблица SysModuleEditLcz
Разобрался, в версии 7.0.0.167 SysModuleEditLcz что таблице нету и не нужно создавать, вместо пункта 7, 8 нужно просто добавить англ и рос значение в таблице [SysModuleEdit] в филды [ActionKindCaption]- отображаемое значение и [ActionKindName] - анг название
ХП подготовлена для 7.0.1.
Для 7.0.0 используйте скрипт (на примере регистрации раздела Обращения):
insert into SysModuleEntity (SysEntitySchemaUId) select [UId] from SysSchema where Name = 'Case' insert into SysModuleEdit (SysModuleEntityId, CardSchemaUId, ActionKindCaption, ActionKindName) values ((select Id from SysModuleEntity where SysEntitySchemaUId in (select UId from SysSchema where Name = 'Case')), (select UId from SysSchema where Name = 'CasePage'), 'Добавить обращение', 'Case') insert into SysModule (Caption, SysModuleEntityId, FolderModeId, GlobalSearchAvailable, HasAnalytics, HasActions, Code, ModuleHeader, CardSchemaUId, SectionModuleSchemaUId, SectionSchemaUId) values ('Обращения', (select Id from SysModuleEntity where SysEntitySchemaUId in (select UId from SysSchema where Name = 'Case')), 'B659D704-3955-E011-981F-00155D043204', 1,1,1,'Case', 'Список обращений', (select [UId] from SysSchema where Name = 'CasePage'),'47BEF7B5-5E02-4699-A607-D4E39D0A19D0',(select [UId] from SysSchema where Name = 'CaseSection')) insert into SysModuleLcz (RecordId, ColumnUId, SysCultureId, Value) values ((select Id from SysModule where Code = 'Case'), '7B904E78-84BF-408C-A7A1-1287E66837D3', '1A778E3F-0A8E-E111-84A3-00155D054C03', 'Список обращений') insert into SysModuleLcz (RecordId, ColumnUId, SysCultureId, Value) values ((select Id from SysModule where Code = 'Case'), '3DA3C3B2-02FB-4CCA-80C3-7946D4E8F565', '1A778E3F-0A8E-E111-84A3-00155D054C03', 'Обращения') insert into SysModuleInSysModuleFolder (SysModuleId, SysModuleFolderId) values ((select Id from SysModule where Code = 'Case'), 'F330F0C2-3EE4-4A73-9AC9-8439543CA19B')
Предварительно, обязательно, сделайте бекап базы, если ошибетесь - вручную много чистить.