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