Как настроить систему прав доступа в 1С:ERP при использовании расширений конфигурации

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

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

Выясним причину: почему роли «слетают» в Конфигураторе

В современных конфигурациях, таких как 1С:ERP, 1С:Комплексная автоматизация или 1С:Управление торговлей, используется развитая подсистема «Управление доступом». В отличие от старых решений, где права назначались напрямую в Конфигураторе, здесь первичным является режим 1С:Предприятие. Рассмотрим основные факторы влияния:

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

Регистрируем роли расширения в системе управления доступом

Для того чтобы система «узнала» о существовании новой роли в расширении, её необходимо зарегистрировать. Проанализируем стандартный алгоритм действий. После добавления роли в расширение нам нужно заставить систему обновить справочник идентификаторов метаданных. Рассмотрим, как это сделать программно:


// Обновление идентификаторов объектов метаданных, включая расширения
Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника(ИСТИНА, ЛОЖЬ, ЛОЖЬ);

В этой процедуре первый параметр ЕстьИзменения заставляет систему пересмотреть дерево объектов. После выполнения этого кода роль должна появиться в списке выбора при редактировании Профиля групп доступа в режиме Предприятие.

Работа с Профилями и Группами доступа

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

  1. Зайдем в режим 1С:Предприятие под пользователем с правами администратора.
  2. Откроем справочник Профили групп доступа (раздел Администрирование — Настройки пользователей и прав).
  3. Создадим новый профиль (например, «Водитель (расширение)») или отредактируем существующий.
  4. В списке ролей найдем нашу роль из расширения. Она обычно отображается с указанием имени расширения. Отметим её галочкой.
  5. Запишем профиль.
  6. Перейдем в справочник Группы доступа и убедимся, что нужный пользователь включен в группу с этим профилем.

После записи группы доступа система сама вызовет процедуру синхронизации и установит нужные флажки в Конфигураторе. Если этого не произошло, проанализируем состояние константы ПараметрыРаботыПользователей.

Программное восстановление и синхронизация прав

Если роли «слетели» массово, мы можем воспользоваться методами БСП для принудительного обновления. Посмотрим на пример кода, который обновляет параметры работы и синхронизирует роли:


// Принудительное обновление общих параметров работы пользователей
Константы.ПараметрыРаботыПользователей.СоздатьМенеджерЗначения().ОбновитьОбщиеПараметры();

// Массовое обновление ролей всех пользователей на основе их групп доступа
УправлениеДоступомСлужебный.ОбновитьРолиВсехПользователей();

Также важно помнить про обработку ОбновлениеВспомогательныхДанных. В типовых решениях она часто запускается при обновлении конфигурации, но при работе с расширениями её иногда полезно вызвать вручную через Функции для технического специалиста.

Методика создания «правильных» ролей для ERP

Для того чтобы ваши роли в расширениях не конфликтовали с логикой ERP, придерживайтесь следующих стандартов разработки ролей, заложенных фирмой «1С»:

Решение проблемы с «Безопасным режимом»

Проанализируем ситуацию, когда расширение подключено в безопасном режиме. В этом случае БСП может иметь ограничения на программную запись в справочники идентификаторов или регистры сведений, отвечающие за права. Если вы добавили роли и они упорно не появляются в интерфейсе управления доступом:

  1. Откройте список расширений.
  2. Снимите флажок Безопасный режим (если это допустимо политикой безопасности вашей организации).
  3. Перезапустите сеанс и выполните обновление идентификаторов метаданных.

Быстрое восстановление (Lifehack для администратора)

Если после обновления расширения пользователи жалуются на нехватку прав, а роли в Конфигураторе пусты, выполните следующую последовательность действий в консоли кода:


// 1. Обновляем идентификаторы, чтобы система увидела изменения в расширении
Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника(ИСТИНА, ИСТИНА, ЛОЖЬ);

// 2. Сбрасываем кэш параметров доступа
ПараметрыДоступа.ОбновитьРазрешенныеЗначения();

// 3. Запускаем фоновую синхронизацию ролей пользователей
УправлениеДоступом.ОбновитьРолиПользователей();

Рассмотрим подробнее последний метод. УправлениеДоступом.ОбновитьРолиПользователей() — это мощный инструмент, который сопоставляет текущие настройки справочников ПрофилиГруппДоступа и ГруппыДоступа с реальными записями в списке пользователей информационной базы. Это исключает необходимость заходить в карточку каждого пользователя и перевыбирать профили.

Использование расширений — это современный стандарт доработки 1С:ERP, но он требует четкого следования правилам БСП. Понимая, что управление правами переместилось из Конфигуратора в саму информационную базу, вы сможете избежать проблем с исчезающими ролями и обеспечите стабильную работу системы прав доступа.

← На главную