Как разобраться в механизме ролей УТ 3.2 и почему не работает роль со всеми правами?

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

При работе с конфигурацией Управление торговлей для Беларуси (УТ 3.2), которая архитектурно является близким аналогом российской УТ 11, разработчики часто сталкиваются с огромным количеством ролей (более 300). Попытка упростить себе жизнь и создать одну «супер-роль» со всеми установленными флажками в конфигураторе обычно заканчивается неудачей: пользователь либо не может войти в систему, либо не видит часть функционала. В этой статье мы подробно разберем, как устроена современная система прав доступа, почему «все галочки» — это не выход, и как правильно настраивать права в конфигурациях на базе БСП (Библиотеки стандартных подсистем).

Принцип атомарности ролей в современных конфигурациях

Первое, что нам необходимо осознать: разработчики 1С перешли к принципу атомарности. Если в старых конфигурациях (например, УТ 10.3) роль МенеджерПоПродажам содержала в себе права на десятки объектов, то в УТ 3.2 одна роль отвечает за одну элементарную задачу. Например:

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

Двухуровневая проверка прав: Метаданные vs Программный код

Рассмотрим подробнее, почему ваша роль ТестоваяРоль со всеми включенными правами в конфигураторе не позволяет зайти в систему. В современных решениях проверка прав происходит на двух уровнях:

  1. Уровень платформы: Это те самые галочки в конфигураторе (Право на чтение, запись, проведение).
  2. Программный уровень (БСП): В коде модулей конфигурации (особенно в формах и обработчиках событий) прописаны жесткие проверки.

Выясним причину: программа часто использует конструкцию РольДоступна(). Если в коде написано:


Если РольДоступна("ДобавлениеИзменениеРеализацийТоваровУслуг") Тогда
    // Разрешить редактирование специфических полей
КонецЕсли;

То даже если у вашей ТестовойРоли есть полные права на документ РеализацияТоваровИУслуг, эта проверка вернет Ложь. Система «не знает» о существовании вашей новой роли и ожидает наличия именно конкретного типового идентификатора. Именно поэтому типовой код УТ может блокировать доступ даже при наличии прав в метаданных.

Обязательные системные и базовые роли

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

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

Инструментарий для анализа прав доступа

Вместо того чтобы заходить в каждую роль в конфигураторе, воспользуемся инструментами, которые уже заложены в систему. Рассмотрим подробнее раздел Администрирование — Настройки пользователей и прав.

Там вы найдете встроенные отчеты, которые гораздо эффективнее ручного поиска:

Использование RLS (Ограничение на уровне записей)

Проанализируем ситуацию, когда права вроде бы есть, но данных в списках нет. В УТ 3.2 активно используется RLS (Record Level Security). Даже если роль дает право на чтение всех Реализаций, настройки в пользовательском режиме (Группы доступа) могут ограничивать видимость по конкретным Организациям или Складам.

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

Практические рекомендации по созданию своих прав

Выясним, как правильно действовать, если типовые профили вам не подходят:

  1. Никогда не копируйте роль «Полные права» для создания ограниченного пользователя. Это создает дыру в безопасности и логические ошибки.
  2. Используйте комбинацию типовых ролей. Вместо создания одной новой роли, создайте в пользовательском режиме новый Профиль групп доступа и наберите в него 20-30 мелких типовых ролей. Это самый правильный и «чистый» способ.
  3. Точечное допирование. Если вам действительно нужно уникальное право (например, «Разрешить скидку более 50%»), создайте в конфигураторе маленькую роль только с этим правом. Затем добавьте её в типовой профиль в пользовательском интерфейсе.
  4. Журнал регистрации — ваш лучший друг. Если пользователь не может зайти, первым делом откройте Журнал регистрации с фильтром по этому пользователю. Там будет четко указано, на какой объект (например, на какую-то константу или регистр сведений) не хватило прав.

Подведем итог: работа с ролями в УТ 3.2 требует понимания механизмов Библиотеки стандартных подсистем. Откажитесь от практики «одна роль — один пользователь» в пользу «много мелких ролей — один профиль». Это обеспечит стабильность системы при обновлениях и позволит гибко управлять доступом без участия программиста в будущем.

← На главную