1с получить роли объекта

Обновлено: 08.07.2024

В обрате отсутствуют какие-либо отборы и настройки. Если есть необходимость их можно доработать, но тут их нет именно потому, что обработку старались сделать как можно проще (на совершенство обработка не претендует :) )

Необходимо получить отчет по доступу ролей к объектам метаданных (сегодня озадачили этим J). При этом рассматриваются только три возможных состояния:

  • Роли доступно свойство «Изменение» (другое не проверяется)
  • Роли доступно свойство «Чтение» (если изменение не доступно, т.е. «Изменение» имеет более высокий приоритет чем «Чтение»)
  • В остальных случаях считается что роли ничего не доступно.

Действительно, если роли доступно «Редактирование» или «Пометка на удаление», то «Изменение» ей так же должно быть доступно, а если доступно «Просмотр», то обязательно доступно «Чтение». Поэтому, для читабельности отчета (иначе он просто потеряет читабельность) мы и контролируем эти два права (Изменение и Чтение).

Так же необходимо проверить права роли на работу с самой конфигурацией («Монопольный режим», «Администрирование» и т.д.)

Отчет должен быть представлен в виде шахматки:

  • Строки «Объекты метаданных»
  • Колонки «Роли»

В общем случае последовательность работ такая:

  1. Создаем список ролей
  2. Создаем список контролируемых прав (с учетом приоритета)
  3. Создаем список объектов метаданных
  4. Сравниваем все три параметра в процедуре «ПравоДоступа» и выводим результат.

Для реализации создадим новую обработку и форму, весь программный код поместим в модуль формы. На форме создадим «табличное поле» («ПолеТабличногоДокумента1») куда будем выводить отчет. Кроме того будут реквизиты формы:

дМетаданных – дерево метаданных (вывод нужно организовать с учетом иерархии). Конечно, от него можно отказаться и просто организовать обход по метаданным, но лучше его оставить, так как если потребуется поставить фильтр на объекты в отчет оно может здорово пригодится (достаточно в дереве добавить новую колонку, проставить в нее соответствующий признак, и при выводе учитывать – в данной обработке не реализовано).

спРоли – список ролей в конфигурации. Так же при необходимости отборов добавляем на форму и используем свойство «Пометка».

спПрав – список контролируемых прав с учетом приоритетов (то что важнее заносится раньше).

Соответственно в форму при открытии укажем процедуры по заполнению всех нужных списков.

Роли_ПолучитьСписок();

Роли_СписокПрав();

ДеревоМетаданных();

КонецПроцедуры

Начнем с простого – список прав (их всего две), и список ролей

Процедура Роли_СписокПрав()

спПрав.Добавить("Изменение");

спПрав.Добавить("Чтение");

КонецПРоцедуры

Процедура Роли_ПолучитьСписок()

спРоли = новый СписокЗначений;

Для каждого РОль Из Метаданные.Роли Цикл

ОбработкаПрерыванияПОльзователя();

спРоли.Добавить(РОль,РОль_Описание(РОль));

КонецЦикла;

КонецПроцедуры

Функция РОль_Описание(Роль)

Результат = РОль.Представление();

Если Результат<>РОль.Имя Тогда

Результат = Результат+"["+Роль.Имя+"]";

КонецЕсли;

возврат Результат;

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

При формировании отчета мы хотим видеть пользовательское представление метаданных и ролей, а так же их представление в метаданных (поэтому и вводим Функцию «РОль_Описание» - в принципе ее можно описать непосредственно в процедуре «Роли_ПолучитьСписок» - дело вкуса :) )

Если посмотреть в описании процедуры «ПравоДоступа» то такие права как «Администрирование» тоже по идеи нужно отнести в СписокПрав, но исходя из целесообразности и наглядности отчета мы условно отнесем их к метаданным и занесем в дальнейшем в дМетаданные (что бы видеть их как строки – создадим отдельную ветку).

Дерево метаданных состоит из двух колонок «Описание» и «Представление»

Процедура ДеревоМетаданных() Экспорт

дМетаданные.Колонки.Добавить("Объект");

дМетаданные.Колонки.Добавить("Представление");

ДеревоМетаданных_ДобавитьАдминистрирование();

ДеревоМетаданных_Добавить("Справочники");

ДеревоМетаданных_Добавить("Документы");

ДеревоМетаданных_Добавить("ЖурналыДокументов","Журналы документов");

ДеревоМетаданных_Добавить("Перечисления");

ДеревоМетаданных_Добавить("Отчеты");

ДеревоМетаданных_Добавить("Обработки");

ДеревоМетаданных_Добавить("ПланыВидовХарактеристик","Планы видов характеристик");

ДеревоМетаданных_Добавить("ПланыСчетов","Планы счетов");

ДеревоМетаданных_Добавить("ПланыВидовРасчета","Планы видов расчета");

ДеревоМетаданных_Добавить("РегистрыСведений","Регистры сведений");

ДеревоМетаданных_Добавить("РегистрыНакопления","Регистры накопления");

ДеревоМетаданных_Добавить("РегистрыБухгалтерии","Регистры бухгалтерии");

ДеревоМетаданных_Добавить("РегистрыРасчета","Регистры расчета");

ДеревоМетаданных_Добавить("БизнесПроцессы","Бизнес-процессы");

ДеревоМетаданных_Добавить("Задачи");

КонецПроцедуры

ПРоцедура ДеревоМетаданных_ДобавитьАдминистрирование()

СтрокаГр = дМетаданные.Строки.Добавить();

СтрокаГр.Объект = "Администрирование";

СтрокаГр.Представление = "Права на конфигурацию в целом";

мсПрав = новый СписокЗначений;

мсПрав.Добавить("Администрирование","Администрирование");

мсПрав.Добавить("МонопольныйРежим","Монопольный режим");

мсПрав.Добавить("АктивныеПользователи","Просмотр списка активных пользователей");

мсПрав.Добавить("ЖурналРегистрации","Журнал регистрации");

мсПрав.Добавить("ВнешнееСоединение","Внешнее соединение");

мсПрав.Добавить("Automation","Использование automation");

мсПрав.Добавить("ИнтерактивноеОткрытиеВнешнихОбработок","Интерактивное открытие внешних обработок");

мсПрав.Добавить("ИнтерактивноеОткрытиеВнешнихОтчетов","Интерактивное открытие внешних отчетов");

мсПрав.Добавить("Вывод","Вывод на печать, запись и копирование в буфер обмена");

мсПрав.Добавить("ОбновлениеКонфигурацииБазыДанных","Обновление конфигурации базы данных");

Для каждого эл Из мсПрав Цикл

ОбработкаПрерыванияПОльзователя();

НС = СтрокаГр.Строки.Добавить();

НС.Объект = Эл.Значение;

НС.Представление = Эл.Представление;

КонецЦикла;

КонецПРоцедуры

Процедура ДеревоМетаданных_Добавить(что,Представление="")

Первая = истина;

Для каждого мет Из Метаданные[что] Цикл

Если Первая Тогда

СтрокаГр = дМетаданные.Строки.Добавить();

СтрокаГр.Объект = Что;

Если ПустаяСтрока(Представление) Тогда

СтрокаГР.Представление = Что;

иначе

СтрокаГР.Представление = Представление;

КонецЕсли;

первая = Ложь;

КонецЕсли;

строка = СтрокаГр.Строки.Добавить();

Строка.Объект = Мет.Имя;

Строка.Представление = Мет.Представление();

КонецЦикла;

КонецПроцедуры

Как было сказано для ряда прав мы создаем отдельную ветку «Администрирование» (процедура «ДеревоМетаданных_ДобавитьАдминистрирование()»), и определять эту ветку мы будем по объекту «Администрирование». Остальные возможные объекты метаданных мы добавляем с помощью процедуры ДеревоМетаданных_Добавить(,). При этом в процедуре ДеревоМетаданных_Добавить мы контролируем что бы хотя бы один объект такого типа есть (иначе ветка не нужна). Кроме того, если «Представление» в параметрах процедуры не задана, то считаем что прдеставление равно типу.

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

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

Для этого создадим отдельную функцию:

Функция РОль_Права(Мет,Роль)

Результат = "";

Если ТипЗнч(Мет)=Тип("Строка") Тогда

// это проверка Административных прав

Если ПравоДоступа(Мет,Метаданные,РОль) Тогда

Результат = "Да";

иначе

результат = "";

КонецЕсли;

возврат Результат;

КонецЕсли;

Для каждого Право Из спПрав Цикл

ОбработкаПрерыванияПОльзователя();

Если ПравоДоступа(Право.Значение,Мет,РОль) Тогда

Результат = Право.Значение;

прервать;

КонецЕсли;

КонецЦикла;

возврат Результат;

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

В которую если у нас контролируется права на объект метаданных в качестве первого параметра и передаем этот объект (функция в этом случае возвращает значение права учетом приоритета), а если нужно право из ветки «Администрирование», то передаем строковую переменную с именем этого права (функция возвращает «Да» или). По типу первого параметра и определяется, как использовать функцию ПравоДоступа.

Формирование самого отчета делаем при помощи процедур

Процедура Сфомировать_Вывод(ИмяСекции,данные=Неопределено)

Сек = Макет.ПолучитьОбласть(ИмяСекции+"|Начало");

пСек = Сек.Параметры;

Уровень = 0;

ЭтоАдминистирирование = ТипЗнч(Данные)=Тип("СтрокаДереваЗначений");

Если ИмяСекции="С1" Тогда

уровень = 1;

пСек.Объект = данные;

ИначеЕсли ИмяСекции="С2" Тогда

уровень = 2;

Если ЭтоАдминистирирование Тогда

пСек.Объект = данные.Представление;

пСек.Обозначение = данные.Объект;

иначе

пСек.Объект = данные.Представление();

пСек.Обозначение = данные.Имя;

КонецЕсли;

КонецЕсли;

ТабДок.Вывести(Сек,Уровень);

Для каждого Роль Из спРоли Цикл

ОбработкаПрерыванияПОльзователя();

Сек = Макет.ПолучитьОбласть(ИмяСекции+"|В1");

пСек = Сек.Параметры;

Если ИмяСекции = "Ш1" Тогда

пСек.РОль = Роль.Представление;

иначеЕСли ИмяСекции = "С2" Тогда

Если ЭтоАдминистирирование Тогда

Права = РОль_Права(данные.Объект,Роль.Значение);

иначе

Права = РОль_Права(данные,Роль.Значение);

КонецЕсли;

Если Права = "Изменение" или Права="Да" тогда

Сек.Область("ТекПрава").ЦветФона = WebЦвета.СветлоЗеленый;

ИначеЕсли Права = "Чтение" тогда

Сек.Область("ТекПрава").ЦветФона = WebЦвета.Желтый;

КонецЕсли;

пСек.Права = Права;

КонецЕсли;

ТабДок.Присоединить(Сек);

КонецЦикла;

ТабДок.Присоединить(Макет.ПолучитьОбласть(ИмяСекции+"|Конец"));

КонецПроцедуры

Процедура Сфомировать(Кнопка)

ТабДок = ЭлементыФормы.ПолеТабличногоДокумента1;

ТабДок.Очистить();

Макет = ПолучитьМакет("Макет");

Сфомировать_Вывод("Ш1");

ТабДок.ФиксацияСверху = ТабДок.ВысотаТаблицы;

ТабДок.ФиксацияСлева = 2;

ТабДок.НачатьАвтогруппировкуСтрок();

Для каждого Ст1 Из дМетаданные.Строки Цикл

ОбработкаПрерыванияПОльзователя();

ЭтоАдминистирирование = Ст1.Объект = "Администрирование";

Если ЭтоАдминистирирование Тогда

Мет1 = Метаданные;

иначе

Мет1 = Метаданные[Ст1.ОБъект];

КонецЕсли;

Сфомировать_Вывод("С1",Ст1.Представление);

Для каждого Ст2 Из Ст1.Строки Цикл

ОбработкаПрерыванияПОльзователя();

Если ЭтоАдминистирирование Тогда

Мет2 = Ст2;

иначе

Мет2 = Мет1[СокрЛП(Ст2.ОБъект)];

КонецЕсли;

Сфомировать_Вывод("С2",Мет2);

КонецЦикла;

КонецЦикла;

ТабДок.ЗакончитьАвтогруппировкуСтрок();

Сфомировать_Вывод("И1");

КонецПроцедуры

Сфомировать – организует таблицу и обход по строкам

Сфомировать_Вывод – организует обход по колонкам

Ну и для красоты отчета те роли, которые имеют право «Изменение» или «Да» (для администрирования) окрашиваем зеленым, роли на «Чтение» - желтым. Для этого создали в секции специальную именованную область.

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

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

Общая схема системы прав доступа подразумевает:

  1. Создание ролей для доступа к объектам отдельно для чтения и для записи.
  2. Объединение ролей в профили (в том числе поставляемые).
  3. Назначение профилей группам доступа с ограничением доступа по видам доступа.
  4. Добавление в группы доступа пользователей и групп пользователей.


Такой механизм обладает гибкостью и универсальностью. Это позволяет его достаточно широко применять. Однако непосредственное использование этого механизма громоздко и трудоемко.

Во время работы пользователя в базе 1С при попытке выполнить действие (на которое у него нет разрешения) система выдаст окно предупреждения, примерно такого вида:


Если открыть журнал регистрации по пользователю, то можно увидеть объект и недостающее право в событии «Доступ. Отказ в доступе». Например, отсутствие права на чтение константы, как на рисунке ниже:


Задача администратора базы данных или сотрудника технической поддержки в том, чтобы добавить пользователю недостающее право, а для этого требуется найти Роль, которую следует назначить пользователю.

В большинстве случаев (но не во всех) для этого достаточно выполнить следующие шаги:

1. Найти роли, дающие права на объект, в регистре сведений Права ролей

Перейти в меню - Все функции - Регистры сведений - Права ролей (или перейти по навигационной ссылке e1cib/list/РегистрСведений.ПраваРолей)

Примечание: Пункт Все функции, можно включить так: Переходим в меню - Настройки - Параметры - Отображать команду "Все функции"


Регистр типовой, наполнен объектами метаданных и ролями, которые дают на них права.


Выполняем поиск по интересующему нас объекту (документу, отчету, регистру, обработке и т.п.).

Получаем список задействованных ролей (как на рисунке выше с документом Авансовый отчет):

  • Добавление изменение авансовых отчетов (роль)
  • Чтение авансовых отчетов (роль)

Открываем справочник Профилей, это можно сделать так:

  • Переходим в меню - Все функции - Справочники - Профили групп доступа
  • Раздел - НСИ и администрирование - Настройки пользователей и прав - Профили групп доступа
  • Или перейти по навигационной ссылке e1cib/list/Справочник.ПрофилиГруппДоступа

Чтобы определить подходящие профили, добавляем отбор на форму списка

Ещё - Настроить список - Закладка Отбор - Добавляем отбор по полю табличной части Ссылка.Роли.Роль


После этого можно удобно вычислить нужные профили, например, с ролью Чтение авансовых отчетов.

Примечание: Предварительно установите в списке Ещё - Режим просмотра - Список (чтобы убрать группы)


Если нужных профилей не оказалось, то создайте новый профиль или измените существующий.

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

3. Назначить пользователю группу доступа по профилю

Определив нужный профиль доступа, вам необходимо в связанную с ним группу доступа, добавить пользователя.

Группы доступа видны по ссылке в форме Профиля


Если нужной группы доступа нет, то создаем ее.

Открыв связанную с профилем группу доступа, добавляем в неё пользователя


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

Сам процесс можно ускорить соединив все шаги: 1,2,3 - в одном отчете или расширении.

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

Схема запроса для системы компоновки примерно такая:

Таблицу РегистрСведений.ПраваРолей (Отбор: Объект метаданных) связываем по Роли с таблицей Справочник. ПрофилиГруппДоступа.Роли связываем по реквизиту с таблицей Справочник. ГруппыДоступа.Профиль.


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


Вообще можно настраивать как угодно отчет.

Также можно сформировать, например Матрицу Пользователей (кто в какой группе доступа). Перейти в Настройки, где поставить в строках Пользователей, в колонка Профили, в ресурсах Чтение


Открываем 1С:Предприятие - Разделы - НСИ и администрирование - Печатные формы, отчеты и обработки - Дополнительные отчеты и обработки - Добавляем отчет (или перейти по навигационной ссылке e1cib/list/Справочник.ДополнительныеОтчетыИОбработки)

  • Отчет тот же самый добавляем в расширение.
  • Интересным моментом оказалось как динамически вызвать отчет в большинстве форм объектов, максимально просто.

Я выбрал следующий способ:

Почти в каждом модуле формы есть событие ПриСозданииНаСервере(. ), в нем вызывается общее событие СобытияФорм.ПриСозданииНаСервере(. )


а далее в нем событие переопределяемого модуля


именно это событие МодификацияКонфигурацииПереопределяемый.ПриСозданииНаСервере() я перетащил в расширение с ключом выполнения "&После"

чтобы вызвать отчет в процедуре динамически вывожу снизу на форму объекта элемент формы ДекорацияФормы, в который с помощью ФорматированнойСтроки(. ) передаю навигационную ссылку на команду открытия отчета из расширения.


Далее в самой команде отчета с помощью метода АктивноеОкно() определяю форму объекта, из которой произошел запуск и формирую отчет с нужным параметром

Получилось следующее (на примере элемента справочника "Ресурсные спецификации"):

  • Гиперссылка "Права на объект" появляется в формах
  • По ее нажатию вызывается отчет "Права на объект" с указанием объекта в заголовке и отбором по типу метаданных



В отчете видно в колонках какие роли дают какие права, и в строках у кого уже есть такие права и в какую группу можно включить пользователя.

1) Переходим в меню - Настройки - Параметры - Отображать команду "Все функции"

2) Переходим в меню - Все функции - Стандартные - Управление расширениями конфигурации - Добавляем расширение


Для проверки установленных прав под пользователем воспользуйтесь обработкой Запуск 1С под любым пользователем (без необходимости указания пароля) 1С:Зарплата и управление персоналом КОРП, редакция 3.1 (3.1.10.78) - будет работать 1С:Комплексная автоматизация, 1С: Управление торговлей и др, т.к. регистр сведений Права ролей есть почти в каждом прикладном решении. - для других конфигураций можно быстро модифицировать.

Обработка выгрузки и загрузки данных через XML между идентичными конфигурациями с возможностью установки произвольных отборов на выгружаемые объекты.

Подключаемый отчет на системе компоновки данных по типам объектов 1С показывает: 1) Совокупности таблиц SQL для хранения объекта 1С и их предназначение; 2) Число объектов данного типа; 3) Размеры хранения данных и индексов в MB (мегабайтах); 4) Сравнение данных двух баз

Предназначается для запуска сеанса другого пользователя из своего сеанса 1С (если пароль вам неизвестен).

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

Онлайн диаграмма доступных лицензий 1С и показателей ресурсов сервера 1С в различных измерениях и отборах.

Обработка ищет все объекты базы, в которых одновременно присутствуют перечисленные элементы. Построена на базе типовой обработки Все функции - Стандартные - Поиск ссылок на объект, но позволяет накладывать отбор не по одному объекту, а по нескольким, что позволяет настраивать поиск по комбинациям условий

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

Обработка для массовой проверки доработок конфигурации: Открытие форм, Печать, Формирование отчетов, Проведение документов, Запись справочников, ПВХ, ПВР. Выдает список обнаруженных ошибок. Рекомендуется применять для тестирования обновленной конфигурации, перед установкой пользователям. В коде используются универсальные методы поэтому подходит для большинства конфигураций, построенных на базе библиотеки стандартных подсистем.

Групповая обработка ссылок вида Объект не найден (502:37855254002e11eb11e73b8f36150d9e) заполняется максимально просто копированием и вставкой из буфера: 1) Выделяет уникальные идентификаторы (далее УИ); 2) Ищет ссылки на объекты базы по УИ; 3) Создаёт пустые объекты с указанным УИ; 4) Регистрирует найденные ссылки для обмена данными. Работает на любых продуктах 8.3

Обработка на управляемых формах для работы с календарями google, событиями календарей и контактами.

Обработка проверяет наличие и решает проблему с ошибкой развернутого сальдо в Оборотно-сальдовой ведомости (регистр бухгалтерии Хозрасчетный) из-за ошибки Универсального редактора реквизитов или кода программиста, устанавливающего пустые ссылки в значениях Валюты, Подразделения, Направления деятельности не равными NULL. И пересчёт итогов тут точно не поможет.

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

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

На время сеанса отключаем контроль остатков и проверку документов в ERP, КА, УТ типовыми средствами и простым расширением.

Часто при моделировании примеров бизнес-процессов, на запуске в эксплуатацию или закрытии требуется несколько раз прогнать ситуацию с разными настройками, а для этого изменить, удалить ранее введенную цепочку документов. Дается все это с трудом. Ты уверен, что не навредишь своими действиями системе, но документы цепляют друг друга и ругаются контролями остатков, не разрешая тебе менять их в произвольном порядке.

Есть несколько удобных опций для облегчения внесения изменений.

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

Пример технического задания для практического понимания основных разделов.

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

Ссылка на компетенции по 1С:ERP - команда со знаниями, умениями и успешными проектами.

Окно ошибки при нарушении прав доступа в 1С

Привилегированный режим работы

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

Включение привилегированного режима осуществляется методом

Если вызвать метод УстановитьПривилегированныйРежим (Ложь) большее количество раз, чем УстановитьПривилегированныйРежим (Истина) , то будет вызвано исключение.

Получить текущее значение привилегированного режима можно функцией

которая возвращает значение типа Булево.

Безопасный режим работы

В безопасном режиме:

  • привилегированный режим отменяется, а попытка перехода в привилегированный режим игнорируется;
  • запрещено использование внешних средств по отношению к 1С (доступ к файловой системе, доступ к интернету, загрузка внешних компонент, механизмы COM).

Включение безопасного режима осуществляется методом

Если вызвать метод УстановитьБезопасныйРежим (Ложь) большее количество раз, чем УстановитьБезопасныйРежим (Истина) , то будет вызвано исключение.

Получить текущее значение безопасного режима можно функцией

которая возвращает значение типа Булево.

Программная работа с Ролями

Для проверки доступности Роли текущему пользователю:

Для определения права доступа (чтение, изменение и т.д.) к объекту метаданных:

Для проверки прав доступа текущего пользователя на объект метаданных:

Процедура ВыполнитьПроверкуПравДоступа () отличается от функции ПравоДоступа () тем, что доступна только для текущего пользователя. При отсутствии права вызывается исключение, а в журнал регистрации пишется событие ОтказВДоступе.

Для получение информации о праве доступа на определенный объект метаданных для пользователя или роли с учетом указанных полей:

Для получения представления права по имени:

Программная работа с Ролями в БСП

В типовых конфигурациях, построенных на Библиотеке стандартных подсистем, в общих модулях есть методы для работы с ролями. Вот некоторые из них:

Пользователи . РолиДоступны ( ИменаРолей , Пользователь = Неопределено, УчитыватьПривилегированныйРежим = Истина)
Пользователи . ЭтоПолноправныйПользователь ( Пользователь = Неопределено, ПроверятьПраваАдминистрированияСистемы = Ложь, УчитыватьПривилегированныйРежим = Истина)
УправлениеДоступом . ЕстьРоль (Знач Роль , Знач СсылкаНаОбъект = Неопределено, Знач Пользователь = Неопределено)
УправлениеДоступом . ЕстьПраво ( Право , СсылкаНаОбъект , Пользователь = Неопределено)
УправлениеДоступом . ЧтениеРазрешено ( ОписаниеДанных )
УправлениеДоступом . ИзменениеРазрешено ( ОписаниеДанных )
УправлениеДоступом . ОграничиватьДоступНаУровнеЗаписей ()
УправлениеДоступом . ПраваПоИдентификаторам ( Идентификаторы = Неопределено)

В общих модулях у каждого метода есть подробное описание. Там можно посмотреть описание самого метода, входных параметров и возвращаемого значения.

Остались вопросы?
Спросите в комментариях к статье.

Режим позволяет проанализировать права одной роли и ответить на вопросы:

  • Кому назначена определенная роль?
  • Какие права доступа назначены для роли? Какие ограничения по RLS действуют для роли?
  • В какие профили включена роль?
  • К каким объектам конфигурации 1С роль предоставляет доступ?
  • Получить описание роли 1С.

При анализе ролей можно просмотреть дополнительную информацию:

Для пользователя настроили ограничение по Организации, функционал типовой и особо ограничение никто проверять не стал.

Оказалось пользователь может видеть все документы без ограничения и полностью видеть их содержимое, но при записи выходит ошибка по правам доступа. Причина оказалась простой - для роли на добавление и изменение документа в праве на "Чтение" не установлены ограничения по RLS.

Перед тем как предоставить доступ через добавление роли в профиль можно было проверить какие права предоставлены роли - это ювелирная работа, но позволила в будущем назначать права более предсказуемо.


Анализ прав доступа к объекту конфигурации

Режим позволяет проанализировать права доступа к одному объекту конфигурации и ответить на вопросы:

  • Кто имеет доступ к объекту?
  • Какие роли дают права доступа к объекту 1C?
  • Какие Профили / Группы доступа - нужно назначить, чтобы получить доступ к объекту?

При анализе прав к объекту можно просмотреть дополнительную информацию:

  • В какие подсистемы включен объект;
  • Получить список функциональных опций в состав которых включен объект:
  • Основные роли (При анализе Конфигурации).

В типовой версии ЗУП некоторые элементы выведены через общие команды, например справочник "Тарифные группы". Если пользователю назначить доступ только к объекту он не сможет открыть сам справочник из интерфейса, ему так же нужно настроить доступ к общей команде "Тарифные группы". Сразу увидеть что включено в командный интерфейс, а что нужно разрешить пользователю поможет отчет.



Проанализировать за счет каких Групп доступа пользователь получил именно такую комбинацию прав, гораздо проще с отчетом.

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

Причина оказалась в том, что через неудачно добавленную роль для пользователя были отключены ограничения по RLS для чтения справочника.


Анализ прав доступа профиля

Режим позволяет проанализировать профиль доступа в различных разрезах и ответить на вопросы:

  • Какие объекты доступны для профиля доступа? Какие разрешения доступа предоставляет профиль?
  • Какие роли включены в профиль доступа?
  • Каким пользователям назначен профиль доступа?
  • Какие Группы доступа есть на основании профиля?

Доступные варианты отчета в режиме анализа прав доступа профиля:

Вариант отчета проанализировать права доступа профиля в виде списка.


Вариант отчета проанализировать права доступа профиля в табличном виде.


Анализ прав пользователя

Режим позволяет проанализировать роли и права доступа пользователя и ответить на вопросы:

  • К каким объектам C пользователь имеет доступ?
  • Как сложилась комбинация прав доступа для пользователя из отдельных ролей?
  • Через какие роли пользователь получил доступ к объектам? Какие Профили и Группы доступа назначены пользователю?

Доступные варианты отчета в режиме анализа прав доступа пользователя:

Вариант отчета позволяет проанализировать права доступа пользователя в виде списка.


Вариант отчета позволяет получить список прав доступа к объектам для Пользователя в табличном виде.


Анализ прав пользователя, без анализа ролей

Режим позволяет проанализировать права доступа указанного пользователя и найти ответы на вопросы:

  • К каким объектам конфигурации пользователь 1С имеет доступ?
  • Какие ограничения по RLS действуют для пользователя?

В отличии от режима "Анализ прав пользователя":

  • Нельзя получить данные по: Ролям, Профилям. При этом доступные роли пользователя можно проанализировать в дополнительном окне;
  • Работает быстрее.

Доступные варианты отчета в режиме анализа прав доступа пользователя (Без анализа ролей):

Вариант отчета позволяет проанализировать права доступа пользователя в виде списка.


Вариант отчета: Пользователь, без анализа ролей (Матрица)

Вариант отчета позволяет проанализировать права доступа пользователя в табличном виде.


Произвольный режим настройки

Режим позволяет проанализировать права доступа пользователей к объектам конфигурации 1С в различных разрезах.

В данном режиме можно получить максимально полную информацию о настройке прав доступа по Ролям, Группам доступа, Объектам и Пользователям.

Можно сравнить Роли/Пользователей/Профили/"Группы доступа" между собой.

Можно получить данные по правам доступа на несколько Объектов/Пользователей/Профилей и т.д.

Доступные варианты отчета в режиме анализа прав доступа в произвольном режиме:

Вариант отчета позволяет гибко проанализировать права доступа по нескольким объектам.


Вариант отчета сравнить несколько ролей пользователей, и выбрать нужную роль для настройки прав пользователей.


Произвольный режим настройки, без анализа ролей

Режим позволяет проанализировать права доступа пользователей к объектам.

  • Какие объекты доступны пользователям? Какие ограничения прав доступа действуют для пользователей?
  • Кто из пользователей обладает большими правами?
  • Какие права имеют пользователи? Как отличаются права разных пользователей? Возможность сравнить права доступа пользователей 1С.

В данном режиме нельзя получить данные по Ролям, Профилям и Группам доступа. Работает быстрее относительно произвольного режима.

Доступные варианты отчета в режиме анализа прав доступа в произвольном режиме (Без анализа ролей):

Вариант отчета: Произвольный, без анализа ролей (Матрица)

Вариант отчета позволяет проанализировать права пользователей к объектам.

Вариант отчета: Произвольный, без анализа ролей (Пользователи)

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


Метаданные без ролей

Инструмент поиска потенциальных вопросов пользователей. В данном режиме можно получить список метаданных по которым не настроены роли.


Перед формированием можно указать исключаемые из проверки роли (по умолчанию это роль "Полные права").

Демонстрация работы отчета

Вопрос : В БСП есть “Отчет по правам доступа” чем Ваш отчет лучше?

  • Гибкая настройка отчета - которая позволяет выводить права доступа в удобном виде;
  • Отчет позволяет провести анализ прав пользователей по более широкому перечню объектов;
  • Анализ всех прав доступа объектов платформы 8.3.14 (на более старых версиях не доступные права будут скрыты);
  • Получение данных в различных разрезах: Роль, Пользователь, Объект и т.д. (в отчете "Отчет по правам доступа"- только по пользователям).

Вопрос : На какие вопросы можно найти ответы при помощи отчета?

  • Какие права назначены Пользователю / Пользователям; Какие права пользователей 1С;
  • Какие права доступа 1С; Какие права пользователей 1С;
  • Что может делать пользователь в системе;
  • Через какие Роли, Профили и “Группы доступа” пользователи получили права;
  • Кто может получить доступ к объекту;
  • Увидеть почему возникает нарушение прав доступа;
  • Как настроить права доступа; Как настроить разграничение прав доступа 1С;
  • Какие группы доступа назначить чтобы пользователь получил необходимые права;
  • Получить имена Функциональных опций которые могут скрывать объект;
  • В какой подсистеме выведен объект;
  • Отчет по системе прав доступа;
  • Как разграничить права доступа пользователей;
  • Какие права доступа назначены профилю
  • Провести Анализ ролей 1С 8.3 и 8.2.

Вопрос : На каких конфигурациях работает отчет?

На всех конфигурациях написанных на основе БСП 2.0 и выше с внедренной подсистемой “ Управление доступом ”.

Например: “Бухгалтерия предприятия 3.0”, “Зарплата и управление персоналом 3”, “Управление торговлей 11”, "Комплексная автоматизация 2", "Управление небольшой фирмой", "Управление нашей фирмой", "ERP Управление предприятием", "Розница 2" и т.д.

Версию БСП можно посмотреть в регистре сведений “Версии подсистем” по имени подсистемы “СтандартныеПодсистемы”.

Вопрос : Если роль назначена через конфигуратор будет ли она выведена в отчет?

Анализ прав проводиться по данным подсистемы “Управление доступом” БСП и назначенная через конфигуратор роли не будет связаны с правами пользователя. Но увидеть, что пользователю доступны дополнительные права можно в режиме отчета “Пользователь, без анализа ролей”.

Вопрос : Как создавался отчет?

Отчет подключается стандартными средствами Дополнительных отчетов и обработок: Администрирование -> Печатные формы, отчеты и обработки -> Дополнительные отчеты и обработки -> Загрузить из файла.

Читайте также: