Я сделал это с формами Holiday Requests (и теперь мы используем это для всех форм, которые мы создаем). Только HR, менеджер пользователя или «создатель» формы могут открыть полный просмотр. Я не эксперт по Sharepoint или Infopath, поэтому моё решение может не соответствовать всем сценариям.
background - заполнитель форм InfoPath 2010 (не формы браузера) с SharePoint wss3.0 (хотя я не понимаю, почему он не будет работать в более поздних версиях).
Я разработал форму Infopath с несколькими представлениями, открытыми при загрузке формы, в зависимости от того, кто является пользователем и каков его статус. Одним из представлений является вид «извините, вы не можете открыть эту форму».
Когда форма создается, я перемещаю идентификатор пользователя (встроенную в форму функцию userName ()) в поле, созданное пользователем. Когда форма открыта, правило проверяет это поле по отношению к текущему пользовательскому полю и может предпринять действия для отображения соответствующего представления (в зависимости от других значений поля). Я также перемещаю идентификатор пользователя их менеджера в другое поле - он также извлекается из подключения к данным в другой список
Затем у меня есть список SharePoint (называемый разрешениями) - этот список содержит идентификаторы пользователей и их разрешения (старший менеджер, отдел кадров и т. Д.), И я читаю это, используя подключение к данным, и фильтрую его по идентификатору пользователя (извлекается, когда форма открыт).
Итак, в итоге - когда форма открывается, правило загрузки формы:
1) получает текущий идентификатор пользователя
2) получает разрешения этого пользователя из моего списка
3) проверяет статус формы
и затем показывает соответствующий вид формы (обновление, только для чтения, личный и т. Д.)
Я создал новый тип разрешений, который является копией настроек 'contrib', но без разрешения на удаление. Таким образом, по умолчанию каждый теоретически может добавлять, читать и обновлять все формы, но мои правила запрещают определенные действия.
Кто-то с большим знанием SharePoint и InfoPath, чем я, может найти в этом ошибку, и он не может быть на 100% безопасным в истинном смысле этого слова, но это работает для нас. Я также удалил параметры «Открыть в проводнике Windows» из панели инструментов, чтобы они не могли видеть необработанные данные XML.
Надеюсь, это поможет