ОБСУЖДЕНИЕ

Запрет на редактирование полей

7 ответов 9 тыс.
AI-выжимка обсуждения скоро
Статус
Закрыто для дальнейших ответов.
Уважаемые эксперты возник такой вопрос

Можно ли запретить редактирование определённых полей в документе для конкретных пользователей или ролей?
 
Конечно же можно. В Input Enabled необходимого поля пишешь:

Код:
@IsMember( "[Administrator]"; @UserRoles ) |
(
@Contains(
@GetProfileField(
[i]"<Имя поля содержащего список полей доступных для редактирования пользователю>"; [/i] 
Form; 
@UserName
);
@ThisName) &
@Contains(@GetField("[b]AllowedFieldsForEdit[/b]");@ThisName)
)

AllowedFieldsForEdit - поле находящееся в текущей форме и содержащее список полей доступных для редактирования
 
Lexa-xa
Гм.... проверил твой способ - 0. Как редактировал поля, так и продолжаю редактироваться. Вписал в Input Enabled @IsMember( "[Administrator]"; @UserRoles ) (нет у меня такой роли), а редактировать могу

Если я правильно понял вопрос, то я скрываю поля - одно редактируемое, другое CFD
 
<!--QuoteBegin-fedotxxl+16:05:2006, 15:09 -->
<span class="vbquote">(fedotxxl @ 16:05:2006, 15:09 )</span><!--QuoteEBegin-->Гм.... проверил твой способ - 0. Как редактировал поля, так и продолжаю редактироваться. Вписал в Input Enabled @IsMember( "[Administrator]"; @UserRoles ) (нет у меня такой роли), а редактировать могу
[snapback]35933" rel="nofollow" target="_blank[/snapback]​
[/quote]
Читай хелп:
Input Enabled only works when the field style is set to Native OS.
 
Хочу заметить.
Бывают такие ситуации, что не работает InputEnabled ни прикаких обстоятельствах. Поэтому бывает полезно вставлять в событие PostModeChange действие @Command([ViewRefreshFields])
Такие проблемы появлялись при работе с InputEnabled в DialogBox.
 
Уважаемые эксперты возник такой вопрос

Можно ли запретить редактирование определённых полей в документе для конкретных пользователей или ролей?

Если ваши поля на форме сгруппированы, то помещайте их в раздел с управляемым доступом (мне больше нравятся разделы типа Computed for Display - в них как раз и можно обработать текущего пользователя).
Далее в свойствах раздела для всех случаев указываете Auto-Expand Section (внимание! - это 8 вариантов)
Теперь нужно скрыть заголовок раздела.

И наконец - экспериментируйте с доступом, как вам угодно!
 
Если ваши поля на форме сгруппированы, то помещайте их в раздел с управляемым доступом (мне больше нравятся разделы типа Computed for Display - в них как раз и можно обработать текущего пользователя).
Далее в свойствах раздела для всех случаев указываете Auto-Expand Section (внимание! - это 8 вариантов)
Теперь нужно скрыть заголовок раздела.

И наконец - экспериментируйте с доступом, как вам угодно!
Самое простое - формулы видимости на форме (т.е. скрывать поле, если !(@UserRoles*="[Editor]":"[Manager]") ), заменяя его при необходимости на computed-text или CFD-поле.
Но точно так же, как и секции - это не защита, а интерфейсные примочки. Т.е. "взламываются" при наличии дизайнера и минимальных знаний.
Реальная защита - ACL, READERS/AUTHORS и шифрование. Возможность их применения должна закладываться еще при проектировании, наложить их на уже работающую прикладуху удается далеко не всегда.
 
Статус
Закрыто для дальнейших ответов.

Статистика тем

Создано
Hedg,
Последний ответ от
Constantin A Chervonenko,
Ответы
7
Просмотры
9 001