Переход с платформы 1С 8.2 на 8.3 и смену редакций конфигураций (с 2.0 на 3.0/3.1) часто сопровождает вопрос: куда исчезли привычные интерфейсы и как теперь ограничить пользователя, чтобы он видел только необходимые ему объекты? В обычных формах задача решалась созданием отдельного интерфейса. В управляемых формах 1С:Бухгалтерия строительной организации (БСО) логика изменилась: теперь за видимость и доступность отвечают подсистемы, роли и функциональные опции. Рассмотрим подробно, как решить задачу ограничения доступа пользователя всего до двух документов: Авансовый отчет и Поступление товаров и услуг.
Проанализируем самый надежный с точки зрения безопасности способ — создание роли "с нуля". Этот метод называют аддитивным: мы начинаем с абсолютного отсутствия прав и постепенно добавляем только то, что действительно необходимо. Разберем этот процесс по шагам:
ДоступКДокументамЗакупок.Пользователь (или аналогичную базовую роль из БСП). Она дает право на запуск клиента, использование стандартных констант и чтение общих классификаторов.АвансовыйОтчет и ПоступлениеТоваровУслуг устанавливаем права на "Чтение", "Добавление", "Изменение" и "Просмотр".Организации, Контрагенты, Номенклатура, Склады и Валюты.Нарушение доступа.В современных конфигурациях, таких как БСО 3.1, управление правами в режиме конфигуратора напрямую считается "дурным тоном". Правильнее использовать механизмы Библиотеки стандартных подсистем (БСП) в режиме "1С:Предприятие".
Проанализируем ситуацию: в разделе Администрирование — Настройки пользователей и прав — Профили групп доступа мы можем создать новый профиль. Рассмотрим преимущества этого метода:
Выясним причину, по которой даже при наличии прав на документ система выдает ошибку. В отраслевых решениях, таких как БСО от компании "Рарус", часто встроена система лицензирования (СЛК). Если у пользователя нет прав на объекты, связанные с защитой конфигурации, или на специализированные общие модули, программа будет аварийно завершаться.
Для диагностики используем следующие инструменты:
Константа.ПараметрыЗащиты или РегистрСведений.Лицензии), к которому не хватило прав.logcfg.xml, указав событие EXCP.Если задача стоит не в жестком запрете (безопасности), а в удобстве пользователя ("чтобы глаза не разбегались"), можно пойти путем настройки интерфейса. Рассмотрим, как это сделать без изменения прав доступа:
В режиме "1С:Предприятие" под учетной записью пользователя нажмем на кнопку Настройка — Настройка панели разделов. Удалим все разделы, кроме "Покупки" или "Главное". Затем в Настройке навигации внутри раздела уберем все документы, кроме нужных нам Авансовых отчетов и Поступлений.
Важно: Помните, что при таком подходе пользователь все равно сможет открыть любой документ через "Все функции" (или "Функции для технического специалиста"), если у него остались права в ролях. Поэтому интерфейсная настройка — это лишь дополнение к ограничению прав.
В управляемом приложении роль интерфейсов играют подсистемы. Чтобы быстро понять, какие роли дают доступ к конкретному разделу, проанализируем структуру конфигурации:
Подсистема в дереве метаданных.Для быстрого поиска прав в коде или консоли запросов можно обращаться к метаданным. Например, чтобы проверить права текущего пользователя программно, используем конструкцию:
Если ПравоДоступа("ИнтерактивноеДобавление", Метаданные.Документы.АвансовыйОтчет) Тогда
// Логика доступна
КонецЕсли;
Резюме: Для реализации задачи "только два документа" в 1С:Бухгалтерия строительной организации наиболее правильным будет создание Профиля группы доступа, в который войдут: базовая роль Пользователь, специализированная роль для работы с защитой (СЛК) и ваша кастомная роль с полными правами на два документа и правами на чтение основных справочников. Это обеспечит стабильную работу без ошибок доступа и чистоту интерфейса.