Имя: Пароль:
1C
 
Запрос пользователей, имеющих определенную роль
0 aleksey_k
 
13.11.10
15:51
Господа, день добрый.

Есть ли возможность получить запросом всех пользователей из справочника Пользователи, которым назначена определенная роль?
1 Irbis
 
13.11.10
15:52
Можно обходом по ПользователиИнформационнойБазы
2 IRLes
 
13.11.10
15:53
Функция РольДоступна() используй, кстати можно попробовать в СКД ее использовать ;)
3 Defender aka LINN
 
13.11.10
15:57
(0) У пользователей из справочника ролей нет, если что.
4 aleksey_k
 
13.11.10
16:05
Спасибо, господа, все сделал.
5 aleksey_k
 
13.11.10
16:27
Нет, не сделал

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

Скажите, можно ли программно по ПользовательИнформационнойБазы получить ссылку (или сам объект) на элемент справочника Пользователи?
6 IRLes
 
13.11.10
17:11
ПользователиИнформационнойБазы.ПолучитьПользователей() ?
7 aleksey_k
 
13.11.10
17:21
(6) я сделал так:

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

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

Как мне здесь первую переменную ПользовательИзМассива привести к типу СправочникСсылка.Пользователи? Что бы условие Если работало?
8 IRLes
 
13.11.10
17:22
Такой вариант:

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

Для Каждого Строчка Из ПользователиИнформационнойБазы.ПолучитьПользователей() Цикл
   СтрТЗ = ТаблицаЗначений.Добавить();
   СтрТЗ.Пользователь    = Справочники.Пользователи.НайтиПоНаименованию(Строчка.Имя);
   СтрТЗ.ЕстьРоль        = Строчка.Роли.Содержит(Метаданные.Роли.ПолныеПрава);
   Если СтрТЗ.ЕстьРоль Тогда
       Сообщить("У пользователя: " + СтрТЗ.Пользователь + " есть эта роль!");
   КонецЕсли;
КонецЦикла;
9 IRLes
 
13.11.10
17:23
Таблицу создал, чтоб была :Р Вдруг тебе она нужна :)
10 IRLes
 
13.11.10
17:23
А что собираешься делать с полученными ролями? Поделись секретом, любопытная тема :)
11 IRLes
 
13.11.10
17:25
(7) Справочники.Пользователи.НайтиПоНаименованию(ПользовательИзМассива.Имя)
12 aleksey_k
 
13.11.10
17:56
(11) - спасибо!
Все работает.

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