Почему слетают права пользователей в Конфигураторе 1С и как это исправить?

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

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

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

Архитектура БСП: почему Конфигуратор больше не главный

Для начала проанализируем, как изменился подход к администрированию прав в современных конфигурациях (таких как Бухгалтерия предприятия 3.0, Управление торговлей 11, ERP 2, ЗУП 3 и др.). В старых решениях на платформе 1С (например, УПП 1.3 или Бухгалтерия 2.0) Конфигуратор являлся единственной и финальной точкой настройки прав. Администратор заводил пользователя в Конфигураторе и там же раздавал ему роли.

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

  1. Справочник Пользователи — содержит карточки реальных людей.
  2. Справочник Профили групп доступа — предопределенные или пользовательские шаблоны, содержащие наборы ролей (например, "Бухгалтер", "Продавец").
  3. Справочник Группы доступа — связующее звено, которое соединяет конкретных пользователей с конкретными профилями.

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

Причины, по которым "слетают" роли в Конфигураторе

Давайте выясним основные причины десинхронизации и "исчезновения" прав:

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

Особенность администраторов: почему "Полные права" сбрасывают другие роли

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

Обратимся к логике работы общего модуля УправлениеДоступомСлужебный. При обновлении ролей пользователя система проверяет, назначена ли ему роль ПолныеПрава (или группа доступа "Администраторы"). Если эта роль присутствует, срабатывает оптимизация прав: система очищает все остальные роли, оставляя только полные права. С точки зрения платформы 1С это логично: обладателю полных прав разрешено всё, и проверка дополнительных ролей лишь создает лишнюю нагрузку на сервер.

Однако у разработчиков из-за этого часто ломается логика доработанного функционала. Предположим, вы создали в конфигурации роль-маркер ДополнительныеОтчетыДляСпецов и написали в коде проверку:


Если РольДоступна("ДополнительныеОтчетыДляСпецов") Тогда
    // Показать секретную панель отчетов
КонецЕсли;

Для обычного пользователя, которому назначена эта роль через группу доступа, всё будет работать отлично. Но у Администратора роль ДополнительныеОтчетыДляСпецов автоматически снимется в Конфигураторе из-за описанной выше оптимизации БСП. В результате проверка РольДоступна() вернет значение Ложь, и администратор не увидит нужную панель!

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


Если РольДоступна("ДополнительныеОтчетыДляСпецов") Или РольДоступна("ПолныеПрава") Тогда
    // Показать секретную панель отчетов
КонецЕсли;

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

Пошаговый алгоритм: как правильно добавить и назначить новую роль в БСП

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

Шаг 1. Создание роли в Конфигураторе
Создаем новую роль в дереве метаданных конфигурации (или в расширении). Настраиваем для нее права доступа на нужные объекты. Обратите внимание: у роли обязательно должны быть минимальные права на запуск клиента, если она планируется как основная, либо роль должна быть вспомогательной.

Шаг 2. Обновление справочника идентификаторов метаданных
Запустием информационную базу в режиме Предприятия. Для того чтобы БСП узнала о существовании новой роли, справочник ИдентификаторыОбъектовМетаданных должен обновиться. Обычно это происходит автоматически при запуске под правами администратора после обновления конфигурации. Если этого не произошло, или вы работаете в процессе разработки, выполните обновление принудительно с параметром запуска:

/С ЗапуститьОбновлениеИнформационнойБазы

Также обновить метаданные можно программно, выполнив в консоли кода следующую команду:

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

Шаг 3. Создание нетипового профиля групп доступа
Никогда не редактируйте предопределенные (типовые) профили, поставляемые фирмой 1С! Создайте собственный профиль групп доступа:

  1. Перейдите в раздел Администрирование — Настройки пользователей и прав — Профили групп доступа.
  2. Нажмите кнопку Создать.
  3. В списке доступных ролей (разрешенных действий) найдите вашу новую роль и отметьте её флагом.
  4. Запишите и сохраните профиль.

Шаг 4. Назначение профиля пользователю через Группу доступа
Теперь создадим саму группу доступа:

  1. Перейдите в справочник Группы доступа.
  2. Создайте новую группу доступа, выберите в качестве профиля созданный вами на Шаге 3 профиль.
  3. На вкладке "Участники" добавьте нужного пользователя (или нескольких).
  4. Нажмите Записать и закрыть.

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

Что делать, если права все равно не синхронизируются?

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

  1. Проверьте регламентные задания. Убедитесь, что регламентное задание СинхронизацияДанныхСПользователямиИнформационнойБазы выполняется успешно и не зависло. Проверить это можно через обработку "Консоль регламентных заданий".
  2. Проверьте привязку UUID. Запустите стандартную обработку БСП "Сопоставление пользователей информационной базы" или проверьте программно связь между справочником Пользователи и пользователями ИБ. Если связь нарушена, перезапишите элемент справочника Пользователи в режиме Предприятия (при перезаписи БСП попытается сопоставить его по имени или создаст нового пользователя ИБ с правильным идентификатором).
  3. Анализируйте Журнал регистрации. При возникновении ошибок записи прав БСП всегда оставляет подробный след в Журнале регистрации. Отфильтруйте события по метаданным справочника Пользователи или по критичности "Ошибка", чтобы локализовать проблему.

Следуя этим правилам и понимая логику работы Библиотеки стандартных подсистем, вы навсегда избавитесь от проблемы "слетающих" прав и обеспечите стабильную и безопасную работу пользователей в вашей системе 1С.

← На главную