Имя: Пароль:
1C
 
Создание пользователя в Active Directory из 1С
0 AndreYAN
 
04.04.08
18:45
Хочу проверить наличие пользователя в Active Directory и если он отсутствует то добавить его. Сравнение происходит по справочнику физ.лиц . возникают проблемы с добавление сотрудника в Active Directory. Может кто реализовывал подскажите?

Set objOU = GetObject("LDAP://firma, OU=39, dc=firma,dc=ru")
Set objUser = objOU.Create("User", "cn=test1c")
objUser.Put "sAMAccountName", "test1c"
objUser.SetInfo

Выдает ошибку на строке "objUser.SetInfo", говорит ошибка доступа. Может кто знает что не так?
1 shuhard
 
04.04.08
18:53
(0) юзай ADSI, Михайлов второе издание стр.341-355
2 AndreYAN
 
06.04.08
14:49
(1) Представленный там код особо не отличается от моего!
3 oleg_km
 
06.04.08
15:23
Ты же сам говоришь - ошибка доступа, вот и смотри, на твой OU=39 если ли у тебя доступ? Обычно доступ имеют администраторы, а 1С ты запускаешь у себя под правами пользователя
4 kumena
 
06.04.08
15:29
всегда полагал чтобы рулить пользователями нужны права админа. В данном случае домен админа, или я не прав?

вот так еще можно
NET USER
[имя_пользователя [пароль | *] [параметры]] [/DOMAIN]
        имя_пользователя {пароль | *} /ADD [параметры] [/DOMAIN]
        имя_пользователя [/DELETE] [/DOMAIN]
5 AndreYAN
 
06.04.08
16:06
У меня есть специальный пользователь с правами на создание пользователей, но куда это все вставить в код, я честно не знаю?
6 AndreYAN
 
07.04.08
10:27
У кого есть "1С: Предприятие 7.7/8.0: системное программирование. - 2-е изд. - (Профессиональное программирование" эта книга дайте пример кода указанный на страницах 341-355
7 smaharbA
 
07.04.08
11:17

Пользователь="суперпользователь";
Пароль="суперпароль";
ДСО=Получить COMОбъект("LDAP:");
ОУ=ДСО.OpenDSObject("LDAP://firma, OU=39, dc=firma,dc=ru", Пользователь, Пароль,1);
8 AndreYAN
 
07.04.08
11:52
(7) Спасибо, но не взлетает, мне нужно создать пользователя!
9 smaharbA
 
07.04.08
12:07
(8) дальше создавай, как в (0)
10 AndreYAN
 
07.04.08
12:10
(9) я так и сделал но ругается на синтаксис
11 smaharbA
 
07.04.08
12:35
7.7

Функция Получить_COMОбъект(Путь="")
   Скрипт=СоздатьОбъект("MSScriptControl.ScriptControl");
   Скрипт.language="javascript";
   Возврат Скрипт.Eval("GetObject('"+Путь+"')");
КонецФункции    // Получить_COMОбъект(Путь="")
//*******************************************
Процедура Сформировать()
   Пользователь="суперпользователь";
   Пароль="суперпароль";
   ДСО=Получить_COMОбъект("LDAP:");
   ОУ=ДСО.OpenDSObject("LDAP://OU=Администраторы,dc=avangard, dc=karat-e,dc=ru", Пользователь, Пароль,1);
   Пользователь = ОУ.Create("User", "cn=test1c");
   Пользователь.Put("sAMAccountName", "test1c");
   Пользователь.SetInfo();
КонецПроцедуры
12 AndreYAN
 
07.04.08
12:47
(11) выдает ошибку с описанием - произошла исключительная ситуация. и все :(
13 shuhard
 
07.04.08
12:49
(12) (11) под 7.7
14 smaharbA
 
07.04.08
12:54
у тебя странная строка "LDAP://firma, OU=39, dc=firma,dc=ru"
че такое первое слово firma ?
15 smaharbA
 
07.04.08
12:57
если firma это сервер то "LDAP://firma/ OU=39, dc=firma,dc=ru"
16 AndreYAN
 
07.04.08
13:40
(15) да это сервер, но в рабочем варианте я использую IP адрес
17 AndreYAN
 
07.04.08
13:41
(13) в данном примере отличие 7.7 от 8.1  только
7.7 - Скрипт=СоздатьОбъект("MSScriptControl.ScriptControl");
8.1 - Скрипт=Новый COMОбъект("MSScriptControl.ScriptControl");
18 oleg_km
 
07.04.08
13:48
если firma это сервер то "LDAP://firma/ OU=39, dc=firma,dc=ru"

Эта ошибка исправлена, лучше не указывать явно контроллер, замени хотя бы на название домена
Программист всегда исправляет последнюю ошибку.