Права на объект (расширение, отчет)
Администрирование - Роли и права
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Роли — это общие объекты конфигурации, предназначенные для реализации ограничения прав доступа в прикладных решениях. В процессе ведения списка пользователей прикладного решения каждому пользователю ставится в соответствие список ролей, которыми определяется, какие действия, над какими объектами метаданных может выполнять пользователь.
Общая схема системы прав доступа подразумевает:
- Создание ролей для доступа к объектам отдельно для чтения и для записи.
- Объединение ролей в профили (в том числе поставляемые).
- Назначение профилей группам доступа с ограничением доступа по видам доступа.
- Добавление в группы доступа пользователей и групп пользователей.

Такой механизм обладает гибкостью и универсальностью. Это позволяет его достаточно широко применять. Однако непосредственное использование этого механизма громоздко и трудоемко.
Во время работы пользователя в базе 1С при попытке выполнить действие (на которое у него нет разрешения) система выдаст окно предупреждения, примерно такого вида:

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

Задача администратора базы данных или сотрудника технической поддержки в том, чтобы добавить пользователю недостающее право, а для этого требуется найти Роль, которую следует назначить пользователю.
В большинстве случаев (но не во всех) для этого достаточно выполнить следующие шаги:
Перейти в меню - Все функции - Регистры сведений - Права ролей (или перейти по навигационной ссылке e1cib/list/РегистрСведений.ПраваРолей)
Примечание: Пункт Все функции, можно включить так: Переходим в меню - Настройки - Параметры - Отображать команду "Все функции"

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

Выполняем поиск по интересующему нас объекту (документу, отчету, регистру, обработке и т.п.).
Получаем список задействованных ролей (как на рисунке выше с документом Авансовый отчет):
- Добавление изменение авансовых отчетов (роль)
- Чтение авансовых отчетов (роль)
Открываем справочник Профилей, это можно сделать так:
- Переходим в меню - Все функции - Справочники - Профили групп доступа
- Раздел - НСИ и администрирование - Настройки пользователей и прав - Профили групп доступа
- Или перейти по навигационной ссылке e1cib/list/Справочник.ПрофилиГруппДоступа
Чтобы определить подходящие профили, добавляем отбор на форму списка
Ещё - Настроить список - Закладка Отбор - Добавляем отбор по полю табличной части Ссылка.Роли.Роль

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

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

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

На этапе настройки прав доступа в базах и изменениях должностных обязанностей пользователей мне приходилось многократно проходить эту цепочку шагов.
Сам процесс можно ускорить соединив все шаги: 1,2,3 - в одном отчете или расширении.
Используя рисунок выше "Общая схема системы прав доступа" можно соединить данные регистра Права ролей с профилями и группами доступа, сразу получив нужную картинку для анализа прав.
Схема запроса для системы компоновки примерно такая:
Таблицу РегистрСведений.ПраваРолей (Отбор: Объект метаданных) связываем по Роли с таблицей Справочник.ПрофилиГруппДоступа.Роли связываем по реквизиту с таблицей Справочник.ГруппыДоступа.Профиль.
Сам отчет строим на системе компоновки данных, чтобы его оформление и структуру менять по своему усмотрению.
Например, так

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

- Отчет тот же самый добавляем в расширение.
- Интересным моментом оказалось как динамически вызвать отчет в большинстве форм объектов, максимально просто.
Я выбрал следующий способ:
Почти в каждом модуле формы есть событие ПриСозданииНаСервере(...), в нем вызывается общее событие СобытияФорм.ПриСозданииНаСервере(...)

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

именно это событие МодификацияКонфигурацииПереопределяемый.ПриСозданииНаСервере() я перетащил в расширение с ключом выполнения "&После"
&После("ПриСозданииНаСервере")
Процедура ПНО_ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка)
Если РольДоступна("ПолныеПрава") Тогда
Кнопка = Форма.Элементы.Добавить("ПНО_ВызовПраваНаОбъект", Тип("ДекорацияФормы"));
Кнопка.Заголовок = Новый ФорматированнаяСтрока(НСтр("ru = 'Права на объект'"),,,,
"e1cib/command/Отчет.ПНО_ПраваНаОбъект.Команда.ПНО_ОткрытьОтчетПраваНаОбъект");
КонецЕсли;
КонецПроцедуры
чтобы вызвать отчет в процедуре динамически вывожу снизу на форму объекта элемент формы ДекорацияФормы, в который с помощью ФорматированнойСтроки(...) передаю навигационную ссылку на команду открытия отчета из расширения.

Далее в самой команде отчета с помощью метода АктивноеОкно() определяю форму объекта, из которой произошел запуск и формирую отчет с нужным параметром
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
пАктивноеОкно = АктивноеОкно();
Если пАктивноеОкно = Неопределено Тогда
Возврат;
КонецЕсли;
ТекстПоСтрокам = СтрЗаменить(пАктивноеОкно.Содержимое[0].ИмяФормы, ".", Символы.ПС);
ТипОбъекта = СтрПолучитьСтроку(ТекстПоСтрокам, 1);
ИмяОбъекта = СтрПолучитьСтроку(ТекстПоСтрокам, 2);
ОбъектМетаданных = НайтиОбъектМетаданных(ТипОбъекта + "." + ИмяОбъекта);
УсловияОтбора = Новый Структура("ОбъектМетаданных", ОбъектМетаданных);
ПараметрыФормы = Новый Структура("Отбор, СформироватьПриОткрытии", УсловияОтбора, Истина);
пФормаОтчета = ПолучитьФорму("Отчет.ПНО_ПраваНаОбъект.Форма", ПараметрыФормы);
пФормаОтчета.Заголовок = "ПРАВА НА ОБЪЕКТ: " + пАктивноеОкно.Заголовок;
пФормаОтчета.Открыть();
КонецПроцедуры
&НаСервере
Функция НайтиОбъектМетаданных(ПолноеИмя)
Возврат Справочники.ИдентификаторыОбъектовМетаданных.НайтиПоРеквизиту("ПолноеИмя", ПолноеИмя);
КонецФункции
Получилось следующее (на примере элемента справочника "Ресурсные спецификации"):
- Гиперссылка "Права на объект" появляется в формах
- По ее нажатию вызывается отчет "Права на объект" с указанием объекта в заголовке и отбором по типу метаданных


В отчете видно в колонках какие роли дают какие права, и в строках у кого уже есть такие права и в какую группу можно включить пользователя.
INFOSTART DataFormWizard: управление данными и формами в 1С 8.3
Решение INFOSTART DataFormWizard обеспечивает проверки ввода данных, скрывает от пользователя недоступную информацию и выполняет код в обработчиках — без изменения конфигурации. Легко устанавливается и работает практически с любой конфигурацией на управляемых формах.
Проверено на следующих конфигурациях и релизах:
- 1С:ERP Управление предприятием 2, релизы 2.5.21.128, 2.5.15.103
- 1С:Комплексная автоматизация 2, релизы 2.5.21.128, 2.5.15.103
- Зарплата и управление персоналом, редакция 3.1, релизы 3.1.33.19, 3.1.28.65
- Управление торговлей, редакция 11, релизы 11.5.21.128, 11.5.15.103
- Бухгалтерия предприятия, редакция 3.0, релизы 3.0.175.32, 3.0.147.25
- 1С:Управление холдингом 3.2 (русский и английский интерфейсы), релизы 3.2.10.27
- Бухгалтерия предприятия КОРП, редакция 3.0, релизы 3.0.175.32
- Зарплата и управление персоналом КОРП, редакция 3.1, релизы 3.1.33.19
- Управление нашей фирмой, редакция 3.0, релизы 3.0.11.161
Вступайте в нашу телеграмм-группу Инфостарт