1C + LDAP

Процедура ПолучитьСписок(вСтр, вТб)

Если ТипЗначенияСтр(вТб) <> "ТаблицаЗначений" Тогда

вТб = СоздатьОбъект("ТаблицаЗначений");

вТб.НоваяКолонка("Обкт");

вТб.НоваяКолонка("Путь");

вТб.НоваяКолонка("сн");

вТб.НоваяКолонка("Логин");

КонецЕсли;

Попытка

ScrptCtrl = СоздатьОбъект("MSScriptControl.ScriptControl");

ScrptCtrl.Language = "vbscript";

ScrptCtrl.AddCode("

|Function GetComputers()

| Set objs = GetObject(""" + вСтр + """)

| strInfo = """"

| For Each obj In objs

| strInfo = strInfo & ""{"" & obj.cn & ""}"" & vbTab & ""{"" & obj.AdsPath & ""}"" & vbTab & ""{"" & obj.Name & ""}"" & vbTab & ""{"" & obj.sAMAccountName & ""}"" & vbCrLf

| Next

| GetComputers = strInfo

|End Function

|");

Текст = СокрЛП(ScrptCtrl.Run("GetComputers"));

Исключение

Сообщить(ОписаниеОшибки());

Возврат;

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

Для сч = 1 по СтрКоличествоСтрок(Текст) Цикл

СтрКомп = СтрПолучитьСтроку(Текст, сч);

СтрКомп = СтрЗаменить(СтрКомп, "}", "");

СтрКомп = СтрЗаменить(СтрКомп, "{", "");

Разд = Найти(СтрКомп,СимволТабуляции);

сн = Лев(СтрКомп, Разд - 1);

СтрКомп = Сред(СтрКомп, Разд + 1);

Разд = Найти(СтрКомп,СимволТабуляции);

путь = Лев(СтрКомп, Разд - 1);

СтрКомп = Сред(СтрКомп, Разд + 1);

Разд = Найти(СтрКомп, СимволТабуляции);

обкт = Лев(СтрКомп, Разд - 1);

логин = Сред(СтрКомп, Разд + 1);

вТб.НоваяСтрока();

вТб.Обкт = обкт;

вТб.Путь = путь;

вТб.сн = сн;

вТб.логин = логин;

КонецЦикла;

КонецПроцедуры // ПолучитьОУ

Процедура ПолучитьСписокБезГрупп(вПуть, вТб)

Если ТипЗначенияСтр(вТб) <> "ТаблицаЗначений" Тогда

вТб = СоздатьОбъект("ТаблицаЗначений");

вТб.НоваяКолонка("Обкт");

вТб.НоваяКолонка("Путь");

вТб.НоваяКолонка("сн");

вТб.НоваяКолонка("Логин");

КонецЕсли;

тб = 0;

ПолучитьСписок(вПуть, тб);

тб.ВыбратьСтроки();

Пока тб.ПолучитьСтроку() = 1 Цикл

Если Лев(тб.Обкт, 3) = "CN=" Тогда

вТб.НоваяСтрока();

вТб.Обкт = тб.Обкт;

вТб.Путь = тб.Путь;

вТб.сн = тб.сн;

вТб.Логин = Нрег(тб.Логин);

ИначеЕсли Лев(тб.Обкт, 3) = "OU=" Тогда

ПолучитьСписокБезГрупп(тб.Путь, вТб);

КонецЕсли;

КонецЦикла;

КонецПроцедуры // ПолучитьСписокБезГрупп

ПолучитьСписокБезГрупп("LDAP://OU=Users,OU=OUName,DC=DomenName,DC=ua", тб);