• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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

mazzzay75

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

mazzzay75

Да я уж давно все получил)
ТабЗнач=Новый ТаблицаЗначений;//выгрузим данные из 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();
//все дальше делаем что хотим со значениями в ТабЗнач
 
D

Darlock

Да я уж давно все получил)
ТабЗнач=Новый ТаблицаЗначений;//выгрузим данные из 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();
//все дальше делаем что хотим со значениями в ТабЗнач

Можно с меньшим кодом и без "Попытки" ("Попытка" медленнее отрабатывается при компиляции). Если надо, вечером посмотрю в своих закромах, я делал подобное.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!