Просмотр прав доступа и ролей 1С (документы, справочники и т.д.)

10.03.25

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

Обработка для просмотра прав пользователей в 1С на конкретный объект метаданных (документ, справочник, и т.д.). Может быть полезна для анализа и настройки прав пользователей в различных конфигурациях (1С: Бухгалтерия, 1С: ERP, 1С: Документооборот, 1С: Розница, 1С: УНФ и т.д.). Поможет понять, кому какие нужно добавить или изменить права, и какие роли.

Скачать файл

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

Наименование По подписке [?] Купить один файл
Просмотр прав доступа и ролей 1С 8.3 (документы, справочники и т.д.):
.epf 13,70Kb
2
2 Скачать (1 SM) Купить за 1 850 руб.

Обработка позволяет вывести на экран по объекту метаданных:

  • во-первых, роли с указанием состава прав на объект;
  • во-вторых, пользователей с указанием прав;
  • в-третьих, состав пользователей, у которых есть конкретная роль с указанием прав по этой роли.

Обработка практически универсальная, без привязки к БСП. Открывается через Файл - Открыть.

По умолчанию есть два ограничения:

  • справочник с пользователями должен называться "Справочник.Пользователи";
  • используется общая форма "ВыборОбъектовМетаданных".

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

 

 

Алгоритм работы в пользовательском режиме:

1. Необходимо в поле "Объект метаданных" нажать на три точки и выбрать необходимый объект, права на который требуется определить.

Например, выберем в 1С: Бухгалтерии документ Поступление (акт, накладная):

 

    

2. Далее заполнятся три табличных части формы:

  • "Роли, имеющие права на объект" - в данной табличной части указаны все роли, которые имеют хотя бы одно право на объект. Состав прав указан флагами в соответствующих столбцах. В зависимости от типа объекта состав прав может быть разным, например у справочников это могут быть Чтение, Добавление, Изменение, Удаление. А у документов добавятся Проведение, Отмена проведения.
  • "Все пользователи с доступом к объекту - здесь указаны все пользователи, которые имеют хотя бы одно право на объект. Состав прав указан флагами в соответствующих столбцах.
  • "Пользователи, у которых есть выделенная роль" - данная табличная часть показывает состав пользователей, у которых есть роль, которая выделена в первой табличной части ("Роли, имеющие права на объект"). Добавил данный функционал, так как благодаря ему удобно анализировать, откуда у того или иного пользователя возникло право на документ, справочник.

 

    

3. После этого можно посредством кнопок "Еще - Вывести список" сохранить, например, в Excel.

 

    

Основные процедуры (для программиста):

1. При создании на сервере заполняется кэш с пользователями ИБ и пользователями из справочника:

 

	ТаблицаПользователей = Новый ТаблицаЗначений;
	ТаблицаПользователей.Колонки.Добавить("ПользовательИБ", Новый ОписаниеТипов("ПользовательИнформационнойБазы"));
	ТаблицаПользователей.Колонки.Добавить("ПользовательСсылка", Новый ОписаниеТипов("СправочникСсылка." + СправочникПользователи));
	ВыборкаПользователи = Справочники.Пользователи.Выбрать();
	Пока ВыборкаПользователи.Следующий() Цикл
		ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(ВыборкаПользователи.ИдентификаторПользователяИБ);
		Если ПользовательИБ = Неопределено Тогда
			Продолжить;
		КонецЕсли;
		НовСтр = ТаблицаПользователей.Добавить();
		НовСтр.ПользовательИБ = ПользовательИБ;
		НовСтр.ПользовательСсылка = ВыборкаПользователи.Ссылка;
	КонецЦикла;
	ХранилищеТаблицыПользователей = ПоместитьВоВременноеХранилище(ТаблицаПользователей, УникальныйИдентификатор);

    

2. При выборе объекта метаданных заполняются табличные части с помощью проверки функцией ПравоДоступа(). Также происходит динамическая установка видимости необходимых колонок/прав в зависимости от применимости к типу метаданных. Например, "Проведение" не может быть у справочника. Реализовал через Попытку/Исключение.

Текст основной процедуры:

&НаСервере
Процедура ВыполнитьКомандуНаСервере()
	ТЗ_Роли.Очистить();	//первая табличная часть с ролями
	ТЗ_Пользователи.Очистить(); //вторая табличная часть со всеми пользователями
	ТЗ_ПользователиРоли.Очистить(); //третья табличная часть с пользователями с выделенной ролью, заполняется динамически
	Если Не ЗначениеЗаполнено(ОбъектМетаданных) Тогда
		ВызватьИсключение "Необходимо выбрать объект метаданных!";	
		Возврат;
	КонецЕсли;

	//формируем массив всех основных прав
	МассивПрав = Новый Массив;
	МассивПрав.Добавить("Чтение");
	МассивПрав.Добавить("Просмотр");

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

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

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

	МассивПрав.Добавить("ИнтерактивнаяПометкаУдаления");
	МассивПрав.Добавить("ИнтерактивноеСнятиеПометкиУдаления");
	МассивПрав.Добавить("ИнтерактивноеУдалениеПомеченных");
	
	МассивПрав.Добавить("Проведение");
	МассивПрав.Добавить("ИнтерактивноеПроведение");
	МассивПрав.Добавить("ИнтерактивноеИзменениеПроведенных");

	МассивПрав.Добавить("ОтменаПроведения");
	МассивПрав.Добавить("ИнтерактивнаяОтменаПроведения");

	МассивПрав.Добавить("Использование");
	МассивПрав.Добавить("Получение");
	МассивПрав.Добавить("Установка");

	Об = Метаданные.НайтиПоПолномуИмени(ОбъектМетаданных);

	//создаем ТЗ, с которой будем работать, и которую в дальнейшем загрузим в первую табличную часть
	мТЗ_Роли = Новый ТаблицаЗначений;      
	мТЗ_Роли.Колонки.Добавить("РольСсылка", Новый ОписаниеТипов("ОбъектМетаданных"));
	мТЗ_Роли.Колонки.Добавить("Роль", Новый ОписаниеТипов("Строка"));
	мТЗ_Роли.Колонки.Добавить("РольИмя", Новый ОписаниеТипов("Строка"));
	мТЗ_Роли.Колонки.Добавить("ПолноеИмя", Новый ОписаниеТипов("Строка"));
	мТЗ_Пользователи = Новый ТаблицаЗначений;
	мТЗ_Пользователи.Колонки.Добавить("Пользователь", Новый ОписаниеТипов("СправочникСсылка.Пользователи"));
	КоличествоПрав = МассивПрав.Количество();
	СтруктураПрав = Новый Структура;
	ТипБулево = Новый ОписаниеТипов("Булево");

	//для каждого права проверяем применимость к объекту метаданных и исходя из этого устанавливаем видимость колонок во всех ТЧ
	Для й = 1 По КоличествоПрав Цикл
		Инд = КоличествоПрав - й;
		Право = МассивПрав[Инд];
		Попытка
			ПравоДоступа(Право, Об);
			Элементы["ТЗ_Роли" + Право].Видимость = Истина;          
			Элементы["ТЗ_Пользователи" + Право].Видимость = Истина;
			Элементы["ТЗ_ПользователиРоли" + Право].Видимость = Истина;
			мТЗ_Роли.Колонки.Добавить(Право, ТипБулево);
			мТЗ_Пользователи.Колонки.Добавить(Право, ТипБулево);
			СтруктураПрав.Вставить(Право, Ложь);
		Исключение
			Элементы["ТЗ_Роли" + Право].Видимость = Ложь;
			Элементы["ТЗ_Пользователи" + Право].Видимость = Ложь;
			Элементы["ТЗ_ПользователиРоли" + Право].Видимость = Ложь;
			МассивПрав.Удалить(Инд);
		КонецПопытки;
	КонецЦикла;

	//заполняем первую ТЧ, добавляя те роли, которые имеют хотя бы одно из прав на объект
	Для каждого Роль Из Метаданные.Роли Цикл
		ЕстьХотяБыОдноПраво = Ложь; 
		Для каждого Право Из МассивПрав Цикл
			ЕстьПраво = ПравоДоступа(Право, Об, Роль);
			Если Не ЕстьХотяБыОдноПраво И ЕстьПраво Тогда
				ЕстьХотяБыОдноПраво = Истина;
			КонецЕсли;
			СтруктураПрав[Право] = ЕстьПраво;
		КонецЦикла;
		Если ЕстьХотяБыОдноПраво Тогда
			НовСтрока = мТЗ_Роли.Добавить();
			НовСтрока.РольСсылка = Роль;   
			НовСтрока.Роль = Роль.Синоним;
			НовСтрока.РольИмя = Роль.Имя;
			НовСтрока.ПолноеИмя = Роль.Имя;
			ЗаполнитьЗначенияСвойств(НовСтрока, СтруктураПрав);
		КонецЕсли;
	КонецЦикла;

	//заполняем вторую ТЧ пользователями, которые имеют хотя бы одну роль из первой ТЧ
	ТаблицаПользователей = ПолучитьИзВременногоХранилища(ХранилищеТаблицыПользователей);
	Для каждого Стр Из ТаблицаПользователей Цикл
		ПользовательИБ = Стр.ПользовательИБ;
		Ссылка = Стр.ПользовательСсылка;
		ПользовательИмеетХотьОднуРоль = Ложь;
		Для каждого СтрТЗ Из мТЗ_Роли Цикл
			Если Не ПользовательИБ.Роли.Содержит(СтрТЗ.РольСсылка) Тогда
				Продолжить;
			КонецЕсли;
			Если Не ПользовательИмеетХотьОднуРоль Тогда
				НовСтр = мТЗ_Пользователи.Добавить();
				НовСтр.Пользователь = Ссылка;
				ПользовательИмеетХотьОднуРоль = Истина;
			КонецЕсли;
			Для каждого Право Из МассивПрав Цикл
				Если СтрТЗ[Право] И Не НовСтр[Право] Тогда
					НовСтр[Право] = Истина;		
				КонецЕсли;		
			КонецЦикла;
		КонецЦикла;
	КонецЦикла;
	
	ТЗ_Роли.Загрузить(мТЗ_Роли);
	ТЗ_Пользователи.Загрузить(мТЗ_Пользователи);

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

Обработка не затрагивает такие категории, как "Профили групп доступа", регистр "Права ролей", и прочее.

Проверено на следующих конфигурациях и релизах:

  • Бухгалтерия предприятия, редакция 3.0, релизы 3.0.171.20

права доступа прав 1С права пользователя в 1С недостаточно прав 1С право просмотр права в 1С бухгалтерии нарушение прав доступа отчет права

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Платные (руб)

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

15500 руб.

02.09.2020    178415    987    403    

947

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

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

15000 руб.

10.11.2023    12925    53    33    

72

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

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

5940 руб.

27.05.2021    40363    298    106    

228

Инструменты администратора БД Роли и права Системный администратор Программист Пользователь 8.3.14 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, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 18.09.2024, версия 1.2

18000 руб.

06.12.2023    11769    50    8    

80

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

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

4560 руб.

21.05.2019    1696065    580    194    

140

Роли и права Системный администратор Программист Платформа 1С v8.3 1C:Бухгалтерия 1С:Управление торговлей 11 Платные (руб)

Данная система разработана как альтернатива стандартной системе напоминаний. Но имеет ряд существенных преимуществ: отображение в базе или с отправкой по почте, свое расписание, возможность фильтрации по ролям и пользователям, формирование своих запросов и макетов, шаблоны писем, работа в фоне. А также может блокировать работу пользователей при заданных условиях. Может работать в составе любой конфигурации. Имеется справка с описанием возможностей. (Обновление от 20.02.2024, версия 2.2, расширение)

19200 руб.

29.11.2019    26144    18    8    

38

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

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

3000 руб.

23.02.2018    59949    167    262    

159
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. UPKA 10.03.25 13:47 Сейчас в теме
Нельзя ли сделать отбор по роли и посмотреть, к каким метаданным имеется доступ?
2. user_rix 7 10.03.25 14:00 Сейчас в теме
(1) Нет, обработка больше про ответ на вопросы: «У каких пользователей есть права на этот конкретный объект? И какие права?»
3. user1832003 53 11.03.25 05:51 Сейчас в теме
(1) в целом это можно легко написать. Единственное что придется пробегать все объекты дерева, т.к. реквизит "права" у роли недоступен для программного взаимодействия и все надо проверять на ПравоДоступа(). МОжет когда-то это поменяется и такие обработки станут писаться быстрее и работать раз в 100 быстрее
4. UPKA 11.03.25 15:38 Сейчас в теме
(3) Просто чаще бывает, что кто то добавит роль в расширение и единственный способ это просматривать почти все объекты, что бы понять к чему роль имеет доступ.
Оставьте свое сообщение