Как найти роль у всех пользователей

Запрос пользователей, имеющих определенную роль

Я
   aleksey_k

13.11.10 — 15:51

Господа, день добрый.

Есть ли возможность получить запросом всех пользователей из справочника Пользователи, которым назначена определенная роль?

   Irbis

1 — 13.11.10 — 15:52

Можно обходом по ПользователиИнформационнойБазы

   IRLes

2 — 13.11.10 — 15:53

Функция РольДоступна() используй, кстати можно попробовать в СКД ее использовать ;)

   Defender aka LINN

3 — 13.11.10 — 15:57

(0) У пользователей из справочника ролей нет, если что.

   aleksey_k

4 — 13.11.10 — 16:05

Спасибо, господа, все сделал.

   aleksey_k

5 — 13.11.10 — 16:27

Нет, не сделал

(3) указал на мое большое упущение :)

Скажите, можно ли программно по ПользовательИнформационнойБазы получить ссылку (или сам объект) на элемент справочника Пользователи?

   IRLes

6 — 13.11.10 — 17:11

ПользователиИнформационнойБазы.ПолучитьПользователей() ?

   aleksey_k

7 — 13.11.10 — 17:21

(6) я сделал так:

МассивВсехПользователей = ПользователиИнформационнойБазы.ПолучитьПользователей();
   МассивМенеджеровТМЦ = Новый Массив;
   Для Каждого ПользовательИзМассива Из МассивВсехПользователей Цикл
       Если ПользовательИзМассива.Роли.Содержит(Метаданные.Роли.МенеджерПоЗакупкеТМЦ) Тогда
           МассивМенеджеровТМЦ.Добавить(ПользовательИзМассива);
           ЭтаФорма.ЭлементыФормы.Сотрудник.СписокВыбора.Добавить(ПользовательИзМассива);
           //Если ПользовательИзМассива = Ответственный Тогда
              //ххх
           //КонецЕсли;
       КонецЕсли;
   КонецЦикла;

Условие «Если ПользовательИзМассива = Ответственный Тогда» никогда не выполнится — первая переменная имеет тип ПользовательИнформационнойБазы, вторая СправочникСсылка.Пользователи.

Как мне здесь первую переменную ПользовательИзМассива привести к типу СправочникСсылка.Пользователи? Что бы условие Если работало?

   IRLes

8 — 13.11.10 — 17:22

Такой вариант:

ТаблицаЗначений = Новый ТаблицаЗначений;
ТаблицаЗначений.Колонки.Добавить(«Пользователь»);
ТаблицаЗначений.Колонки.Добавить(«ЕстьРоль»);
Роль = «ПолныеПрава»;

Для Каждого Строчка Из ПользователиИнформационнойБазы.ПолучитьПользователей() Цикл
   СтрТЗ = ТаблицаЗначений.Добавить();
   СтрТЗ.Пользователь    = Справочники.Пользователи.НайтиПоНаименованию(Строчка.Имя);
   СтрТЗ.ЕстьРоль        = Строчка.Роли.Содержит(Метаданные.Роли.ПолныеПрава);
   Если СтрТЗ.ЕстьРоль Тогда
       Сообщить(«У пользователя: » + СтрТЗ.Пользователь + » есть эта роль!»);
   КонецЕсли;
КонецЦикла;

   IRLes

9 — 13.11.10 — 17:23

Таблицу создал, чтоб была :Р Вдруг тебе она нужна :)

   IRLes

10 — 13.11.10 — 17:23

А что собираешься делать с полученными ролями? Поделись секретом, любопытная тема :)

   IRLes

11 — 13.11.10 — 17:25

(7) Справочники.Пользователи.НайтиПоНаименованию(ПользовательИзМассива.Имя)

  

aleksey_k

12 — 13.11.10 — 17:56

(11) — спасибо!
Все работает.

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

Skip to content

1С — как в список пользователей в конфигураторе вывести их роли, отбор по ролям

Как в список пользователей в конфигураторе вывести их роли, отбор по ролям

По умолчанию в списоке пользователей в конфигураторе присутствуют всего 2 колонки «Имя», «Полное имя». Как добавить колонку «Роли», где перечислены все роли пользователя через запятую?

Порядок действий:

  • В контекстном меню выбрать «Настройки списка»;

  • В окне «Настройка списка», на вкладке «Колонки» отмечаем флажок «Роли» -> «Ок» (обратите внимание, что в данном окне можно включить видимость других колонок);

После этого список пользователей выглядит следующим образом:

Если ролей очень много, чтобы увидеть их все наведите курсор мыши на ячейку с ролями.

Как установить отбор / фильтр по ролям:

  • Нажать «Отбор» -> отметить флажками роли -> «Ок»

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

Связанные статьи

1С : как найти всех пользователей у которых есть определенная роль?

Выборка = ПользователиИнформационнойБазы.ПолучитьПользователей();

Для Каждого ЭлементМассива Из Выборка Цикл                 

Если Объект.аксСтатусСогласованияПоставщика = ПредопределенноеЗначение(«Перечисление.аксСтатусыСогласованияПоставшика.ПолныеПрава») Тогда

Сообщить(ЭлементМассива);

КонецЕсли;

КонецЦикла;

Похожее

1.Сбор информации
Мы собираем информацию, когда вы регистрируетесь на сайте, заходите на свой аккаунт, совершаете покупку, участвуете в акции и/или выходите из аккаунта. Информация включает ваше имя, адрес электронной почты, номер телефона и данные по кредитной карте.
Кроме того, мы автоматически регистрируем ваш компьютер и браузер, включая IP, ПО и аппаратные данные, а также адрес запрашиваемой страницы.

2. Использование информации
Информация, которую мы получаем от вас, может быть использована, чтобы:

  • Сделать услуги соответствующими вашим индивидуальным запросам
  • Предложить персонализированную рекламу
  • Улучшить наш сайт
  • Улучшить систему поддержки пользователей
  • Связаться с вами по электронной почте
  • Устроить акцию, конкурс или организовать исследование

3. Защита личных данных при онлайн-продажах
Мы являемся единственным владельцем информации, собранной на данном сайте. Ваши личные данные не будут проданы или каким-либо образом переданы третьим лицам по каким-либо причинам, за исключением необходимых данных для выполнения запроса или транзакции, например, при отправке заказа.

4. Раскрытие информации третьим лицам
Мы не продаем, не обмениваем и не передаем личные данные сторонним компаниям. Это не относится к надежным компаниям, которые помогают нам в работе сайта и ведении бизнеса при условии, что они соглашаются сохранять конфиденциальность информации.
Мы готовы делиться информацией, чтобы предотвратить преступления или помочь в их расследовании, если речь идет о подозрении на мошенничество, действиях, физически угрожающих безопасности людей, нарушениях правил использования или в случаях, когда это предусмотрено законом.
Неконфиденциальная информация может быть предоставлена другим компаниям в целях маркетинга, рекламы и т.д.
5. Защита информации
Мы используем различные средства безопасности, чтобы гарантировать сохранность ваших личных данных. К вашим услугам самое современное шифрование. VpnMentor также защищает ваши данные в режиме оффлайн. Только те сотрудники, которые работают с конкретным заданием (например, техническая поддержка или проведение оплаты) получают доступ к личным данным. Сервера и компьютеры, на которых записана конфиденциальная информация, находятся в безопасном окружении.
Использование файлов «cookie»
Наши файлы «cookie» используются для улучшения доступа к сайту и определения повторных посещений. Кроме того, они позволяют отследить наиболее интересующие запросы. Файлы «cookie» не передают никакую конфиденциальную информацию.
6. Отказ от подписки
Мы используем электронную почту, чтобы предоставить вам информацию по вашему заказу, новостям компании, информации по продуктам и т.д. Если вы желаете отказаться от подписки, в каждом письме даны подробные инструкции, как вы можете это сделать.

7. Согласие
Пользуясь услугами нашего сайта, вы автоматически соглашаетесь с нашей политикой конфиденциальности.

Проверка прав доступа

Область применения: управляемое приложение, обычное приложение.

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

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

Эти меры позволяют:

  • существенно упростить работу из кода с элементами управления, которые пропадают из коллекции Элементы (код Элементы.ИмяЭлемента.ИмяСвойства становится нерабочим);
  • повысить устойчивость кода к пересмотру состава ролей в конфигурации;
  • организовать контроль использования ролей в конфигурации (в противном случае, выполнять анализ прав доступа по флажкам, назначенных для ролей в различных элементах произвольных форм конфигурации, крайне затруднительно).

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

3. Для проверки прав доступа в коде следует использовать метод ПравоДоступа .
Например, неправильно:

Если РольДоступна(«ДобавлениеИзменениеСтранМира») Тогда .
Если РольДоступна(«ПросмотрОтчетаПопулярныеСтраны») Тогда .

Если ПравоДоступа(«Редактирование», Метаданные.Справочники.СтраныМира) Тогда .
Если ПравоДоступа(«Просмотр», Метаданные.Отчеты.ПопулярныеСтраны) Тогда .

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

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

Если РольДоступна(. ) Или <ЭтоПолноправныйПользователь> Или ПривилегированныйРежим() Тогда .

Если вам в программном коде 1С 8 необходимо проверить установлена ли какая либо роль у текущего пользователя, то воспользуйтесь функцией глобального контекста РольДоступна(<Роль>) , которая возвращает значение Истина, если указанная в скобках роль доступна и Ложь, если не доступна. Наименование проверяемой роли следует писать в кавычках.

Пример: При проведении некоторого документа вам нужно проверять установлена ли у пользователя проводящего его роль ПолныеПрава, если доступна то выполнять процедуру проведения, если нет, то выдавать сообщение: “Для проведения данного документа необходима роль Полные права”.

Решение: В начале процедуры ОбработкаПроведения напишите следующий код:

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

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

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

В ролях можно управлять доступом не только на уровне объектов метаданных, но и на уровне объектов базы данных. Например, можно указать, что пользователю с определенной ролью разрешено изменять справочник Номенклатура, но только те его элементы, которые не помечены на удаление. Этот механизм называется RLS — Row Level Security (ограничение доступа на уровне записей).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

РольДоступна (< НаименованиеРоли >)
// Пример использования:
ЭтоАдминистратор = РольДоступна ( Метаданные . Роли . АдминистраторСистемы );
//Тот же самый результат можно получить так:
ЭтоАдминистратор = РольДоступна ( «АдминистраторСистемы» );

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

ПравоДоступа (< Право >, < ОбъектМетаданных >, < Пользователь/Роль >, < СтандартныйРеквизитСтандартнаяТабличнаяЧасть >)
// Пример использования: проверка у текущего пользователя права на изменение справочника ФизическиеЛица
МожноРедактироватьФизЛиц = ПравоДоступа ( «Изменение» , Метаданные . Справочники . ФизическиеЛица );

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

ВыполнитьПроверкуПравДоступа (< Право >, < ОбъектМетаданных >, < СтандартныйРеквизитСтандартнаяТабличнаяЧасть >)
//Примеры использования:
ВыполнитьПроверкуПравДоступа ( «ИнтерактивноеОткрытиеВнешнихОбработок» , Метаданные );
ВыполнитьПроверкуПравДоступа ( «ИнтерактивнаяПометкаУдаления» , Метаданные . Справочники . ФизическиеЛица );

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

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

ПараметрыДоступа (< НаименованиеПрава >, < ОбъектМетаданных >, < СписокПолей >, < Пользователь/Роль >)
//Пример использования:
ПараметрыДоступа = ПараметрыДоступа ( «Чтение» , Метаданные . РегистрыСведений . ТекущиеКадровыеДанныеСотрудников , «ТекущаяОрганизация,ФизическоеЛицо» );
ЕстьДоступ = ПараметрыДоступа . Доступность ;
ОграничениеRLS = ПараметрыДоступа . ОграничениеУсловием ;

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

ПредставлениеПрава (< ИмяПрава >)
//Пример использования:
Представление = ПредставлениеПрава ( «ИнтерактивноеОткрытиеВнешнихОбработок» );
// Переменная Представление будет содержать строку «Интерактивное открытие внешних обработок»

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

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

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

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

Понравилась статья? Поделить с друзьями:
  • Как найти свои прошлые воплощения
  • Как найти термины в тексте по истории
  • Как найти емкость батареи конденсатора формула
  • Как найти поставщика для продажи на вайлдберриз
  • У меня шизофрения как найти девушку