Регистрация страницы редактирования объекта
Добрый день.
Подскажите в каких таблицах должна быть зарегистрирована страница редактирования объекта?
У меня есть справочник, для него создаётся страница редактирования. Я понимаю что можно создать деталь для объекта а затем использовать её для справочника. Меня интересует вопрос как выполнить действия самостоятельно через sql.
Для своего справочника я зарегистрировал страницу в SysModuleEntity и SysModuleEdit а где ещё?
Нравится
Здравствуйте, Евгений!
Для созданного справочника регистрировать страницу редактирования необходимо только в таблицах SysModuleEntity и SysModuleEdit.
Так же Вы можете зарегистировать по принципу описанному в статье Академии: https://academy.terrasoft.ru/documents/technic-sdk/7-9/sozdanie-detali-…
Добрый день.
Страницу я зарегистрировал но она не открывается. в консоли получаю ошибку: Uncaught Terrasoft.ItemNotFoundException: Элемент с ключом null Не существует.
В процессе поиска столкнулся с тем что entityStructure не содержит объекта с которым я работаю. Может подскажете где искать?
Видимо не все колонки заполнили корректно, вот вам более подробное описание таблиц SysModuleEntity и SysModuleEdit, а так же посмотрите по примеру и подобию значения этих таблиц для других сущностей:
Таблица SysModuleEdit:
Данная таблица описывает связь объектов конфигурации со страницами их редактирования.
К примеру, будь то деталь или раздел. К примеру объекта, «Активность», у неё может быть одна или несколько страниц редактирования, вот они как раз описываются в этой таблице. То есть тут задается связь «Вот объект» - «А вот схема страницы, которая будет отображать содержимое этого объекта».
Основные колонки этой таблицы это:
SysModuleEntityId – Ссылка на развязочную таблицу SysModuleEntity о которой будет ниже. По сути, в ней (в развязочной таблице SysModuleEntity) будет описана ссылка на конкретно объект «Активность» (на схему объекта активности). А все схемы, это таблица SysSchema.
TypeColumnValue – если колонка пуста, значит страниц редактирования у этого объекта одна. Если TypeColumnValue заполнена, то это Id типа по которому идет разграничение страниц редактирования. К примеру, разграничение страниц редактирования Активности может быть по колонке Тип (ActivityType), тогда Id именно этой таблицы (ActivityType) будут записаны в TypeColumnValue. Разграничение может быть по любой ссылочной колонке объекта, но только по одной в один момент времени. Обычно это все же «Тип».
CardSchemaUId – ссылка на UId таблицы SysSchema, а именно на схему страницы редактирования. К примеру, на UId схемы ActivityPageV2, но обязательно на ту строчку SELECT * FROM SysSchema WHERE Name = 'Activity' где AND ExtendParent = 0 Тоесть самая базовая, самая родительская схема карточки. То же касается любых ссылок на SysSchema, всегда ссылаются на самую родительскую схему (ExtendParent = 0), что бы работало наследование.
Ну и оставшиеся текстовые колонки, всего лишь текстовые представления карточек и действий.
SysPageSchemaUId ссылка на устаревшие aspx карточки (SysSchema), на данный момент для новых сущностей не используются.
MiniPageSchemaUId нужна только для создания мини-карточек, о чем написано в соответствующей статье:
https://academy.terrasoft.ru/documents/technic-sdk/7-8/sozdanie-mini-ka…
Таблица SysModuleEntity:
Просто развязочная таблица для SysModuleEdit, итоговая связь выглядит так
SysSchema (схема объекта) – SysModuleEntity – SysModuleEdit - SysSchema (схема(ы) карточек)
Основные колонки этой таблицы это:
SysEntitySchemaUId – ссылка на таблицу SysSchema, а именно на схему объекта, к примеру, на UId вот этой записи: SELECT * FROM SysSchema WHERE Name = 'Activity' AND ExtendParent = 0
TypeColumnUId – заполняется для тех случаев, когда собственно есть много страниц редактирования для одного объекта, именно тут указывается UId колонки из метаданных объекта по которому идет разграничение, тесно связана идеологически с колонкой TypeColumnValue таблицы SysModuleEdit.
Спасибо за описание. Проблема была в том, что я ссылался на унаследованный объект.