При разграничении прав доступа в типовых конфигурациях (например, «1С:Управление торговлей 11», «1С:ERP», «1С:Комплексная автоматизация») нередко возникает ситуация: пользователю назначена специализированная роль на добавление и изменение документов движения товаров, непроведенные документы прекрасно редактируются, однако стоит документу перейти в проведенное состояние, как его форма полностью блокируется. При этом командные панели табличных частей становятся неактивными, поля блокируются для ввода, а поиск кода в процедурах модуля формы (ПриОткрытии, ПриСозданииНаСервере, ПриЧтенииНаСервере) или подписках на события не дает никаких результатов.
Разберем по шагам природу такого поведения платформы 1С:Предприятие, выясним причину блокировки и рассмотрим способы корректной настройки прав доступа.
Проанализируем, почему код в модулях формы может отсутствовать, но форма все равно оказывается недоступной для ввода. В платформе 1С:Предприятие за работу документов отвечают не только базовые CRUD-права (чтение, добавление, изменение, удаление), но и специализированные интерактивные права.
Когда пользователь открывает форму проведенного документа, платформа на уровне системного ядра автоматически проверяет наличие права Интерактивное изменение проведенных. Если этого права у пользователя нет (ни в одной из назначенных ролей), платформа принудительно устанавливает свойству формы ТолькоПросмотр значение Истина. Это происходит еще до выполнения или в процессе инициализации стандартных событий расширения формы документа. В результате отключается возможность модификации реквизитов, а в табличных частях блокируются кнопки добавления, удаления и перемещения строк.
Именно поэтому поиск по коду конфигурации не приводит к успеху: программного кода, запрещающего редактирование, просто нет — ограничение накладывается самим механизмом прав платформы.
Если требуется предоставить пользователям возможность редактировать уже проведенные документы соответствующего вида, выполним следующие действия:
ДобавлениеИзменениеДокументовДвиженияТоваров либо специализированную роль ДобавлениеИзменениеПеремещенийТоваров).ПеремещениеТоваров).Рассмотрим подробнее важный нюанс платформы, о котором часто забывают при тонкой настройке прав. В системе разделены понятия модификации данных на уровне сервера и на уровне интерфейса:
Если право Интерактивное изменение проведенных установлено, но форма все равно заблокирована, проанализируем другие прикладные механизмы типовых конфигураций на базе БСП:
Еще – Разрешить редактирование реквизитов. Для ее использования у пользователя должна быть роль РедактированиеРеквизитовОбъектов.В типовых конфигурациях не рекомендуется напрямую редактировать типовые роли поставщика в конфигураторе, чтобы избежать проблем при последующих обновлениях. Оптимальный способ решения — создать отдельный профиль групп доступа или специализированное расширение конфигурации с дополнительной ролью, содержащей право Интерактивное изменение проведенных, и назначить этот профиль ответственным пользователям.