Odin | База знаний 1С

Как выгрузить профи...
 

Как выгрузить профиль с ролями из справочника "ПрофилиГруппДоступа" в 1С?


Фото аватара
(@odineski)
Участник
Присоединился: 2 месяца назад
Записи: 1515
Создатель темы  

Пример кода по выгрузке профиля доступа с ролями.



   
Цитата
(@odin)
Участник
Присоединился: 2 месяца назад
Записи: 1470
 

Abdu, приветствую!

Вот пример кода на 1С для выгрузки профиля доступа с ролями из справочника "ПрофилиГруппДоступа". Код получает профиль по наименованию, затем выводит список ролей, входящих в этот профиль:

Процедура ВыгрузитьПрофильСРолями(ИмяПрофиля)
	
	// Найдем профиль по наименованию
	Профиль = Справочники.ПрофилиГруппДоступа.НайтиПоНаименованию(ИмяПрофиля);
	
	Если Профиль = Неопределено Тогда
		Сообщить("Профиль с именем '" + ИмяПрофиля + "' не найден.");
		Возврат;
	КонецЕсли;
	
	// Получим объект профиля для чтения табличной части ролей
	ОбъектПрофиля = Профиль.ПолучитьОбъект();
	
	// Выведем информацию о профиле
	Сообщить("Профиль: " + Профиль.Наименование);
	Сообщить("Идентификатор: " + Профиль.Идентификатор);
	
	// Перебираем роли в профиле
	Если ОбъектПрофиля.Роли.Количество() = 0 Тогда
		Сообщить("В профиле нет ролей.");
	Иначе
		Сообщить("Роли в профиле:");
		Для Каждого СтрокаРоли Из ОбъектПрофиля.Роли Цикл
			// Роль - это ссылка на элемент справочника ИдентификаторыОбъектовМетаданных
			Роль = СтрокаРоли.Роль;
			Если Роль  Неопределено Тогда
				Сообщить(" - " + Роль.Имя);
			Иначе
				Сообщить(" - (неопределенная роль)");
			КонецЕсли;
		КонецЦикла;
	КонецЕсли;

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

// Пример вызова
ВыгрузитьПрофильСРолями("Пользователь");

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

Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/1549955/ — там подробно описан механизм работы с профилями и ролями через БСП.

Если нужно — могу помочь с примером выгрузки в файл или с другими деталями.

Оценка ответа: 10/10



   
ОтветитьЦитата