Имя: Пароль:
1C
1С v8
Добавление роли списку пользователей
,
0 manti
 
09.06.12
09:49
Делаю через внешнюю обработку. Добавляю реквизит пользователи с типом СписокЗначений. На форме ставлю поле ввода СписокПольз, присваивая ему этот тип. затем делаю следующее

Перем ОписаниеТиповПланСчетовНалоговыйСсылка Экспорт;

МассивТипов = Новый Массив;
МассивТипов.Добавить(Тип("СправочникСсылка.Пользователи"));
ОписаниеТиповПланСчетовНалоговыйСсылка = новый ОписаниеТипов(МассивТипов);
ЭлементыФормы.СписокПольз.ТипЗначенияСписка = ОписаниеТиповПланСчетовНалоговыйСсылка;


Ругается на метод Содержит. Как к нему правильно обратиться. Также ругается на Добавить.
  Для каждого Польз Из ЭлементыФормы.СписокПольз.Значение  Цикл
     
     Если НЕ Польз.Значение.ПрофильПолномочийПользователя.СоставРолей.Содержит(Метаданные.Роли.Найти("ЗащитаПерсДанныхВсе1")) Тогда
      Польз.Значение.ПрофильПолномочийПользователя.СоставРолей.Добавить(Метаданные.Роли.Найти("ЗащитаПерсДанныхВсе1"));
      Польз.Записать();
     КонецЕсли;
 
  КонецЦикла;
1 manti
 
09.06.12
09:52
не перменная ОписаниеТиповПланСчетовНалоговыйСсылка это от старой обработки осталась)))
2 Kaperang
 
09.06.12
09:55
МассивТипов.Добавить(Тип("СправочникСсылка.Пользователи"));
- тип ссылочный

.Добавить, .Записать( - такие методы доступны только у объектного типа
3 manti
 
09.06.12
10:02
(2) сделал такой тип Тип("СправочникОбъект.Пользователи")
не помогло)
4 Kaperang
 
09.06.12
10:07
Вы, судя по всему, путаете элементы справочника "Пользователи" и тип "ПользовательИнформационнойБазы"

Выдержка из синтакс-справочника:
Глобальный контекст (Global context)
ПользователиИнформационнойБазы (InfoBaseUsers)
Использование:

Только чтение.
Описание:

Тип: МенеджерПользователейИнформационнойБазы.
Используется для управления списком пользователей информационной базы.

Доступность:

Сервер, толстый клиент, внешнее соединение.
5 Kaperang
 
09.06.12
10:11
Как то так:

МассивПользователей = ПользователиИнформационнойБазы.ПолучитьПользователей();
Для каждого ПользовательИБ Из МассивПользователей Цикл
   Если НЕ ПользовательИБ.Роли.Содержит(Метаданные.Роли.Найти("ЗащитаПерсДанныхВсе1")) Тогда
       ПользовательИБ.Роли.Добавить(Метаданные.Роли.Найти("ЗащитаПерсДанныхВсе1"));
       ПользовательИБ.Записать();
   КонецЕсли;
КонецЦикла;
6 manti
 
09.06.12
10:15
(5) хорошее решение, но у меня задача в том, чтобы выбрать пользователя из списка
7 manti
 
09.06.12
10:22
Значит нереально так вот из списка добавить роль и обратьться как к МенеджерПользователейИнформационнойБазы
8 Kaperang
 
09.06.12
10:28
// предварительно добавьте на форму табличное поле ТЗПользователей

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

// процедура записать
Для каждого ПользовательИБ Из ТЗПользователей Цикл
Если ПользовательИБ.Использовать Тогда
ПользовательИБ.Роли.Добавить(Метаданные.Роли.Найти("ЗащитаПерсДанныхВсе1"));
ПользовательИБ.Записать();
КонецЕсли;
КонецЦикла;
9 Kaperang
 
09.06.12
10:28
как то так
10 Kaperang
 
09.06.12
10:43
ПользовательИБ.Пользователь.Роли.Добавить(Метаданные.Роли.Найти("ЗащитаПерсДанныхВсе1"));
ПользовательИБ.Пользователь.Записать();
11 manti
 
09.06.12
10:51
(10) о как все гениальное прсто оказалось) спасибо. А вместо будева да нет какой тип поставить чтобы галочка была?
Ошибка? Это не ошибка, это системная функция.