Новое рабочее место на базе существующего раздела. Как сделать кастом колонки в реестре
Добрый день
Есть задача на основе существующего объекта "договоры" сделать новое рабочее место с разделом, где колонки будут другие в реестре по умолчанию.
Я как понял такая связь:
Рабочее место-Раздел-Реестр
Моя идея динамически подменять в разделе страницу реестра в зависимости от параметра.
Сейчас в private метода UpdateGrid есть:
Grid.PageSchemaUId = new Guid("dbb0c287-e452-4d51-99c1-6cd55f1fe1a8");
Хочу PageSchemaUId динамически ставить.
На какое событие лучше всего это делать?
Или есть проще варианты?
Нравится
Здравствуйте, Антон!
Подменять страницу реестра нужно в обработчике события "Init". Как вариант, можно создать новую страницу раздела, унаследовав ее от базовой страницы раздела договоров, в ней поменять страницу реестра на свою, и при регистрации раздела в рабочем месте уже использовать свою страницу раздела.
Спасибо с Init сработало.
Сейчас другая проблема, один и тот же раздел будет показываться в разных рабочих места. И надо в зависимости от рабочего места, разный реестр показывать.
Вопрос как можно программно определить текущее рабочее место, в котором открыт раздел?
Антон, посмотрите "ScriptFindSelectedModuleSubProcess" в странице "MainPage". Там есть получение вкладки рабочего места:
var entitySchemaManager = Page.Schema.SchemaManagerProvider.GetManager("EntitySchemaManager") as Terrasoft.Core.Entities.EntitySchemaManager; var entitySchemaQuery = new EntitySchemaQuery(entitySchemaManager, "SysModule"); EntitySchemaQueryColumn pageColumn = entitySchemaQuery.AddColumn("SysPageSchema.Id"); entitySchemaQuery.Filters.Add(entitySchemaQuery.CreateFilterWithParameters(FilterComparisonType.Equal, "Id", SelectedModuleId.ToString())); var modulesCollection = entitySchemaQuery.GetEntityCollection(userConnection); if (modulesCollection.Count > 0) { var selectedPageSchemaId = modulesCollection[0].GetColumnValue(pageColumn.Name); var workspaceId = Page.MultiLevelTabs.ActiveTab.Tag.Split('|')[0]; ....
Думаю, это должно подойти.
Спасибо, разобрался.
Еще один вопрос:
Пытаюсь настроить колонки в дизайнере у реестра DataSource, но в нем не отображаются подчиненные объекты, а мне нужна колонка из него.
При этом, когда делаю настройку реестра через настроить колонки, там они есть.
Как то можно отобразить подчиненные объекты в дизайнере у DataSource ? Или как можно добавить в DataSource колонку из подчиненного объекта?
"Андрей Каспаревич" написал:Антон,
1:С уважением,
Каспаревич Андрей
Эксперт 3-й линии поддержки
Это понятно, я не об этом)
У datasource нет выбора колонок подчиненных объектов (напр Мониторинг).
Елси я правильно понял посыл Ваших скриншотов, то Мониторинг - это колонка обратной связи, поэтому ее нельзя вытащить в реестр. Как Вы себе представляете должен выглядеть реестр, если для одной записи главного объекта будет 1000 записей связанного?
"Андрей Каспаревич" написал:Елси я правильно понял посыл Ваших скриншотов, то Мониторинг - это колонка обратной связи, поэтому ее нельзя вытащить в реестр. Как Вы себе представляете должен выглядеть реестр, если для одной записи главного объекта будет 1000 записей связанного?
С уважением,
Каспаревич Андрей
Эксперт 3-й линии поддержки
Я предполагал поведение, как если настраивать не через дизайнер колонки, т.е. идет агрегация данных(max, min, avg и т.п.).
Антон, такого поведения не предусмотрено базовой логикой для источника данных страницы.
Если Вам нужно эти данные использовать в коде, то их можно легко получить с помощью EntitySchemaQuery, например, или класса Select.
"Андрей Каспаревич" написал:Антон, такого поведения не предусмотрено базовой логикой для источника данных страницы.
Если Вам нужно эти данные использовать в коде, то их можно легко получить с помощью EntitySchemaQuery, например, или класса Select.С уважением,
Каспаревич Андрей
Эксперт 3-й линии поддержки
А можете подсказать пример реестра в базовой конфигурации где DataSource определялся на основе EntitySchemaQuery?
Антон, источник данных не определяется на основе EntitySchemaQuery. С помощью EntitySchemaQuery Вы можете считать данные из БД. Зачем они Вам непосредственно в источнике данных?
Я думал у DataSource страницы на основе базовой страницы реестра как то можно привязать к EntitySchemaQuery.
Ок не будем углубляться) Сейчас я нашел решение на базе объектов-представлений и их уже к DataSource цепляю.
Спасибо.