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