|
Как получить список пользователей??? | ☑ | ||
---|---|---|---|---|
0
Demetres
27.04.12
✎
11:53
|
Добрый день! Столкнулся с такой проблемой, нужно получить пользователей домена из 1С при помощи методов провайдера LDAP, нашел кусок кода переделал его под свои нужды и всё бы хорошо, но только он не работает, выдает такую ошибку:
{Форма.Форма.Форма(193)}: Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Provider): Таблица не существует. Думаю что запрос составлен не верно т. к. падает в момент выполнения Execut(), если кто в теме подскажите что не так. Текст функции: Домен = "NameDomen"; СуперПользователь = "SuperUzverь"; КомандаАДО = Новый COMОбъект("ADODB.Command"); СоединениеАДО = Новый COMОбъект("ADODB.Connection"); СоединениеАДО.Provider = "ADsDSOObject;User Id=" + Домен + "\"+СуперПользователь+",ou=people,ou=domain,dc="+Домен+";Password=PasswordUser;"; СоединениеАДО.Open("Active Directory Provider"); КомандаАДО.ActiveConnection = СоединениеАДО; ТекстЗапроса = "<LDAP://"+Домен+"/ou=users,dc="+Домен+">;(&(objectCategory=person)(objectClass=user);subtree"; КомандаАДО.CommandText = ТекстЗапроса; КомандаАДО.Properties("Page Size").Value = 100; КомандаАДО.Properties("Timeout").Value = 30; КомандаАДО.Properties("Cache Results").Value = Ложь; ВыборкаАДО = КомандаАДО.Execute(); Пока НЕ ВыборкаАДО.EOF Цикл //Как-то просматриваем и обрабатываем содержимое атрибутов //как это делается тоже пока не знаю ВыборкаАДО.MoveNext(); КонецЦикла; |
|||
1
Heckfy
27.04.12
✎
11:55
|
А так никак??
Глобальный контекст (Global context) ПользователиОС (OSUsers) Синтаксис: ПользователиОС() Возвращаемое значение: Тип: ТаблицаЗначений; Массив. Информация возвращается в виде таблицы значений, в колонках которой содержится следующая информация: ИмяДомена (DomainName) - имя домена (тип Строка); ИмяСервера (ServerName) - имя компьютера, являющегося контроллером домена (тип Строка); Пользователи (Users) - массив строк с именами пользователей домена; Локальный (Local) - признак того, что этому домену принадлежат локальные пользователи данного компьютера. Описание: Предоставляет доступ к информации о доменах и пользователях операционной системы. Доступность: Тонкий клиент, толстый клиент. Примечание: При использовании в тонком клиенте, информация возвращается в виде массива структур со свойствами (аналогичными колонкам возвращаемой таблицы значений). |
|||
2
Лоботряс
27.04.12
✎
11:57
|
(1) Во-во и я помню что там все средствами 1С все можно достать. Нафига так извращаться?
|
|||
3
Demetres
27.04.12
✎
12:03
|
(1) Дело в том что придется создавать новый атрибут для записи и чтения у пользователей домена
|
|||
4
Demetres
27.04.12
✎
12:04
|
+3 и такая возможность есть только у четной записи "SuperUzverь"
|
|||
5
Demetres
27.04.12
✎
12:27
|
Up
|
|||
6
Heckfy
27.04.12
✎
12:35
|
Может пригодится: http://www.dev.citykirov.ru/GroupInstall1CEnt.htm
Доработка конфигураций Если в ваших информационных базах существует возможность создавать пользователей из режима запуска 1С:Предприятие (не только из конфигуратора) существует также возможность доработать конфигурацию, чтобы не включать пользователей в область применения политики руками. А сделать это автоматически при записи пользователя в информационную базу 1С:Предприятия (если конечно для пользователя применяется аутентификация Windows). Все что необходимо сделать это научить конфигурацию добавлять пользователя в соответствующую группу, и исключать пользователя из группы. Вот несколько полезных для этого процедур: //Параметы: //Группа - строка вида: "\\ИмяДомена\ИмяГруппы" //Пользователь - строка вида: "\\ИмяДомена\ИмяПользователя" Процедура ДобавитьПользователяВГруппу(Группа, Пользователь) ГруппаАД = ПолучитьCOMОбъект("WinNT:"+СтрЗаменить(Группа, "\","/")+",Group"); Попытка ГруппаАД.Add("WinNT:"+СтрЗаменить(Пользователь, "\","/")+",User"); Исключение Инфо = ИнформацияОбОшибке(); Если Инфо.Причина<>Неопределено Тогда Если Инфо.Причина.Описание="Произошла исключительная ситуация (0x800708bc)" Тогда //Пользователь уже включен в данную группу. Иначе ВызватьИсключение; КонецЕсли; КонецЕсли; КонецПопытки; КонецПроцедуры //Параметы: //Группа - строка вида: "\\ИмяДомена\ИмяГруппы" //Пользователь - строка вида: "\\ИмяДомена\ИмяПользователя" Процедура УдалитьПользователяИзГруппы(Группа, Пользователь) ГруппаАД = ПолучитьCOMОбъект("WinNT:"+СтрЗаменить(Группа, "\","/")+",Group"); Попытка ГруппаАД.Remove("WinNT:"+СтрЗаменить(Пользователь, "\","/")+",User"); Исключение Инфо = ИнформацияОбОшибке(); Если Инфо.Причина<>Неопределено Тогда Если Инфо.Причина.Описание="Произошла исключительная ситуация (0x800708bd)" Тогда //Пользователь не включен в данную группу. Иначе ВызватьИсключение; КонецЕсли; КонецЕсли; КонецПопытки; КонецПроцедуры Пользователь, под которым запускается 1С:Предприятие должен обладать необходимыми правами для включения пользователей AD в группу AD. |
|||
7
Heckfy
27.04.12
✎
12:41
|
(5) Я думаю, это то что тебе нужно: http://infostart.ru/catalog/22314/
|
|||
8
Demetres
27.04.12
✎
13:16
|
(6) с помощью winnt нельзя добавлять новые атрибуты и нельзя так же считывать нестандартные, это главная проблема, почему я не взял готовые части кода под winnt :-(((
Людииии кто-нибудь в курсе почему не работает мой запрос для LDAP???? |
|||
9
Demetres
27.04.12
✎
13:18
|
(7) это не то, мне нужно получать пользователей через LDAP а не через WinNT
|
|||
10
Demetres
27.04.12
✎
13:51
|
вопрос актуален
|
|||
11
Demetres
27.04.12
✎
14:06
|
Кто обладает черным поясом по программированию помогитееееееееее
|
|||
12
Avganec
27.04.12
✎
14:07
|
(11) Ищешь в инете программу, которая получает список пользователей и выбрасывает его куда-нибудь, ты просто запускаешь эту программу из 1с, подбираешь результат и радуешься.
|
|||
13
Demetres
27.04.12
✎
14:24
|
(12) а как потом научить эту программа затянуть в 1С то что она наделала и как эту программу научить создавать новые атрибуты пользователей сравнивать их и заполнять если нужно? Нужно понять почему не работает код в (0) и у меня это не получается, есть кто-нибудь на форуме кто может объяснить почему не работает то что я накарябал своими кривыми клюшками растущими неизвестно откуда
|
|||
14
Avganec
27.04.12
✎
14:27
|
(13) программно.
|
|||
15
Demetres
27.04.12
✎
14:30
|
(14) Было бы смешно если не было так грустно.
|
|||
16
Demetres
27.04.12
✎
14:47
|
Вверх
|
|||
17
Demetres
27.04.12
✎
14:52
|
Одну ошибку нашел:
ТекстЗапроса = "<LDAP://"+Домен+"/ou=users,dc="+Домен+">;(&(objectCategory=person)(objectClass=user));subtree"; но все равно не работает, правда теперь стало дольше думать |
|||
18
Demetres
27.04.12
✎
15:13
|
Вверхх
|
|||
19
Demetres
27.04.12
✎
15:32
|
Help
|
|||
20
Demetres
27.04.12
✎
15:42
|
Выше
|
|||
21
Demetres
27.04.12
✎
15:54
|
вверх опять
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |