Почему у пользователя с новой ролью нет доступа к документу в 1С:Бухгалтерии 3.0?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия IT и автоматизация бизнеса
← На главную

При доработке типовых конфигураций на платформе 1С:Предприятие 8.3 разработчики часто сталкиваются с ситуацией: в конфигураторе создан новый документ и новая роль с полным набором прав на него, роль назначена пользователю, однако в режиме «1С:Предприятие» пользователь не видит документ в интерфейсе или получает ошибку нарушения прав доступа. При этом, если выдать права через типовую роль (например, БазовыеПрава), документ становится доступным.

Разберем детально, почему это происходит, как устроена подсистема управления доступом в типовых решениях на базе Библиотеки стандартных подсистем (БСП) и какими способами можно быстро решить данную проблему.

Архитектурные причины проблемы в конфигурациях на базе БСП

В типовых конфигурациях (таких как 1С:Бухгалтерия предприятия 3.0, 1С:ERP, 1С:Управление торговлей 11 и др.) назначение прав работает не напрямую через платформенные роли, а через механизмы подсистемы «Управление доступом» БСП. Проанализируем ключевые факторы, влияющие на доступность новых объектов:

  1. Кэширование идентификаторов метаданных: Подсистема доступа использует специальный служебный справочник ИдентификаторыОбъектовМетаданных. Если в конфигурацию добавляется новая роль или новый объект, БСП не видит их до тех пор, пока не будет выполнена процедура сопоставления и актуализации данных справочника.
  2. Двухуровневая модель назначения прав: В режиме предприятия роли пользователям назначаются не напрямую в списке пользователей платформы, а через Профили групп доступа и Группы доступа. При авторизации или выполнении регламентных заданий состав ролей пользователя автоматически синхронизируется с прикладными профилями. Если роль добавлена только в конфигураторе, механизмы БСП могут сбросить её или проигнорировать при проверке прав.
  3. Наличие интерфейсных прав в роли: Чтобы документ отображался в интерфейсе программы (в разделах меню, командной панели, меню «Все функции / Функции для технического специалиста»), в роли обязательно должно быть установлено право «Просмотр». Для интерактивного создания нового документа в формах списков требуется право «Интерактивное добавление», а не только базовые права Чтение, Добавление и Редактирование.

Способ 1. Принудительное обновление информационной базы через параметр запуска

Самый быстрый и надежный способ инициализировать все вспомогательные таблицы и зарегистрировать новые метаданные в БСП — запустить сеанс с ключом обновления. Рассмотрим порядок действий:

  1. Закроем все активные сеансы пользователей, так как процедура обновления требует монопольного доступа к базе данных.
  2. В окне запуска 1С выделим нужную базу, нажмем кнопку Изменить и перейдем на страницу параметров запуска.
  3. В поле «Дополнительные параметры запуска» укажем ключ: /ЗапуститьОбновлениеИнформационнойБазы.
  4. Запустим «1С:Предприятие» под пользователем с административными правами. Программа выполнит все отложенные обработчики обновления, перезаполнит справочники метаданных и обновит параметры работы пользователей.
  5. После завершения запуска закроем сеанс и обязательно удалим ключ запуска из настроек информационной базы.

Способ 2. Программное обновление служебных данных

Если монопольный перезапуск базы невозможен или неудобен, выполним процедуру обновления программно через внешнюю обработку или консоль кода под учетной записью администратора.

Посмотрим на пример кода, инициирующего обновление идентификаторов метаданных и параметров работы пользователей:


// Принудительное обновление идентификаторов объектов метаданных БСП
ПараметрыОбновления = Новый Структура;
ПараметрыОбновления.Вставить("ВыгружатьМетаданные", Истина);
ПараметрыОбновления.Вставить("Рекурсивно", Истина);

Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника(Истина, Истина, Ложь);

// Актуализация кэша параметров доступа пользователей
ПользователиСлужебный.ОбновитьПараметрыРаботыПользователей();

После выполнения этого кода подсистема управления доступом зафиксирует появление новой роли и нового документа, после чего права вступят в силу.

Способ 3. Обновление через интерфейс пользователя

В типовых конфигурациях доступно штатное обновление идентификаторов без написания программного кода. Выполним следующие шаги:

  1. Откроем меню «Функции для технического специалиста» (или «Все функции»).
  2. Найдем справочник «Идентификаторы объектов метаданных».
  3. В открывшейся форме нажмем кнопку «Обновить данные справочника».

Правильный порядок внедрения новых ролей в БСП

Чтобы избежать подобных ошибок при дальнейшей разработке, разберем рекомендуемый регламент добавления прав в типовые базы:

  1. Настройка прав роли в конфигураторе: Убедимся, что для нового документа установлены не только права Чтение, Добавление, Изменение, но и Просмотр, Интерактивное добавление, а также право Чтение на все зависимые справочники, реквизиты которых используются в документе.
  2. Включение в командный интерфейс: Проверим, что документ включен хотя бы в одну подсистему с признаком «Включать в командный интерфейс», и у новой роли есть право Просмотр на эту подсистему.
  3. Обновление метаданных: Выполним процедуру актуализации справочника ИдентификаторыОбъектовМетаданных одним из описанных выше способов.
  4. Создание Профиля групп доступа: В режиме предприятия перейдем в раздел Администрирование -> Настройки пользователей и прав -> Профили групп доступа, создадим новый профиль и включим в него созданную роль.
  5. Назначение прав: Создадим группу доступа с данным профилем и добавим в неё нужного пользователя.
← На главную