none
Запрет на изменение элемента списка RRS feed

  • Вопрос

  • Как можно запретить изменять элемент списка рядовому пользователю, в зависимости от заданного значения поля в этом списке?
    К примеру, есть поле "Состояние". Если у этого поля, скажем, значение 1, то пользователь может изменять этот элемент списка. Если же значение 2, то не может
    31 января 2010 г. 8:45

Ответы

  • Как можно запретить изменять элемент списка рядовому пользователю, в зависимости от заданного значения поля в этом списке?
    К примеру, есть поле "Состояние". Если у этого поля, скажем, значение 1, то пользователь может изменять этот элемент списка. Если же значение 2, то не может

    По-красивому делается Event Receiver на список, обрабатывающий OnListItemAdding и проверяющий значение поля _до_ попытки модификации и запрещающий модификацию если значение поля не соответствует заданному. Либо, если устраивает, подход как с рабочим процессом: Event Receiver на изменение элемента списка, убираюий/выдающий права в зависимости от значения поля.
    • Помечено в качестве ответа Andrey Gordeev 4 февраля 2010 г. 9:31
    2 февраля 2010 г. 13:54

Все ответы

  • скачайте workflow activity http://sharepoint-community.ru/Lists/WebParts/DispForm.aspx?ID=14  и по условию если в поле стоит 2 снимайте права у пользователя или группы
    С уважением Салихов Д.А.
    • Предложено в качестве ответа Дмитрий Салихов 31 января 2010 г. 9:00
    • Отменено предложение в качестве ответа Andrey Gordeev 4 февраля 2010 г. 7:37
    31 января 2010 г. 9:00
  • Скачал, установил. Создал рабочий процесс: если в поле "Состояние" значение равно 2, то происходит Delete permission assignment для этого списка по отношению к создавшему элемент пользователю. Создаю элемент, потом изменяю поле "Состояние" - возникают множественные ошибки, к примеру одна из них:
    System.Workflow.Runtime.Hosting.PersistenceException: В экземпляре объекта не задана ссылка на объект. ---> System.NullReferenceException: В экземпляре объекта не задана ссылка на объект. в DP.Sharepoint.Workflow.Common.RemoveListItemPermissionEntry(SPListItem item, String principalName, Boolean breakRoleInheritance) в DP.Sharepoint.Workflow.PermissionsService.<>c__DisplayClass4.<ProcessRevokeRequest>b__3() в Microsoft.SharePoint.SPSecurity.CodeToRunElevatedWrapper(Object state) в Microsoft.SharePoint.SPSecurity.<>c__DisplayClass4.<RunWithElevatedPrivileges>b__2() в Microsoft.SharePoint.Utilities.SecurityContext.RunAsProcess(CodeToRunElevated secureCode) в Microsoft.SharePoint.SPSecurity.RunWithElevatedPrivileges(WaitCallback secureCode, Object param) в MicrosofCancellationHandlingFilter.SafeReleaseLockOnStatusChange(ActivityExecutionContext context) в System.Workflow.ComponentModel.FaultAndCancellationHandlingFilter.OnEvent(Object sender, ActivityExecutionStatusChangedEventArgs e) в System.Workflow.ComponentModel.ActivityExecutorDelegateInfo`1.ActivityExecutorDelegateOperation.Run(IWorkflowCoreRuntime workflowCoreRuntime) в System.Workflow.Runtime.Scheduler.Run()
    31 января 2010 г. 12:56
  • На данный момент имеется следующий рабочий процесс:


    Когда он срабатывает, то пользователь, добавивший элемент вообще перестаёт видеть этот элемент в списке - это первое действие, которое снимает все права с целой группы - с этим понятно.
    А вот второе действие, почему-то не работает - ошибка. Я хочу, чтобы у создателя были права только на чтение элемента.

    Почитал я про это действие: http://spdactivities.codeplex.com/wikipage?title=Grant%20Permission%20on%20Item&referringTitle=Home
    Там почему-то сказано, что оно распространяется на List Item, но похоже, что не на List Item, а на весь List
    2 февраля 2010 г. 13:24
  • Как можно запретить изменять элемент списка рядовому пользователю, в зависимости от заданного значения поля в этом списке?
    К примеру, есть поле "Состояние". Если у этого поля, скажем, значение 1, то пользователь может изменять этот элемент списка. Если же значение 2, то не может

    По-красивому делается Event Receiver на список, обрабатывающий OnListItemAdding и проверяющий значение поля _до_ попытки модификации и запрещающий модификацию если значение поля не соответствует заданному. Либо, если устраивает, подход как с рабочим процессом: Event Receiver на изменение элемента списка, убираюий/выдающий права в зависимости от значения поля.
    • Помечено в качестве ответа Andrey Gordeev 4 февраля 2010 г. 9:31
    2 февраля 2010 г. 13:54
  • Как можно запретить изменять элемент списка рядовому пользователю, в зависимости от заданного значения поля в этом списке?
    К примеру, есть поле "Состояние". Если у этого поля, скажем, значение 1, то пользователь может изменять этот элемент списка. Если же значение 2, то не может

    По-красивому делается Event Receiver на список, обрабатывающий OnListItemAdding и проверяющий значение поля _до_ попытки модификации и запрещающий модификацию если значение поля не соответствует заданному.
    Так и поступлю, спасибо.
    4 февраля 2010 г. 9:31
  • Либо, если устраивает, подход как с рабочим процессом: Event Receiver на изменение элемента списка, убираюий/выдающий права в зависимости от значения поля.
    я так понимаю у народа, если раб. прроцесс закончен, то изменения запрещены? Почему у меня не так?
    у меня пользователь завершив свою задачу без проблем может ее еще раз завершить сменив все данные при этомна совершенно другие..
    а в раб. процессе обычно работают несколько порльзователей и получается к след. пользователю приходит информация отпредыдущего...он с ней работает и считает ее достоверной, в это время любой из пользователей кто уже завершил свои задачи могут поменять на совершенно противоположные данные. в результате вся последующая работа становится полной ерундой.
    5 февраля 2010 г. 4:27
  • а это уже другой вопрос :)

    5 февраля 2010 г. 20:30