1c 8.1 получить информацию из Ad

  • Автор темы mazzzay75
  • Дата начала
Статус
Закрыто для дальнейших ответов.
M

mazzzay75

#1
Доброго утра всем!
Подскажите как можно получить в 1С информацию - ФИО и Email из AD домена
 
M

mazzzay75

#3
Да я уж давно все получил)
ТабЗнач=Новый ТаблицаЗначений;//выгрузим данные из LDAP
КомандаАДО = Новый 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)"+")";
Реквизиты = "DisplayName, Mail";
ТекстЗапроса = База + ";" + Фильтр + ";" + Реквизиты + ";subtree";
КомандаАДО.CommandText = ТекстЗапроса;
КомандаАДО.Properties("Page Size").Value = 100;
КомандаАДО.Properties("Timeout").Value = 30;
КомандаАДО.Properties("Cache Results").Value = Ложь;
ВыборкаАДО = КомандаАДО.Execute();
ТабЗнач.Колонки.Добавить("Имя");
ТабЗнач.Колонки.Добавить("Майл");
Пока НЕ ВыборкаАДО.EOF Цикл
ИмяСотр= СокрЛП(Строка(ВыборкаАДО.Fields("DisplayName").Value));
Майл = Нрег(СокрЛП(Строка(ВыборкаАДО.Fields("Mail").Value)));
//выгрузим данные в ТЗ
Если НЕ ПустаяСтрока(Майл) Тогда
НоваяСтрока=ТабЗнач.Добавить();
НоваяСтрока.Имя=ИмяСотр;
НоваяСтрока.Майл=Майл;
КонецЕсли;
ВыборкаАДО.MoveNext();
КонецЦикла;
ВыборкаАДО.Close();
СоединениеАДО.Close();
//все дальше делаем что хотим со значениями в ТабЗнач
 

Darlock

Well-known member
04.01.2008
560
1
#4
Да я уж давно все получил)
ТабЗнач=Новый ТаблицаЗначений;//выгрузим данные из LDAP
КомандаАДО = Новый 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)"+")";
Реквизиты = "DisplayName, Mail";
ТекстЗапроса = База + ";" + Фильтр + ";" + Реквизиты + ";subtree";
КомандаАДО.CommandText = ТекстЗапроса;
КомандаАДО.Properties("Page Size").Value = 100;
КомандаАДО.Properties("Timeout").Value = 30;
КомандаАДО.Properties("Cache Results").Value = Ложь;
ВыборкаАДО = КомандаАДО.Execute();
ТабЗнач.Колонки.Добавить("Имя");
ТабЗнач.Колонки.Добавить("Майл");
Пока НЕ ВыборкаАДО.EOF Цикл
ИмяСотр= СокрЛП(Строка(ВыборкаАДО.Fields("DisplayName").Value));
Майл = Нрег(СокрЛП(Строка(ВыборкаАДО.Fields("Mail").Value)));
//выгрузим данные в ТЗ
Если НЕ ПустаяСтрока(Майл) Тогда
НоваяСтрока=ТабЗнач.Добавить();
НоваяСтрока.Имя=ИмяСотр;
НоваяСтрока.Майл=Майл;
КонецЕсли;
ВыборкаАДО.MoveNext();
КонецЦикла;
ВыборкаАДО.Close();
СоединениеАДО.Close();
//все дальше делаем что хотим со значениями в ТабЗнач
Можно с меньшим кодом и без "Попытки" ("Попытка" медленнее отрабатывается при компиляции). Если надо, вечером посмотрю в своих закромах, я делал подобное.
 
Статус
Закрыто для дальнейших ответов.