Управление свойствами полей карточки на уровне БД

Коллеги, приветствую.

Можно ли, и, если да, то через какие таблицы, управлять свойствами полей карточки, такими как доступность для редактирования, видимость?

Нравится

10 комментариев

(Ответил по 3/х не посмотрев что ветка по bpmOnline)

А в 3.x где? Может в BPM похоже. Насколько я вижу, структура БД не особо изменилась, только префикс tbl_ у таблиц пропал. :)

В 7.X видимость и другие свойства полей, задаваемые при пользовательской настройке карточек, хранятся в таблице EditPageModification в виде последовательности действий (подвинул, скрыл, показал и т.д).
Например:

[{"type":"hide","name":"UsrNumber"},{"type":"hide","name":"UsrContact"},{"type":"add","value":{"type":0,"name":"UsrDescription","columnPath":"UsrDescription","dataValueType":1,"visible":true,"isDesigner":true},"containerName":"leftPanel","position":0},{"type":"move","name":"UsrDescription","position":0,"containerName":"baseElementsControlGroup"},{"type":"move","name":"UsrDescription","position":3,"containerName":"baseElementsControlGroup"}]

В 3.Х всё сложнее, в tbl_Service хранится XML-код карточек, ещё и в сжатом виде.

Ну и плюс - SysSchemaSource, но надо кастить в varchar(max), делать правки, а затем cast varbinary(max).
Но, это если вдруг нужно что-то поправить в базовых схемах.

Коллеги, насколько я смог понять смысл хранимого в этих таблицах, это не то.

Обрисую задачу, чтобы было понятно, что мне нужно.

При смене статуса в карточке какого-либо раздела, допустим контакты, для определённых ролей пользователей, становятся недоступными для редактирования определённые поля.

Хотел решить эту задачу, повесив триггер на апдейт, как наиболее простой для меня вариант.

Коллеги, насколько я смог понять смысл хранимого в этих таблицах, это не то.

Обрисую задачу, чтобы было понятно, что мне нужно.

При смене статуса в карточке какого-либо раздела, допустим контакты, для определённых ролей пользователей, становятся недоступными для редактирования определённые поля.

Хотел решить эту задачу, повесив триггер на апдейт, как наиболее простой для меня вариант.

Это нужно делать не на триггере, а на уровне карточки.

Это возможно решить средствами моделирования бизнес-процессов без написания кода дотНет?

Все верно - на PageLoadComplete, а также на событии изменения значения в поле "Статус" нужно реализовать пользовательскую логику:

if(UserInSomeRole(Connector.CurrentUser.ContactID)) {
Page.MyField.Enabled = false;
}
else {
Page.MyField.Enabled = true;
}

Дмитрий, спасибо. Буду пробовать.

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