Имя: Пароль:
1C
1C 7.7
v7: ldap, как получить список групп у пользователя?
0 aptomilov
 
12.09.11
08:04
Перебираю список пользователей, и получаю все необходимые поля кроме memberof, в нем содержатся перечень групп в которые входит пользователь.
Как получить этот перечень ума не приложу.
1 aptomilov
 
12.09.11
12:42
Отвечаю

функция СтрокаГрупПользовтаеля(стрЗначение)
   Ответ="";
   попытка
       олеСкрипт = СоздатьОбъект("MSScriptControl.ScriptControl");
       олеСкрипт.Language = "VBScript";
       олеСкрипт.AddCode("
       |Function SpisGroup
       |Set objGroup = GetObject (""LDAP://cn="+стрЗначение+", OU=StaffChe,OU=Users,OU=MyBusiness,DC=interpolis,DC=local"")
       |objGroup.GetInfo
       |arrMemberOf = objGroup.GetEx(""memberOf"")
       |For Each strMember in arrMemberOf
       |Set objUser = GetObject(""LDAP://"" & strMember)
       |str=str &  "" @ "" & objUser.samaccountname
       |Next  
       |SpisGroup=str  
       |End Function
       |");
       Ответ=  олеСкрипт.Run("SpisGroup");
   Исключение
       Сообщить(ОписаниеОшибки());
   КонецПопытки;
   возврат Ответ;
КонецФункции




Функция РазобратьГруппыПользователяВсписок(ПользовательИзАДА)
   СтрокаГрупп=СтрокаГрупПользовтаеля(ПользовательИзАДА);
   Если СтрокаГрупп<>"" Тогда
       СписокГруппПользователя=СоздатьОбъект("СписокЗначений");    
       ДлиннаСтроки=СтрДлина(СтрокаГрупп);
       МногострочнаяСтрокаГрупп=СтрЗаменить(СтрокаГрупп,"@",РазделительСтрок);
       //Сообщить(ДлиннаСтроки);
       Для я=1  По СтрКоличествоСтрок(МногострочнаяСтрокаГрупп) Цикл
           СтрокаИзМногстрочногоТекста=СтрПолучитьСтроку(МногострочнаяСтрокаГрупп,я);
           Если Найти(Врег(СтрокаИзМногстрочногоТекста),"1С") <> 0 Тогда
               ТабГруппПользователей.НоваяСтрока();
               ТабГруппПользователей.Пользователь=ПользовательИзАДА;
               ТабГруппПользователей.Признак="База1С";
               ТабГруппПользователей.Группа=СокрЛП(СтрокаИзМногстрочногоТекста);
           ИначеЕсли Найти(Врег(СтрокаИзМногстрочногоТекста),"SMS") <> 0 Тогда
               ТабГруппПользователей.НоваяСтрока();
               ТабГруппПользователей.Пользователь=ПользовательИзАДА;
               ТабГруппПользователей.Признак="СМС";
               ТабГруппПользователей.Группа=СокрЛП(СтрокаИзМногстрочногоТекста);
           Иначе
               ТабГруппПользователей.НоваяСтрока();
               ТабГруппПользователей.Пользователь=ПользовательИзАДА;
               ТабГруппПользователей.Признак="Неопределено";
               ТабГруппПользователей.Группа=СокрЛП(СтрокаИзМногстрочногоТекста);
               
           КонецЕсли;        
       КонецЦикла;                    
   КонецЕсли;                      
КонецФункции
2 andrewks
 
12.09.11
13:10
ПользовательИзАДА

О_о
3 Lepochkin
 
12.09.11
13:26
Тебе нужно просто список групп пользователя из олешной базы получить? Зачем для этого скрипты? Штатно ведь все делается...
2 + 2 = 3.9999999999999999999999999999999...