Имя: Пароль:
1C
1С v8
Установить роль через com-соединение
0 ks-815
 
11.04.13
11:49
Всё хорошо, кроме ролей:

БД=Справочники.БазыДанных.НайтиПоНаименованию(ЭлементыФормы.ИмяБазы.Значение);
   cntr = Новый COMObject("V82.COMConnector");
   connection = cntr.Connect("File=""" + БД.ПутьКбазе + """; Usr= """ + БД.Администратор + """; Pwd=""" + БД.Пароль + """");
   
   СпрИнтерфейс               = connection.Метаданные.Interfaces;
   ПользователиПодключеннойИБ = connection.ПользователиИнформационнойБазы;
   СпрРоли                    = connection.Метаданные.Roles;
   СпрЯзыки                   = connection.Метаданные.Languages;

   НовыйПользователь = ПользователиПодключеннойИБ.СоздатьПользователя();
   
// Установим пользователю интерфейс    
   Для Каждого Интерфейс  из СпрИнтерфейс Цикл
       Если Интерфейс.Name = ЭлементыФормы.ОсновнойИнтерфейс.Значение Тогда
           НовыйПользователь.DefaultInterface = Интерфейс;
           Прервать;
       Иначе КонецЕсли;
   КонецЦикла;    
   
   НовыйПользователь.FullName               = ЭлементыФормы.ПолноеИмя.Значение;
   НовыйПользователь.Language               = СпрЯзыки.Русский;
   НовыйПользователь.Name                   = ЭлементыФормы.Имя.Значение;
   НовыйПользователь.OSAuthentication       = ЭлементыФормы.АутентификацияОС.Значение;
   НовыйПользователь.OSUser                 = ЭлементыФормы.ПользовательОС.Значение;
   НовыйПользователь.Password               = ЭлементыФормы.Пароль.Значение;

// Установим пользователю роли    
   Для Каждого РольСФормы Из ЭлементыФормы.СписокДоступныхРолей.Значение Цикл
       Если РольСФормы.Пометка = Истина Тогда
           
           Для Каждого РольСДругойБазы  из СпрРоли Цикл
               Если РольСДругойБазы.Name = РольСФормы.Роли   Тогда
                   НовыйПользователь.Roles.Contains = РольСДругойБазы;
                   Прервать;
               Иначе
               КонецЕсли;
           КонецЦикла;        
           
       Иначе
       КонецЕсли;
   КонецЦикла;

   НовыйПользователь.ShowInList             = ЭлементыФормы.ПоказыватьВСпискеВыбора.Значение;
   НовыйПользователь.StandardAuthentication = ЭлементыФормы.АутентификацияСтандартная.Значение;
   
   НовыйПользователь.Записать();
       Закрыть();


1С ругается: "Ошибка при установке значения атрибута контекста (Contains) НовыйПользователь.Roles.Contains = РольСДругойБазы;
по причине: Метод не найден"
Там есть еще НовыйПользователь.Roles._NewEnum, но он тоже не найден. И если просто писать НовыйПользователь.Roles, тоже не работает!
Подскажите, кто может, пожалуйста!
1 ZanderZ
 
11.04.13
11:55
НовыйПользователь.Roles.Contains = РольСДругойБазы;
а причем тут Contains ...
2 ks-815
 
11.04.13
11:57
Там 3 варианта, ни один не работает :)
3 ZanderZ
 
11.04.13
11:57
(2) наугад перебираешь ? СП читал ?
4 ks-815
 
11.04.13
12:07
всё. разобралась.
НовыйПользователь.Roles.Добавить(РольСДругойБазы);

что-то очень долго думала, а оказалось просто!