Простая процедура выгрузки пользователей из АД.

06.08.14

Разработка - Универсальные функции

Простая процедура выгрузки данных из Active Directory для встраивания в Ваши решения.
Понадобилась выгрузка данных из АД для интеграции справочника пользователей с порталом.

Перебрал несколько публикаций -  не запускалось сразу , приходилось допиливать, неудобное  представление результата, избыточный код и т.п.

Самым удобный вариант нашел тут:
//http://forum.codeby.net/topic35362.html
Большое спасибо автору.

Переписал для себя.
Данные выводятся в таблицу, для добавления одного реквизита достаточно добавить одну строку (там где формируется список реквизитов).
Список доступных полей взял тут:
http://www.forum.mista.ru/topic.php?id=683770

Вот что получилось:
///////////////////////////////////////////////////


Процедура ADНажатие(Элемент)


//Алгоритм от Darlock

//
http://forum.codeby.net/user14592.html

//
http://forum.codeby.net/topic35362.html



    // необходимые реквизиты добавлять в этот список:

СписокРеквизитов=Новый СписокЗначений;

СписокРеквизитов.Добавить("DisplayName");//Имя пользователя

СписокРеквизитов.Добавить("Mail");      //Эл.почта

СписокРеквизитов.Добавить("sAMAccountName");    //Логин (Имя пользователя в домене)

СписокРеквизитов.Добавить("TelephoneNumber");    // Телефон




ТЗ=Новый ТаблицаЗначений;

СтрСписок="";

Для Каждого Рекв Из СписокРеквизитов Цикл

ТЗ.Колонки.Добавить(Рекв);

СтрСписок=СтрСписок+","+Рекв;

КонецЦикла;

СтрСписок=Сред(СтрСписок,2);



КомандаАДО = Новый COMОбъект("ADODB.Command");

СоединениеАДО = Новый COMОбъект("ADODB.Connection");

СоединениеАДО.Provider = "ADsDSOObject";

СоединениеАДО.Open("Active Directory Provider");

КомандаАДО.ActiveConnection = СоединениеАДО;                          



Попытка

RootDSE = ПолучитьCOMОбъект("LDAP://RootDSE");                                   

НашДомен = RootDSE.Get("defaultNamingContext");

База = "<LDAP://" + НашДомен + ">";                                 

Исключение 

Сообщить("Не удалось подключиться к домену "); 

КонецПопытки;



Фильтр = "(&(objectCategory=person)(objectClass=user)"+")";

ТекстЗапроса = База + ";" + Фильтр + ";" + СтрСписок + ";subtree";

КомандаАДО.CommandText = ТекстЗапроса;

КомандаАДО.Properties("Page Size").Value = 100;

КомандаАДО.Properties("Timeout").Value = 30;

КомандаАДО.Properties("Cache Results").Value = Ложь;

ВыборкаАДО = КомандаАДО.Execute();



Пока НЕ ВыборкаАДО.EOF Цикл

DisplayName= СокрЛП(Строка(ВыборкаАДО.Fields("DisplayName").Value));

Если Не ПустаяСтрока(DisplayName) Тогда

СтрТЗ=ТЗ.Добавить();

Для Каждого Рекв Из СписокРеквизитов Цикл

СтрТЗ[Рекв.Значение]=СокрЛП(Строка(ВыборкаАДО.Fields(Рекв.Значение).Value))

КонецЦикла;

КонецЕсли;

ВыборкаАДО.MoveNext();

КонецЦикла;


ВыборкаАДО.Close();

СоединениеАДО.Close();

Сообщить("Количество записей АД: "+Формат(ТЗ.Количество()));

ТЗ.Сортировать("DisplayName");

ТЗ.ВыбратьСтроку();


КонецПроцедуры

 

///////////////////////////////////////////////////////////////////////////////////////////////////

Вступайте в нашу телеграмм-группу Инфостарт

AD Active Directory загрузка CRM

См. также

Загрузка и выгрузка в Excel Универсальные функции Программист 1С:Предприятие 8 Россия Бесплатно (free)

Описанный ниже подход позволяет в три шага заполнять формулы в Excel файлы, вне зависимости от ОС сервера (MS Windows Server или Linux). Подход подразумевает отказ от работы с COM-объектом в пользу работы через "объектную модель документа" (DOM).

30.10.2025    4561    Abysswalker    11    

46

Универсальные функции Работа с интерфейсом Программист 1С:Предприятие 8 Бесплатно (free)

Порой необходимо временно отключить расширение 1С, не удаляя его, чтобы не потерять данные. Но в этом случае при каждом запуске всем будет лезть уведомление о неактивном расширении, хотя очевидно, это техническая информация, которой не стоит лишний раз пугать пользователей.

14.05.2025    8458    DeerCven    15    

62

Универсальные функции Программист 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Благодаря этим пяти строчкам можно больше не заморачиваться с загрузкой из внешних файлов. Пользуюсь везде, всегда и постоянно.

21.05.2024    56049    dimanich70    84    

174

Универсальные функции Программист 1С:Предприятие 8 1C:Бухгалтерия Абонемент ($m)

Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.

1 стартмани

18.03.2024    7916    7    John_d    13    

59

Универсальные функции Программист Стажер 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    70458    atdonya    31    

72

Универсальные функции Программист 1С:Предприятие 8 Бесплатно (free)

На заключительных этапах, когда идет отладка или доработка интерфейса, необходимо много раз переоткрыть внешний объект. Вот один из способов автоматизации этого.

30.11.2023    9910    ke.92@mail.ru    17    

68
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Патриот 468 13.08.14 11:27 Сейчас в теме
Получил заряд хорошего настроения на весь рабочий день))))
Немножко неправильно прочитал название статьи "Простая процедура выгрузки пользователей в АД."
2. Dr.Morris 7 08.10.14 11:55 Сейчас в теме
затыкается на
ВыборкаАДО = КомандаАДО.Execute();
по причине:
Ошибка при вызове метода контекста (Execute)
Произошла исключительная ситуация (Provider): Не был задан текст команды для объекта команды.
Пока не знаю, в чем дело..
3. rinik88 36 20.06.19 08:40 Сейчас в теме
Для отправки сообщения требуется регистрация/авторизация