Предпросмотр прав роли до её создания: матрица доступа по метаданным

05.10.26

Администрирование - Роли и права

Как собрать таблицу «объект метаданных × роль» до правки конфигурации: методы ПравоДоступа и ПараметрыДоступа, перебор ролей, проверка ограничения условием по полю. Отдельно - документированное свойство Роль.Права, которое всегда возвращает Неопределено. Имена методов сверила со справкой 8.3.27.2130; в архиве модуль, пример списка объектов и чек-лист перед настройкой роли.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
09.3-companion.zip
.zip 7,11Kb
1 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.
🎯 О чём это - три главных тезиса
🗸Матрица прав роли по метаданным до её создания.
🗸Модуль matrica-prav.bsl: таблица объект на роль, проверка ограничения по полю, пример списка объектов в CSV для согласования с заказчиком, чек-лист перед настройкой роли.
🗸Объём прав роли согласуется таблицей до правки конфигурации, а после настройки проверяется повторным прогоном.
🧠 Суть статьи

Программисту и администратору 1С: как увидеть права роли таблицей до правки конфигурации. Платформа даёт для этого два метода, ПравоДоступа и ПараметрыДоступа, а свойство Роль.Права всегда возвращает Неопределено - прочитать права из метаданных роли нельзя. В архиве модуль матрицы, пример списка объектов и чек-лист; код сверен со справкой 8.3.27.2130 и на платформе не прогонялся.

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

Предпросмотр прав - это таблица «объект × роль», собранная двумя штатными методами. Она заменяет переписку с заказчиком о правах и повторный обход роли глазами в конфигураторе.

Для кого: программисты 1С и администраторы, которые ведут роли и профили доступа, а также те, кто согласовывает объём прав с заказчиком.

Права роли читаются не из самой роли. В метаданных у роли нет свойства со списком прав: Роль.Права документировано как тип Неопределено и всегда его возвращает, потому что работа со значением этого свойства во встроенном языке не предусмотрена. Справка платформы отправляет за правами к двум методам глобального контекста - ПравоДоступа и ПараметрыДоступа. Ими и собирается предпросмотр: роль можно описать таблицей до того, как она появится в конфигурации, а после создания - той же таблицей проверить.

📦 Что даёт платформа

  • ПравоДоступа(<Право>, <ОбъектМетаданных>, <Пользователь/Роль>, <СтандартныйРеквизит>) возвращает Булево: установлено право на объект или нет. Результат учитывает права на родительский объект и значение свойства «Независимые права подчинённых объектов» для роли.
  • Третий параметр принимает пользователя информационной базы или объект метаданных роли. При явно указанной роли метод возвращает право так, как оно определено в конфигурации, - это и нужно для предпросмотра.
  • ПараметрыДоступа(<НаименованиеПрава>, <ОбъектМетаданных>, <СписокПолей>, <Пользователь/Роль>) возвращает объект с двумя свойствами: Доступность (право есть или нет) и ОграничениеУсловием (задано ли ограничение доступа условием).
  • Метаданные.НайтиПоПолномуИмени(<ПолноеИмя>) находит объект по строке вида Справочник.Номенклатура, а Метаданные.Роли перебирает роли конфигурации. У роли доступны Имя, Синоним и ПолноеИмя.

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

🧱 Матрица «объект × роль»

Строки таблицы - объекты из списка, колонки - роли конфигурации. Список объектов удобно держать в файле: его же согласуют с заказчиком.

BSL UTF-8 фрагмент
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// Строит матрицу: строки - объекты метаданных из списка, колонки - роли конфигурации.
Функция МатрицаПрав(СписокОбъектов, Право)

    Матрица = Новый ТаблицаЗначений;
    Матрица.Колонки.Добавить("Объект");

    Для Каждого Роль Из Метаданные.Роли Цикл
        Матрица.Колонки.Добавить(Роль.Имя);
    КонецЦикла;

    Для Каждого ПолноеИмя Из СписокОбъектов Цикл

        Объект = Метаданные.НайтиПоПолномуИмени(Строка(ПолноеИмя));
        Если Объект = Неопределено Тогда
            Продолжить; // имени нет в конфигурации: строка списка помечается отдельно
        КонецЕсли;

        СтрокаМатрицы = Матрица.Добавить();
        СтрокаМатрицы.Объект = Объект.ПолноеИмя;

        Для Каждого Роль Из Метаданные.Роли Цикл
            СтрокаМатрицы[Роль.Имя] = ПравоДоступа(Право, Объект, Роль);
        КонецЦикла;

    КонецЦикла;

    Возврат Матрица;

КонецФункции

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

Матрица перебирает все роли конфигурации. На большой конфигурации с десятками ролей таблица получается широкой, поэтому для согласования с заказчиком в неё включают три-четыре роли.

🧪 Ограничения условием

Доступность из ПараметрыДоступа отвечает на вопрос «право есть», а ОграничениеУсловием - «сужено ли это право условием на строки». Второе свойство и есть то, что в типовых конфигурациях называют RLS.

BSL UTF-8 фрагмент
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// Проверяет право роли на объект с учётом ограничения по конкретному полю.
Функция ОграничениеПоПолю(Объект, Роль, ИмяПоля)

    Параметры = ПараметрыДоступа("Чтение", Объект, ИмяПоля, Роль);

    Если Не Параметры.Доступность Тогда
        // Права на чтение у роли нет: ограничение условием тоже приходит Истина, читать его бессмысленно
        Возврат "права нет";
    КонецЕсли;

    Если Параметры.ОграничениеУсловием Тогда
        Возврат "право есть, ограничено условием";
    КонецЕсли;

    Возврат "право есть, ограничений нет";

КонецФункции

Здесь есть место, где ошибаются: если права на действие у роли нет, ОграничениеУсловием всё равно возвращает Истина. Поэтому проверку начинают со свойства Доступность, и только потом смотрят на ограничение. Список полей в третьем параметре обязателен и задаётся строкой через запятую; имена табличных частей указывают как Товары.Сумма.

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

🧭 Проверка до создания роли

Порядок, при котором объём прав согласуется до правки конфигурации:

  1. Список объектов выгружается в файл: полное имя, комментарий, нужное право. Его подписывает заказчик.
  2. Матрица строится по этому списку для роли-образца, у которой права уже настроены.
  3. Разница между «что нужно» и «что есть у образца» обсуждается по таблице; редактор роли для этого разговора не нужен.
  4. Роль создаётся в конфигурации, после чего матрица прогоняется ещё раз - теперь уже по новой роли. Расхождение означает, что при настройке роли что-то пропустили.

Шаг 4 - здесь и вскрываются ошибки: до создания роли метод отвечает по правилам конфигурации, но самой роли там ещё нет, и проверить нужно то, что получилось после ручной настройки в конфигураторе.

🪤 Ловушки

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

🚧 Границы

  • Метод ПравоДоступа требует административных прав, если третий параметр указан явно. Обработку с матрицей запускают под пользователем с полными правами - и это отдельный разговор с заказчиком: инструмент согласования ролей не должен быть доступен всем.
  • Проверка доступна на сервере, толстом клиенте и во внешнем соединении. Тонкий клиент и мобильный клиент метод не поддерживают, поэтому обработку делают серверной.
  • Матрица показывает права роли в целом. Права конкретного пользователя складываются из его ролей и профилей доступа: чтобы увидеть их, третий параметр задают пользователем.
  • Таблица не заменяет редактор роли: она отвечает на вопрос «есть или нет» по списку объектов, а состав объектов в роли и признаки вроде «Независимые права подчинённых объектов» всё равно правятся в конфигураторе.

📋 Порядок работы

  1. Составьте файл со списком объектов: полное имя и право, которое для него требуется.
  2. Возьмите модуль из архива, вставьте в общий модуль с признаком «Сервер» или в модуль серверной обработки.
  3. Прогоните матрицу по роли-образцу и сравните её с файлом: расхождения - это и есть объём работы по роли.
  4. Создайте роль и настройте права в конфигураторе.
  5. Прогоните матрицу по новой роли. Строки, где право не встало, разбирайте поимённо.
  6. Сохраните итоговую таблицу в файл и приложите к описанию прав для заказчика: при следующем обновлении конфигурации её будет с чем сравнить.

📚 Источники

  • Синтакс-помощник платформы 1С:Предприятие 8.3.27.2130, файл справки shcntx_ru.hbk: Глобальный контекст.ПравоДоступа (с версии 8.0), Глобальный контекст.ПараметрыДоступа (с версии 8.0), ПараметрыДоступа.Доступность, ПараметрыДоступа.ОграничениеУсловием, ОбъектМетаданных: Роль.Права, ОбъектМетаданных: Роль.Имя, ОбъектМетаданных: Роль.ПолноеИмя, ОбъектМетаданныхКонфигурация.Роли, ОбъектМетаданныхКонфигурация.НайтиПоПолномуИмени, ТаблицаЗначений.Колонки, КоллекцияКолонокТаблицыЗначений.Добавить, СтрРазделить, ЗаписьТекста (конструктор «По имени файла», КодировкаТекста.UTF8).
  • Ограничения доступа на уровне строк (RLS) и профили доступа - раздел «Права доступа» в документации платформы на its.1c.ru (доступ по подписке ИТС).

📎 Файл к статье

Во вложении архив к статье: модуль матрицы прав, пример списка объектов, чек-лист перед настройкой роли и описание к ним.

  • matrica-prav.bsl: модуль целиком - матрица «объект × роль», чтение списка объектов из файла, проверка ограничения по полю, выгрузка матрицы в текст и запись в файл;
  • spisok-obektov.csv: пример списка объектов с колонками «требуемое право» и «комментарий», имена условные;
  • chek-list-roli.md: чек-лист перед созданием роли - что согласовать, что проверить после настройки, что приложить к описанию прав;
  • README.md: что проверено, как подключить модуль и что осталось непроверенным.

Файл модуля не привязан к конкретной конфигурации: он обращается только к метаданным и к переданному списку объектов, объектов базы не читает.

🏁 Итог

Права роли читаются методами ПравоДоступа и ПараметрыДоступа: у свойства Роль.Права документирован тип Неопределено, и это первое, о что спотыкаются при попытке написать свою матрицу. Собранная по списку объектов таблица даёт согласуемый документ до правки конфигурации и проверку после ручной настройки роли. Код из архива сверен со справкой платформы 8.3.27.2130 и на платформе не прогонялся: первый запуск делайте на копии базы под пользователем с полными правами. Расскажите в комментариях, чем вы сверяете права роли до её создания и что из этого прижилось.

 
Нинель Адольевна Щербакова
Нинель Адольевна Щербакова (Ninel_S)
Архитектор • SRE & DevOps инженер • HighLoad 1С
Автор 27 технических публикаций на Infostart. Разработчик NOPik, SRE-Suite-for-1C и мультиагентных ассистентов для экосистемы 1С:Предприятие.

Вступайте в нашу телеграмм-группу Инфостарт

1С права доступа роли RLS метаданные BSL администратор 8.3

См. также

Инструментарий разработчика Роли и права Запросы СКД Разработчик Руководитель проекта 1С:Предприятие 8 Платные (руб)

Инструменты для разработчиков 1С 8.3 и 8.5: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

16500 руб.

02.09.2020    285448    1606    423    

1219

Зарплата Роли и права Системный администратор Бухгалтер 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Комплексная автоматизация 2.х Молдова Россия Казахстан Бухгалтерский учет Платные (руб)

Расширение позволяет максимально полно ограничить доступ пользователей к данным по заработной плате, а именно закрывает доступ к документам начисления и выплаты заработной платы, не позволяет просматривать бухгалтерские отчеты по счету учета зарплаты а также убирает зарплатные проводки из журнала проводок. Расширение запрещает просматривать платежные документы на выплату зарплаты, так же не доступны регламентные отчеты в ПФР и ИФНС. Расширение предлагает готовые настроенные профили "Бухгалтер без зарплаты", "Только просмотр без зарплаты".

9675 руб.

27.05.2021    60499    536    129    

374

Инструменты администратора БД Роли и права Системный администратор Разработчик Пользователь 1С 8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Документооборот 1С:Зарплата и кадры государственного учреждения 3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Роли… Вы тратите много времени и сил на подбор ролей среди около 2400 в ERP или 1500 в Рознице 2, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 17.04.2026, версия 1.4.1, работает в 1С:ФРЕШ!

23180 руб.

06.12.2023    25042    85    14    

118

Инструменты администратора БД Инструментарий разработчика Роли и права Разработчик 1С:Предприятие 8 1C:Бухгалтерия Россия Платные (руб)

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

17000 руб.

10.11.2023    28687    103    46    

107

SALE! 20%

Роли и права 1С:Предприятие 8 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия государственного учреждения 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Платные (руб)

Универсальная обработка по настройке прав доступа пользователей в 1СЗУП, КА, УТ, ЕРП, ERP, УНФ, Розница, Управление холдингом) и разграничений позволяет в несколько кликов настроить даже самые нестандартные права.

5750 4600 руб.

22.12.2021    38571    209    78    

240

Логистика, склад и ТМЦ Роли и права Разработчик Бухгалтер Пользователь 1С:Предприятие 8 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Расширение для 1С:Бухгалтерия 3.0, которое позволяет использовать отдельные роли для доступа к складским документам, для доступа к документам раздела "Производство" и для доступа к документам раздела "Покупки".

5084 руб.

21.05.2019    1703924    607    197    

151

Роли и права Системный администратор Бухгалтер Пользователь 1С:Предприятие 8 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение предназначено для Бухгалтерии предприятия (версии ПРОФ и КОРП). Типовая конфигурация остается на поддержке. С помощью расширения менеджер по продажам будет иметь доступ к контрагентам и списку их документов только в случае, если он является для них ответственным. Пользователю с полными правами также доступна обработка «Назначение ответственных» для группового добавления/удаления ответственного в карточке контрагента. Есть версия данного расширения для клиентов Fresh - в магазине расширений (Fresh)

9516 руб.

14.09.2022    9380    16    6    

18

Ценообразование, анализ цен Роли и права Системный администратор 1С:Предприятие 8 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Расширение возможностей программы 1С:УНФ 1.6 и 3.0. Функционал расширения - разграничение всевозможных прав пользователей и контроль при совершении различных действий.

5100 руб.

23.02.2018    69250    184    264    

171
Для отправки сообщения требуется регистрация/авторизация