Пишу базу

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

  1. phantom76

    phantom76 Lotus team
    Lotus team

    Регистрация:
    25 фев 2005
    Сообщения:
    363
    Симпатии:
    9
    Всем привет,
    пишу базу для отчетов..
    появились вопросы: (заранее спасибо за помошь!!)

    1. Возможно ли реализовать механизм разграничения доступа к полям? т.е. один пользователь может редактировать в документе только одни поля, другой только другие, третий все.
    как я понял это все можно реализовать создав соответствующие формы для каждого типа пользователей и через роли им назначить. Чтобы с данной формой редактировать могла только нужная роль пользователей , в свойствах формы выставляю на последней закладке права - "кто может создавать док по этой форме" - этого будет достаточно или есть другой способ (например на уровне полей или секций !?) ?
    2. В случае если в разных репликах пользователи будут редактировать один документ , но разные поля, в итоге не приведет это к конфликту репликаций?
     
  2. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    1. В принципе нет. Можно только шифровать поля. Остальное делается в UI и создаёт только иллюзию разграничения прав.
    2. Да. Но можно изменить свойтво формы Conflict Handling или соответствующее поле $ConflictAction в документе.
     
  3. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    1) разграничение доступа к полям можно по-разному реализовать, это могут быть и Controlled Access секции, и скрытие, и другие варианты :)

    2) приведет :) но, можно постараться уменьшить вероятность конфликта - свойство обработки конфл. ситуаций на форме; потом, желательно максимально уменьшить возможность редактирования дока разными пользователями в одно и то же время или разграничить между ними поля, которые они могут редактировать (это к пп1)

    см. isProtected
     
  4. phantom76

    phantom76 Lotus team
    Lotus team

    Регистрация:
    25 фев 2005
    Сообщения:
    363
    Симпатии:
    9
    спасибо за ответы!!

    т.е. в итоге в итоге я смогу построить архитектуру при которой, все данные хранятся в одном документе, а 4 разных пользователя заполняют каждый свою часть полей? , т.е. что это будет все-таки 1 документ а не 4 ?
     
  5. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Как мне кажется, это практически бесполезное свойство. Не получится это сделать:

    Ну а почему бы не сделать в 4-х документах?
    Еще можно дать всем права Readers, а поля через агент менять.
     
  6. phantom76

    phantom76 Lotus team
    Lotus team

    Регистрация:
    25 фев 2005
    Сообщения:
    363
    Симпатии:
    9
    алгоритм работы базы должен быть такой:

    есть менеджер базы - он имеет право на создание шаблона отчета с заданными параментрами для подразделений, есть 4 ответственных лица в подразделениях, которые должны заполнить соответствующие разделы в этом отчете.
    и в итоге отчет должен быть предоставлен руководителю как единая форма.
    соответственно если это будет уже 4 документа, то нужно будет или по ним построить 5-ый итоговый и предусмотреть механизм переноса начальных данных введенных менеджером в документы подразделений, вот пока размышляю как логичнее построить этот процесс?
     
  7. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    в программировании нельзя руководствоваться терминами "кажется" и подобными :)

    указанное свойство итемов isProtected небезполезно, если им правильно пользоваться...
    а свойство формы Conflict handling = Merge Conflicts очень даже хорошо справляется, если пользователи изменяли разные поля...
    и то, что требуется phantom76 можно сделать, правильно все организовав, и с помощью единого документа...

    зы: а еще можно не использовать лотус :)


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

    я бы выбрал, все-таки, отдельные документы, т.к. здесь предусматривается одновременная работа с документом, т.е. вероятность одновременной правки документа стремится к 100%

    т.е. к примеру, Ваш менеджер создает документ, устанавливает его статус "жду ответа", остальные заходят в этот документ и нажимают на княпку "ответ", при этом создается ответный документ, в котором пользователь заносит данные... каждый отвечает, в итоге получается документ и дочерние к нему...
    эти дочерки можно различными способами обработать:
    - можно просто отображать их в виде как связанные доки;
    - можно серверным агентом поместить данные из ответов в родительский, а дочерние убить;
    - можно отображать данные из дочерок в открытом родительском в виде встроенного вида, либо в какие-то поля засовывать данные при открытии;

    либо другим способом...
     
  8. phantom76

    phantom76 Lotus team
    Lotus team

    Регистрация:
    25 фев 2005
    Сообщения:
    363
    Симпатии:
    9
    спасибо, все приму к сведению :)
     
  9. phantom76

    phantom76 Lotus team
    Lotus team

    Регистрация:
    25 фев 2005
    Сообщения:
    363
    Симпатии:
    9
    какой лучше функцией восспользоваться для проверки наличия\отсутствия у пользователя определенной роли, с целью скрытия секции на форме?
     
  10. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    @IsMember()
    @UserRoles
     
  11. phantom76

    phantom76 Lotus team
    Lotus team

    Регистрация:
    25 фев 2005
    Сообщения:
    363
    Симпатии:
    9
    спасибо! :)
    я так понял на локале @UserRoles не работает?

    Text list. Each item in the list is the name of a role that the current user has in the current database. The role names are enclosed in brackets. Returns an empty string ("") if the current database is local and "Enforce a consistent Access Control List across all replicas" is not in effect.
     
  12. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    phantom76
    правильно понял)
     
  13. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    понял-то правильно, но есть ведь и вторая часть ответа - Returns an empty string ("") if the current database is local and "Enforce a consistent Access Control List across all replicas" is not in effect
    так что, можно сделать чтобы работало

    эта галка находится на закладке дополнительных параметров ТУД
     
  14. phantom76

    phantom76 Lotus team
    Lotus team

    Регистрация:
    25 фев 2005
    Сообщения:
    363
    Симпатии:
    9
    еще вопросик, глюк какой-то..

    на форме пытаюсь спрятать секции в зависимости от роли, соответственно в опции: Hide paragraph if formula is true: ставлю "галку" и пишу формулу: @If(@IsMember("[user1]"; @UserRoles);@True;@False) , но заметил такой глюк, что зачастую скрывает только имя секции, если она развернута на форме..

    как правильно реализовать этот механизм?
     
  15. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    ну, либо сделать так чтобы секция не раскрывалась, либо добавить в скрытие того, что внутри секции ту же проверку на роль...
    к стати, достаточно написать @IsMember("[user1]"; @UserRoles) , она сама вернет @True
     
  16. phantom76

    phantom76 Lotus team
    Lotus team

    Регистрация:
    25 фев 2005
    Сообщения:
    363
    Симпатии:
    9
    вот еще вопросик:

    хочу в документе дополнительно контролировать модификацию определенных полей по последнему изменению,: дату и автора
    для чего на форме созданы соответсвтующие поля, сначала использовал в вычисляемых полях фомулы вида :
    @If(@IsMember("[Roles1]"; @UserRoles);@Name([CN];@UserName);"");
    @If(@IsMember("[Roles1]"; @UserRoles);@Now;"");

    но в этом случае, пользователь с другой ролью, очищает поля по "иначе" (может присваивать полю свое текущее значение?! )
    поставил все эти формулы в QuerySave на форме,

    @If(@IsMember("[Roles1]"; @UserRoles);@SetField(Updatedby1;@Name([CN];@UserName));"");
    @If(@IsMember("[Roles1]"; @UserRoles);@SetField(Updated1;@Now);"");

    но почему-то не работают они там..
     
  17. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Присвой. :rolleyes:

    Кавычки не забыл в @SetField?
     
  18. phantom76

    phantom76 Lotus team
    Lotus team

    Регистрация:
    25 фев 2005
    Сообщения:
    363
    Симпатии:
    9
    а где кавычки-то ? вроде не забыл..
    @SetField( fieldName ; value ) имя поле идет разве в кавычках?


    понял.. имя поля должно быть в кавычках :rolleyes:))
     
  19. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Ну да.
     
  20. phantom76

    phantom76 Lotus team
    Lotus team

    Регистрация:
    25 фев 2005
    Сообщения:
    363
    Симпатии:
    9
    Спасибо, все заработало! :rolleyes:
     
Загрузка...

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