Имя: Пароль:
1C
1С v8
Получить параметры пользователя из AD
0 Dem1urg
 
26.11.10
16:06
Задача. Нужно прочитать из AD данные по пользователю (название отдела, номер телефона). Я знаю имя учетной записи пользователя. В структуре AD пользователи расположены в разных папках. Я знаю только имя учетной записи и мне просто нужно получить некоторые свойства (например, номер телефона). Платформа 8.2. По результатам поиска я понял что нужно копать в строну LDAP, но пока не соображу, как правильно сформировать строку подключения.
1 Dem1urg
 
26.11.10
19:23
Модераторы, удалите тему, случайно задвоилась.
2 Dem1urg
 
26.11.10
19:24
(1) Ой. Не эту, другую v8: Получить параметры пользователя из AD Вопрос целиком только в этой есть.
3 Злобный Йожег
 
26.11.10
19:57
(1) случайно? хм...
4 le_
 
26.11.10
20:50
(0)

Set objConnection = CreateObject("ADODB.Connection")
objConnection.Provider = "ADsDSOObject"
objConnection.Properties("User ID") = "me"
objConnection.Properties("Password") = "password"

objConnection.Open "LDAP Provider"

Set objCommand =   CreateObject("ADODB.Command")
Set objCommand.ActiveConnection = objConnection

objCommand.CommandText = "SELECT name FROM
'LDAP://server:389/ou=devices,ou=network,dc=sample,dc=local' WHERE
owner='uid=me"
Set objRecordSet = objCommand.Execute

objRecordSet.MoveFirst
Do Until objRecordSet.EOF
Wscript.Echo objRecordSet.Fields.item("name").value
objRecordSet.MoveNext
Loop
5 ДенисЧ
 
26.11.10
20:52
есть умная книга, "Системное программирование на 1с" Михайлова. Там этот вопрос рассматривается.
Сама книга вполне гуглится
вот...
6 Dem1urg
 
27.11.10
13:06
(4), (5) спасибо, будем пробовать
7 Dem1urg
 
27.11.10
23:29
В результате получилось так
   АДОКоннектор = Новый COMОбъект("ADODB.Connection");
   АДОКоннектор.ConnectionString = "Provider=""ADsDSOObject""";
   АДОКоннектор.Open();
   
   ТекстЗапроса = "
   |SELECT AdsPath
   |FROM 'LDAP://" + ИмяДомена + "'
   |WHERE
   |    objectCategory = 'user'
   |    and objectClass = 'person'
   |    and SAMAccountName = '" + УчетнаяЗапись + "'
   |ORDER BY sn
   |";
   
   ВыборкаАДО = АДОКоннектор.Execute(ТекстЗапроса);
   
   Если НЕ ВыборкаАДО.EOF Тогда
       ПутьОбъекта = ВыборкаАДО.Fields("AdsPath").Value;
       ОбъектАД = ПолучитьCOMОбъект(ПутьОбъекта);
       Сообщить(ОбъектАД.sAMAccountName);
       Сообщить(ОбъектАД.cn);
       Сообщить(ОбъектАД.department);
       Сообщить(ОбъектАД.manager);
       Сообщить(ОбъектАД.telephoneNumber);
       Сообщить(ОбъектАД.mail);
       Сообщить(ОбъектАД.title);
   КонецЕсли;
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан