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