Чтобы только автор документа мог редактировать его

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

Статус темы:
Закрыта.
  1. Гость

    Хочу скрыть кнопку "Изменить документ" от всех пользователей, которые не являются авторами этого документа,
    Подскажите пожалуйста как это сделать?
     
  2. oshmianski

    oshmianski Гость

    Для: Светлана1342
    сделать поле в доке, куда складывать авторов, а на Hide when кнопки @IsMember от @UserName
     
  3. Гость



    Спасибо получилось, вот так написала в скрвать , если верна формула:

    @IsDocBeingEdited | @If(!@IsMember(@UserName;From))
     
  4. root

    root Гость

    Для: Светлана1342
    для для кнопки в hide action написать условие по которому вернет значение true и усе
     
  5. Гость

    А вот еще вопрос а как сделать, чтобы пользователь по двойному нажатию в документе не смог его редактировать... ? В событии наверное нужно каком-нибудь Query....() прописать,
    Подскажите кто знает....
     
  6. oshmianski

    oshmianski Гость

    Для: Светлана1342
    есть бантик: у формы есть метод QueryModeChange, туда можно написать условие

    if Условие then Continue = true else Continue = flase

    но это обходится Ctrl + E из представления
     
  7. Гость

    Понятненько, плохо конечно что обходится Ctrl+E,

    а у меня вот и бантика то нет...
     
  8. pbnoob

    pbnoob Well-Known Member

    Регистрация:
    25 авг 2006
    Сообщения:
    135
    Симпатии:
    0
    <!--QuoteBegin-Светлана1342+2:02:2007, 13:24 -->
    <span class="vbquote">(Светлана1342 @ 2:02:2007, 13:24 )</span><!--QuoteEBegin-->а у меня вот и бантика то нет...
    [snapback]54820" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    я полагаю, что это бантики :) :D :D

    PS не смог из буфера что-то вставить :)
    Посмотреть вложение Image1.bmp
     
  9. Гость

    ааа, /Умирая со смеху.../
    ок, понятно....
     
  10. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    <!--QuoteBegin-Светлана1342+2:02:2007, 13:16 -->
    <span class="vbquote">(Светлана1342 @ 2:02:2007, 13:16 )</span><!--QuoteEBegin-->А вот еще вопрос а как сделать, чтобы пользователь по двойному нажатию в документе не смог его редактировать... ? В событии наверное нужно каком-нибудь Query....() прописать,
    [snapback]54817" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    А зачем? Есть же поле типа Автор. Если не автор, но ни двойное нажатие не поможет, ни ctrl-e и т.п.
     
  11. RAJ

    RAJ Well-Known Member

    Регистрация:
    17 янв 2007
    Сообщения:
    440
    Симпатии:
    0
    Есть функция @Author, которая возвращает список авторов, просматривая соответствующие поля(более подробно в хелпе).
    Для Hide формулы:
    !@Contains(@Author;@UserName)

    Как было указано в предыдущих ответах, от редактирования документа другим пользователем с правами "Редактор" это не спасёт и надо писать ограничение в QueryModeChange. Я предлагаю следующий код:


    Sub Querymodechange(Source As Notesuidocument, Continue As Variant)
    Dim result As Variant

    result = Evaluate("@Contains(@Author;@UserName)")

    Continue = (result(0)!=0)

    End Sub
     
  12. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    <!--QuoteBegin-RAJ+2:02:2007, 15:03 -->
    <span class="vbquote">(RAJ @ 2:02:2007, 15:03 )</span><!--QuoteEBegin-->Есть функция @Author, которая возвращает список авторов, просматривая соответствующие поля(более подробно в хелпе).
    [snapback]54845" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Не пойдет. Она возвращает содержимое только первого поля типа Authors. Если таких нет, то начинает возвращать содержимое других полей вплоть до $UpdatedBy.
     
  13. RAJ

    RAJ Well-Known Member

    Регистрация:
    17 янв 2007
    Сообщения:
    440
    Симпатии:
    0
    Если документ, будет создан изначально с вышеприведенными ограничениями для НЕ АВТОРОВ документа, то содержимое полей вплоть до $UpdatedBy, будет содержать нашего автора.

    В крайнем случае создаём "Вычислимое при создании" поле с формулой @UserName и дальше его проверяем вместо функции @Author
     
  14. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    <!--QuoteBegin-RAJ+2:02:2007, 15:21 -->
    <span class="vbquote">(RAJ @ 2:02:2007, 15:21 )</span><!--QuoteEBegin-->Если документ, будет создан изначально с вышеприведенными ограничениями для НЕ АВТОРОВ документа, то содержимое полей вплоть до $UpdatedBy, будет содержать нашего автора.

    В крайнем случае создаём "Вычислимое при создании" поле с формулой @UserName и дальше его проверяем вместо функции @Author
    [snapback]54852" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Что-то я не понимаю. Если я создам поле типа Authors со значением [Admin] и помещу его первым на форме, то наша функция @Author пойдет лесом.
     
  15. RAJ

    RAJ Well-Known Member

    Регистрация:
    17 янв 2007
    Сообщения:
    440
    Симпатии:
    0
    Ну и это можно заблокировать в QuerySave тоже можем проверить на автора и запретить сохранение.

    result = Evaluate("@Contains(@Author;@UserName)")
    Continue = (result(0)!=0)

    Пусть "злодей" меняет документ, но сохранить несможет :D

    P.S.: @Author, конечно можем и заменить на поле с именем автора

    Согласен с вами :(
    Тут уже пошли детали: роли и т.п. Чтобы дать рецепт для данной базы информации не достаточно(лично для меня).
    Решение надо принимать для каждой базы в отдельности взависисмости от её организации.
     
  16. RAJ

    RAJ Well-Known Member

    Регистрация:
    17 янв 2007
    Сообщения:
    440
    Симпатии:
    0
    P.S. Функция @Author не пойдёт лесом, а проверит другие поля "Авторов", включая $UpdatedBy
     
  17. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    <!--QuoteBegin-RAJ+2:02:2007, 16:22 -->
    <span class="vbquote">(RAJ @ 2:02:2007, 16:22 )</span><!--QuoteEBegin-->P.S. Функция @Author не пойдёт лесом, а проверит другие поля "Авторов", включая $UpdatedBy
    [snapback]54865" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Хелп говорит обратное, и практика подтверждает это.
     
  18. RAJ

    RAJ Well-Known Member

    Регистрация:
    17 янв 2007
    Сообщения:
    440
    Симпатии:
    0
    Принято.
     
  19. Гость

    ну а как же быть раз "лесом" @Author работь не хочет...
     
  20. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    <!--QuoteBegin-Светлана1342+5:02:2007, 08:52 -->
    <span class="vbquote">(Светлана1342 @ 5:02:2007, 08:52 )</span><!--QuoteEBegin-->ну а как же быть раз "лесом" @Author работь не хочет...
    [snapback]54993" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Имхо, не заморачиваться.
    В поле Автор могут быть также внесены группы и роли. Т.е. придется и группы разбирать, и роли проверять. Также проверять доступ (если Editor и выше, то кнопка доступна).

    Можно сделать кнопку редактирования с таким кодом:
    Код (Text):
    Dim ws As New NotesUIWorkspace
    Dim uidoc As NotesUIDocument
    Set uidoc = ws.CurrentDocument
    uidoc.EditMode = True
    If Not uidoc.EditMode Then Msgbox "Вам нельзя редактировать этот документ"
     
Загрузка...
Статус темы:
Закрыта.

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