Почему после обновления 1С:ERP до версии 2.4.12.80 слетели права к объектам в расширениях и как это исправить?

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

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

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

Выясняем причину: почему слетели права?

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

  1. Логика платформы при работе с ролями расширения. Если ваше расширение не содержит вообще ни одной собственной роли, платформа по умолчанию предоставляет доступ к новым объектам этого расширения абсолютно всем пользователям. Однако, как только разработчик добавляет в расширение хотя бы одну роль (даже пустую или предназначенную для сугубо технических целей), срабатывает механизм безопасности платформы. С этого момента права на ВСЕ объекты данного расширения должны быть явно прописаны в ролях и назначены пользователям. Рядовые пользователи мгновенно теряют доступ ко всему, что не описано явным образом.
  2. Влияние режима совместимости. Временное решение, упомянутое на форуме (откат режима совместимости расширения назад), действительно помогает вернуть старые, более «мягкие» правила проверки прав платформой. Но это лишь временная мера, которая блокирует использование новых возможностей платформы и может привести к другим ошибкам при последующих обновлениях.
  3. Конфликт БСП со свойством «Использовать основные роли для всех пользователей». В свойствах расширения в Конфигураторе есть флаг Использовать основные роли для всех пользователей. Логично предположить, что его включение решит проблему. Однако в конфигурациях, построенных на БСП (включая ERP 2.4), этот флаг принудительно сбрасывается системой при запуске регламентных процедур обновления метаданных. Фирма «1С» официально не поддерживает данное свойство в БСП, так как оно нарушает стандартную модель разграничения прав доступа.
  4. Регламентная очистка прав в БСП. В БСП встроен жесткий механизм контроля. За назначение ролей отвечает справочник «Профили групп доступа» в режиме «1С:Предприятие». Если вы попытаетесь вручную назначить пользователю роль расширения непосредственно в Конфигураторе, встроенное регламентное задание вызовет процедуру ОбновитьРолиПользователей в общем модуле УправлениеДоступомСлужебный и безвозвратно сотрет эти роли у пользователя, так как они не зарегистрированы в пользовательском режиме. Более того, у администраторов системы БСП принудительно очищает любые роли, оставляя только ПолныеПрава и АдминистрированиеСистемы, из-за чего администраторы физически не замечают проблему «слета» специфических ролей расширений, пока на нее не пожалуются обычные пользователи.

В версии ERP 2.4.12.80 произошло крупное обновление справочника «Идентификаторы объектов расширений». При обновлении базы запустились процедуры обновления вспомогательных данных БСП, которые автоматически очистили все роли расширений, настроенные в обход стандартных механизмов БСП.

Теперь рассмотрим, как правильно решить эту проблему на уровне разработчика и администратора.

Решение 1. Правильная настройка ролей в Конфигураторе и назначение через Профили доступа

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

Шаг 1. Заимствование ролей в расширение.

Если в вашем расширении созданы новые объекты (справочники, документы, регистры), вам необходимо предоставить к ним доступ. Для этого заимствуйте в расширение те типовые роли, которыми уже обладают ваши пользователи (например, Продавец, МенеджерПродаж или базовая роль ЗапускУправляемогоПриложения). Также в обязательном порядке необходимо заимствовать роль ПолныеПрава.

Шаг 2. Настройка прав на новые объекты.

Откройте каждую заимствованную роль внутри расширения и проставьте для нее права (Чтение, Просмотр, Изменение, Добавление) на новые объекты вашего расширения. Обратите внимание: в заимствованной роли ПолныеПрава также необходимо явно разрешить все действия с новыми объектами расширения.

Шаг 3. Регистрация ролей в режиме «1С:Предприятие».

После применения изменений в Конфигураторе запустите базу под правами администратора. Перейдите в раздел НСИ и администрирование -> Настройки пользователей и прав -> Профили групп доступа. Создайте новый профиль (или отредактируйте существующий), найдите в списке доступных ролей роли вашего расширения, отметьте их флагами и включите нужных пользователей в соответствующую группу доступа. Только в этом случае БСП не будет сбрасывать назначенные роли при перезапуске системы.

Решение 2. Использование стандартных суффиксов БСП для автоматического назначения

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

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

Решение 3. Программный обход сброса ролей (Хак для разработчиков)

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

Рассмотрим пример создания программного расширения метода в общем модуле УправлениеДоступомСлужебный. Нам потребуется переопределить поведение процедуры заполнения списка исключений для администратора:


&После("ПриЗаполненииСпискаДополнительныхРолейАдминистратора")
Процедура Мой_ПриЗаполненииСпискаДополнительныхРолейАдминистратора(ДополнительныеРолиАдминистратора)
    
    // Добавляем имя нашей роли из расширения в список исключений.
    // БСП больше не будет удалять эту роль у пользователей с полными правами.
    ДополнительныеРолиАдминистратора.Вставить("ИмяМоейРолиИзРасширения", Истина);
    
КонецПроцедуры

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

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

← На главную