Своя роль в 1С 8.3: права, ограничения и выдача пользователю

· 10 мин

Содержание

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

Типичная ситуация: кладовщику нужно видеть остатки, но не цены закупки, а готовые роли типовой конфигурации дают либо слишком много, либо слишком мало. Выход — создать роль в 1С 8.3 самому: с минимумом прав, в месте, которое переживёт обновление, и с выдачей через правильный механизм.

Что такое роль и как она работает в 1С 8.3

Роль — это объект метаданных, набор разрешений. В ней по каждому объекту конфигурации (справочнику, документу, регистру, отчёту) отмечено, что с ним можно делать: читать, добавлять, изменять, удалять, проводить.

Главные свойства механизма:

  • ✅ Права суммируются. Если у пользователя три роли, он получает объединение всех разрешений. Запретить что-то ролью нельзя: «запрещающих» ролей в 1С нет.
  • ✅ Без роли — ничего. Объект, на который нет права ни в одной роли пользователя, для него не существует: его нет в меню, а обращение из кода даёт ошибку.
  • ✅ Права бывают двух уровней. Базовые (Чтение, Добавление, Изменение, Удаление) действуют на любую работу с данными, в том числе из кода. Интерактивные (Интерактивное добавление, Интерактивное удаление, Интерактивная пометка удаления и другие) — только на действия пользователя в формах.
  • ✅ Права зависят друг от друга. Нельзя дать Изменение без Чтения или Интерактивное удаление без Удаления. Редактор следит за этим сам: ставите зависимое право — включается базовое, снимаете базовое — снимаются зависимые.

Кроме прав на объекты, роль может ограничивать доступ на уровне записей (RLS): например, пользователь видит документы только своей организации.

Подготовка: где создавать роль — в основной конфигурации или в расширении

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

Что нужно для работы:

  1. Пользователь с правом Администрирование и доступом в режим «Конфигуратор».
  2. Свежая резервная копия базы: Администрирование → Выгрузить информационную базу в конфигураторе (файл .dt). Выгрузка .dt требует монопольного режима — в это время в базе никто не должен работать.
  3. Решение о месте хранения роли (см. таблицу).
ВариантКогда подходитЧто учесть
Основная конфигурация, снятая с поддержкиСамописная конфигурация или типовая, которую уже дорабатывалиНужно включить возможность изменения; обновления типовой станут сложнее
Расширение конфигурацииТиповая на поддержке (БП, ЗУП, УТ)Роль живёт отдельно, обновление типовой её не трогает; права даются только на заимствованные в расширение объекты
Изменение существующей роли типовойПочти никогдаПри обновлении правки придётся сравнивать и сохранять вручную
Где создавать новую роль?

Как разрешить изменение основной конфигурации

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

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

Как подготовить расширение

  1. Конфигурация → Расширения конфигурации → «Добавить». Задайте имя, например МоиРоли.
  2. Откройте дерево расширения. Чтобы дать права на объект основной конфигурации, его нужно сначала заимствовать: в основной конфигурации правой кнопкой по объекту → «Добавить в расширение».
  3. В ветке Общие → Роли расширения добавьте роль — дальше всё так же, как в основной конфигурации.

Создание роли в конфигураторе по шагам

Шаг 1. Добавить объект

В дереве конфигурации раскройте Общие → Роли, правой кнопкой → «Добавить». Задайте:

  • Имя — без пробелов, по смыслу: КладовщикЧтениеОстатков, ОператорВводаЗаказов.
  • Синоним — то, что увидит администратор в списке ролей: «Кладовщик: чтение остатков».
  • Комментарий — зачем роль заведена и кто просил. Через год это сэкономит разбор.

💡 Удобно держать единый префикс у своих ролей, например ит_. Тогда в длинном списке типовых ролей свои находятся сразу.

Шаг 2. Открыть редактор прав

Двойной щелчок по роли открывает окно с двумя частями. Слева — дерево всех объектов конфигурации, начиная с корня. Справа — список прав для выделенного объекта. Флажок = право выдано. На отдельной вкладке «Шаблоны ограничений» хранятся шаблоны RLS.

Шаг 3. Выдать права на корень конфигурации

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

ПравоЗачем
Тонкий клиент, Веб-клиент, Толстый клиентБез хотя бы одного из них пользователь не запустит программу в этом клиенте
Сохранение данных пользователяСохранение настроек форм, отчётов, списков
ВыводПечать, сохранение в файл, копирование в буфер
Интерактивное открытие внешних обработок / отчетовТолько если пользователь реально открывает внешние файлы — это дыра в безопасности
Администрирование, Административный режим, Обновление конфигурации базы данныхОбычной рабочей роли не нужны

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

Шаг 4. Отметить права на объекты

Пройдите по веткам и выдайте минимум, нужный для работы:

  1. Для справочника, который пользователь только смотрит: Чтение, Просмотр, Ввод по строке.
  2. Для документа, который он вводит: дополнительно Добавление, Изменение, Интерактивное добавление, Редактирование, а для проводимых — Проведение и Интерактивное проведение.
  3. Для регистров, по которым строятся остатки в формах и отчётах: Чтение.
  4. Для отчётов и обработок: Использование и Просмотр.

Самая частая причина ошибки «Нарушение прав доступа!» в новой роли — забытое право Чтение на связанный справочник или регистр. Документ открывается, а реквизит «Склад» или колонка остатков упираются в объект, на который права нет.

Шаг 5. Сохранить и обновить базу

Нажмите F7 или Конфигурация → Обновить конфигурацию базы данных. Пока база не обновлена, в режиме «1С:Предприятие» роль не появится. Добавление роли не меняет структуру таблиц, поэтому обычно обновление проходит без монопольного режима. Если платформа предложит динамическое обновление, работающие пользователи увидят изменения только после перезапуска.

Шаг 6. Выдать роль пользователю

Здесь путь зависит от конфигурации:

  • Самописная или без БСП. Конфигуратор: Администрирование → Пользователи → карточка пользователя → вкладка «Прочие» → флажок у роли.
  • Типовая на БСП (БП 3.0, ЗУП 3.1, УТ 11). Роли напрямую не назначают: при записи группы доступа программа перезапишет список ролей пользователя. Откройте в режиме «1С:Предприятие» Администрирование → Настройки пользователей и прав → Профили групп доступа. Поставляемый профиль изменить нельзя — скопируйте его, отметьте в копии свою роль и включите пользователя в группу доступа с этим профилем.

Дополнительные настройки роли: флажки и ограничения по записям

Три флажка внизу редактора

ФлажокЧто делаетРекомендация
Устанавливать права для новых объектовОбъекты, добавленные в конфигурацию позже, получат права в этой роли автоматическиДля рабочих ролей выключить, иначе после доработки роль внезапно даст лишнее
Устанавливать права для реквизитов и табличных частей по умолчаниюПрава на реквизиты наследуются от объектаОставить включённым, если не ограничиваете отдельные поля
Независимые права подчиненных объектовПрава на реквизиты задаются отдельно от прав на объектВключать, только когда скрываете конкретные реквизиты

Ограничение доступа на уровне записей (RLS)

Права на объект отвечают на вопрос «можно ли вообще». RLS отвечает на вопрос «какие именно записи». Условие пишут для прав Чтение, Добавление, Изменение, Удаление: выделите право у объекта и заполните колонку «Ограничение доступа к данным».

Пример для самописной конфигурации: пользователь видит документы только своей организации. Заводится параметр сеанса ТекущаяОрганизация (ветка Общие → Параметры сеанса), его значение задаётся в модуле сеанса при входе, а в ограничении пишется условие на языке запросов:

Организация = &ТекущаяОрганизация

Повторяющиеся условия выносят на вкладку «Шаблоны ограничений» и вызывают по имени — так меньше копий одного текста.

💡 В типовых конфигурациях на БСП своё RLS в роли обычно не пишут. Ограничение по организациям, складам и другим видам доступа включается в режиме «1С:Предприятие»: Администрирование → Настройки пользователей и прав → флажок ограничения доступа на уровне записей, затем значения доступа задаются в группах доступа.

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

Проверка и отладка новой роли

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

  1. Создайте пользователя Тест_Кладовщик и выдайте ему роль (или профиль, если конфигурация на БСП). Полные права не давайте.
  2. Запустите «1С:Предприятие» под ним. Удобно задать пользователя в конфигураторе: Сервис → Параметры → вкладка «Запуск 1С:Предприятия». Тогда «Начать отладку» (F5) сразу открывает сеанс от его имени.
  3. Пройдите реальный сценарий: открыть список, создать документ, заполнить, провести, распечатать, построить отчёт.
  4. На каждое сообщение «Нарушение прав доступа!» смотрите подробности ошибки: там указано, к какому объекту и какое право требовалось.
  5. Добавьте это право в роль, обновите базу (F7), перезапустите тестовый сеанс.

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

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

Перенос ролей между базами

Роль — часть конфигурации, а не данных. Выгрузка .dt и обмен данными её не переносят отдельно. Способы:

СпособКогдаПорядок
Сравнение и объединениеРоль в основной конфигурации, базы на одной типовойВыгрузите конфигурацию-источник в .cf; в приёмнике Конфигурация → Сравнить, объединить с конфигурацией из файла; снимите все флажки, кроме нужной роли; «Выполнить» и F7
Файл расширения .cfeРоль в расширенииСохраните расширение в файл .cfe; в приёмнике подключите его в конфигураторе или в «1С:Предприятии» (Администрирование → Печатные формы, отчеты и обработки → Расширения в БП 3.0)
Выгрузка в файлы XMLХранение ролей в Git, групповая разработкаКонфигурация → Выгрузить конфигурацию в файлы; права роли лежат в файле Rights.xml в каталоге роли

Перед объединением в приёмнике сделайте резервную копию: ошибка в выборе флажков перезапишет чужие доработки.

При переносе учитывайте две вещи. Права на объекты, которых нет в базе-приёмнике, потеряются — сначала перенесите сами объекты. А если в роли есть RLS с параметрами сеанса, эти параметры и код их установки тоже должны быть в приёмнике.

Ошибки при создании и настройке ролей

  • ❌ Роль создана, но в списке пользователя её нет. Не выполнено «Обновить конфигурацию базы данных», либо расширение с ролью не подключено к этой базе.
  • ❌ Роль выдана в конфигураторе, а через день пропала. Конфигурация на БСП: при записи группы доступа роли пересчитались из профилей. Выдавайте роль через профиль.
  • ❌ Пользователь не сохраняет настройки отчётов. В его ролях нет права Сохранение данных пользователя.
  • ❌ После доработки роль «сама» дала доступ к новому документу. Включён флажок «Устанавливать права для новых объектов».
  • ❌ Правка типовой роли исчезла после обновления. Изменения поставщика перезаписали роль. Решение — своя дополнительная роль или расширение.
  • ❌ Пользователю дали Полные права «временно». Временное остаётся навсегда. Для разовой задачи лучше отдельная роль с минимумом прав.

Частые вопросы о ролях в 1С

Можно ли ролью запретить действие, разрешённое другой ролью?
Нет. Права всех ролей пользователя складываются. Чтобы ограничить доступ, уберите из набора роль, которая его даёт, и замените её более узкой.
Сколько ролей можно выдать одному пользователю?
Жёсткого предела на практике нет. Но чем больше ролей с RLS, тем сложнее итоговые условия в запросах и тем медленнее работа.
Можно ли скрыть от пользователя одно поле документа?
Да. Включите у роли «Независимые права подчиненных объектов» и снимите Просмотр и Редактирование у реквизита. Право Чтение на реквизит обычно оставляют, иначе ломаются формы и отчёты.
Нужен ли монопольный режим, чтобы добавить роль?
Как правило, нет: структура таблиц не меняется. Пользователям, которые были в базе во время обновления, нужно перезайти, чтобы новые права вступили в силу.
Чем роль отличается от профиля группы доступа?
Роль — объект конфигурации, создаётся в конфигураторе. Профиль — данные типовой конфигурации на БСП, набор ролей, который администратор собирает в режиме «1С:Предприятие» без программиста.