Блокировка определенных полей в форме

Тема в разделе "Lotus - Программирование", создана пользователем medin84, 27 июн 2007.

  1. medin84

    medin84 Well-Known Member

    Регистрация:
    27 июн 2007
    Сообщения:
    106
    Симпатии:
    0
    Здравствуйте!
    Помогите пожалуйста!
    Буду краток.

    Мне нужно заблокировать определенные поля в форме по условию.
    Условие: допустим роль пользователя не относится к [ALL]
    Этих полей много и у меня есть мысль, сделать список этих полей и если условие истинно сделать их не доступными для редактирования.
    Но эти пользователи могут их видеть, поэтому просто скрывать эти поля не пойдет!

    Спасибо!
     
  2. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Controlled Access Section.
     
  3. medin84

    medin84 Well-Known Member

    Регистрация:
    27 июн 2007
    Сообщения:
    106
    Симпатии:
    0
    Вы бы не могли поконкретней описать суть.
    Я посмотрел Help, не понял.
     
  4. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    Для: medin84
    В дизайнере меню Create - Section- Controlled Access

    дальше интуитивно
     
  5. Hedg

    Hedg Гость

    Создаёшь на форме Секцию с контролируемым доступом, и в неё помешаешь поля котрые нужно блокировать.

    Create/Section/Controlled Accsess
     
  6. Kee_Keekkenen

    Kee_Keekkenen Well-Known Member

    Регистрация:
    5 сен 2006
    Сообщения:
    616
    Симпатии:
    4
    в свойствах поля 6-я закладка "Paragraph hide when" внизу в окошке пишем
    @IsNotMember("[ALL]"; @UserRoles) и ставим галку "Hide paragraph if formula is true"

    таким образом, поле будет видно только пользователям с ролью [ALL]
     
  7. Elena Nefedova

    Elena Nefedova Гость

    Дополнение к рекомендации: Kee_Keekkenen
    IBM рекомендует создавать поле Computed for Display, в котором вычислять @UserRoles и тому подобные сложные формулы. Далее ссылаться при скрытии и доступе не на формулы, а на эти вычисляемые поля - это дает существенный выигрыш производительности в случае использования @UserRoles и ей подобных формул более одного раза на форме.
     
  8. Kee_Keekkenen

    Kee_Keekkenen Well-Known Member

    Регистрация:
    5 сен 2006
    Сообщения:
    616
    Симпатии:
    4
    логично
     
  9. medin84

    medin84 Well-Known Member

    Регистрация:
    27 июн 2007
    Сообщения:
    106
    Симпатии:
    0
    Дела в том что эти поля должны быть видны!
    Их нелзя просто скрывать!
    Суть в том что пользователи должны видеть данные! Поэтому вскырвать по формуле непойдет!
    Мне нужно просто чтобы они не могли вносить в них изменения!
     
  10. Azrael

    Azrael Гость

    1) свойство Input Enabled
    2) скрывать сами поля, показывать <computed text> - всё по формулам скрытия полей, т.е. если показывается поле - скрывается computed text, и наоборот, в зависимости от логики
     
  11. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Создаешь Controlled Access Section.
    Пихаешь туда поля.
    В свойствах секции на второй закладке Expand/Collapse везде (и для Editors и для Non-Editors) ставишь Auto-expand секции.
    Далее идешь на третью закладку Formula. Тип Computed for Display. В формуле пишешь "[ALL]".
    Дальше идешь на последнюю закладку Section Hide When. И прячешь её от всего (или условие @True, или галки везде).
    Усё.

    Можно еще поиграться со свойством Input Enabled, если версия клиента 7.
     
  12. Azrael

    Azrael Гость

    Для: Medevic

    Почему именно 7? В 6.5 тоже вполне нормально работает.
     
  13. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    <!--QuoteBegin-Azrael+28:06:2007, 14:37 -->
    <span class="vbquote">(Azrael @ 28:06:2007, 14:37 )</span><!--QuoteEBegin-->Почему именно 7? В 6.5 тоже вполне нормально работает.
    [snapback]70825" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Только со стилем Native OS Style.
    В 7-ке работает и со стилем Notes style.
     
  14. Azrael

    Azrael Гость

    Для: Medevic аааа.... точно :)
     
  15. medin84

    medin84 Well-Known Member

    Регистрация:
    27 июн 2007
    Сообщения:
    106
    Симпатии:
    0
    Этот код если поставить в PostOpen или QueryOpen события формы было все ОК!
    Но он не доработан!
    Я не соображу как блокировать поля и вообще возможна ли это!

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

    Код (Text):
        Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim acl As NotesACL
    Dim entry As NotesACLEntry
    Dim ws As New NotesUIWorkspace
    Dim uidoc As NotesUIDocument
    Set uidoc = ws.CurrentDocument

    Set db = session.CurrentDatabase
    Set acl = db.ACL
    userNames = session.UserName
    Set entry = acl.GetEntry( userNames )

    fieldName(0)="SurName"  ' пример
    fieldName(1)="Name"
    fieldName(2)="FatherName"

    bool = False

    If(Ubound(entry.Roles)>0)Then
    Forall r In entry.Roles
    If(r="[ALL]" Or r="[ABIT]")Then
    bool = True
    Exit Forall
    End If
    End Forall
    End If

    If(bool = False)Then
    Messagebox "Вы не имеете прав на редактирование некоторых полей!"
    [b][color=#FF0000]Вот в этом месте сделать чтонибудь надо, типа[/color][/b]

    for i=lbound(fieldName) to ubound(fieldName)
    fieldName(i).locked
    next

    End If
     
  16. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Для: medin84
    Выше же расписано как.
     
  17. medin84

    medin84 Well-Known Member

    Регистрация:
    27 июн 2007
    Сообщения:
    106
    Симпатии:
    0
    Спасибо вроде понял!
    Вы уж простите, малость неопытен!
    :)
     
Загрузка...
Похожие Темы - Блокировка определенных полей
  1. PuffDaddy87
    Ответов:
    0
    Просмотров:
    1.385
  2. k85
    Ответов:
    3
    Просмотров:
    1.174
  3. Сстранник
    Ответов:
    2
    Просмотров:
    1.924
  4. beloff
    Ответов:
    26
    Просмотров:
    4.694
  5. Lariel
    Ответов:
    3
    Просмотров:
    2.954

Поделиться этой страницей