Скрытие полей

vincent_vega

Well-Known Member
Lotus team
02.04.2005
168
1
#1
Расскажите, пожалуйста, как спрятать в зависимости от роли пользователя некоторые поля в форме.

Если прятать абзац, используя параметр “Hide paragraph if formula is true”, то при просмотре абзац не отображается, но если зайти в свойства документа, на вкладку «Fields», то содержимое скрытых полей легко можно прочитать.
 

Вложения

D

Domino_Designer

Гость
#4
Для: usb

не ... два.

коллеги меня поправят, если что, но, имхо, при скрытии дизайна свойства полей пропадают из этого окошка.

предложеный тобой вариант более жесткий :о)
 
U

usb

Гость
#5
для Domino_Designer:

исчезнут? ну да, как же! :(
достаточно скопировать документ в любую БД и, о чудо! все поля опять доступны по alt+Enter :(

нет, скрыть поля в документе можно только применив шифрование этих полей.

Вобще в конечном итоге все зависит от проектирования приложения, обычно поля которые надо скрывать выносятся в отдельный документ доступ к которому определяется полями типа reader.

для vincent_vega:
если все таки решишься шифровать, то в дизайнере в св-ах поля в разделе Security Options выбрать значение "Enable Encryption for this field..." при этом рамочка поля станет красной. Также в форме можно завести вычисляемое поле "SecretEncryptionKeys" куда прописывать наименование ключа шифрования. Тогда выбранные поля во всех документах созданных по этой форме будут зашифрованными.

p.s. ест-но, что этот ключ должен существовать в Id-нике у тебя и у тех людей, что должны видеть информацию в этом поле. также надо учесть, что при попытке открыть документ людьми не имеющими ключа, будет выдаваться предупреждение и документ им нельзя будет изменять.
 

vincent_vega

Well-Known Member
Lotus team
02.04.2005
168
1
#6
Спасибо про шифрование уже прочитал, разобрался. Не совсем то что хотелось бы:( слишком многим пользователсям прийдется рассылать ключи (проблема чисто организационного характера:( ), может всетаки есть какой ни будь другой вариант, попроще?
 
U

usb

Гость
#7
на твой исходный вопрос решения попроще несуществует! :(

но! давай исходить из поставленной задачи, объясни, что надо сделать, может есть другие пути решения не через сокрытие полей :(
 

vincent_vega

Well-Known Member
Lotus team
02.04.2005
168
1
#8
В двух словах о задаче: есть форма в котрой хранится информация о сотруднике (имя, фамилия, дата рождения...) в этой же форме необходимо так же хранить более конфиденциальную информацию (например, домашний номер телефона, который нужно скрыть от большинства пользователей). написал простую формочку сделал несколько ролей и в зависимости от роли этот телефон видно кому надо, но возникла вышеописанная проблема.

Вариант с шифрованием в прнципе подходит, но вот сообщение "You cannot access points of this documents..." каждый раз при открытии будет раздражать основную массу пользователей:( если бы ее убрать, то задачу можно считать решенной.
 
U

usb

Гость
#9
а, что если сделать следующим образом:
Конфидициальную инфорамцию заполнять через диалог на выходе из которого стоит создание(или обновление) дочернего документа к карточке сотрудника? Права на чтение(видимость) дочки определяется с помощью полей Readers в которых прописана роль в ACL БД и сам сотрудник.

Для удобства пользования, при открытии карточки сотрудника на чтение, поля из дочернего документа подхватывать с помощью @GetDocField... и вписывать в поле "Computed for Display" или в вычисляемый текст
"<Copmuted value>" основного документа. Для тех кто имеет права поля будут заполнены, для тех кто прав не имеет они будут пустыми. Редактирование данных в этих полях, опять же по кнопке.

Таким образом достигается следующее:
С точки зрения пользователя данные храняться в одном документе.
С точки зрения системы в 2x или больше.

Можно расширять функциональность системы, можно например, создавать разные дочерние документы: в первом хранится персональная информация для отдела кадров, во втором зарплата для бухгалтерии и т.д. и доступ для каждого типа доп. документа можно определять отдельно ролями...