Каталог решений - Работа c AD. Получение данных запросом, с получением необходимых данных в запросе.

Работа c AD. Получение данных запросом, с получением необходимых данных в запросе.

Работа c AD. Получение данных запросом, с получением необходимых данных в запросе.

В наличии

Получать все нужные данные из AD запросом — просто.

Категория:

Описание

На инфостарте полно примеров с получением данных из AD запросом. Например, получение почтового адреса пользователя:

query = "SEL ECT ADsPath FR OM 'LDAP://DC="+СокрЛП(Домен.Код)+"' WHERE SAMAccountName='"+Стр.Логин+"'";    
rs = conn.Execute(query);    
Пока НЕ rs.EOF() Цикл     
    obj = ПолучитьCOMОбъект(rs.Fields(0).Value);     
    Если obj.Class="user" Тогда      
	Стр.НоваяПочта=СокрЛП(obj.EmailAddress);      
	Если Стр.НоваяПочта<>Стр.СтараяПочта Тогда       
             Стр.Установить=Истина;      
	КонецЕсли;     
    КонецЕсли;     
    rs.MoveNext();    
КонецЦикла; 

Все данные можно получить запросом, однако мы получаем только ADsPath, потом получаем com-объект и уже из его свойств
достаем класс объекта и адрес электронной почты. Тут может быть засада с получением некоторых com-объектов, может
просто не хватить прав.
Я бы сделал так:

query = "SEL ECT objectClass,mail FR OM 'LDAP://DC="+СокрЛП(Домен.Код)+"' WHERE SAMAccountName='"+Стр.Логин+"'"; rs = conn.Execute(query); Пока НЕ rs.EOF() Цикл Если rs.Fields("objectClass").Value="user" Тогда Стр.НоваяПочта=СокрЛП(rs.Fields("mail").Value); Если Стр.НоваяПочта<>Стр.СтараяПочта Тогда Стр.Установить=Истина; КонецЕсли; КонецЕсли; rs.MoveNext(); КонецЦикла;

Не понятно почему, возможность получать поле по имени нигде в примерах я не встречал.

P.S.

Вопрос:

Можно-ли получить поле по номеру?

Ответ: Можно. Но если полей несколько, мы не сможем только по номеру поля сказать какие данные мы получили из поля.
Поскольку порядок полей, результата запроса, произвольный.
has been added to your cart:
Оформление заказа