обработка для пакетного создания пользователей в 1С и в ActiveDirectory. На универсальность не претендую, делал под задачу, но вроде должна работать и в типовых конфигурациях.
Может брать список из Екселя. Поля подхватываются по наименованию, диапазон задавать не надо — сам найдет.
В AD пользователи создаются через провайдер LDAP (ADSI).
Если в 1С задавать аутентификацию ОС, то сначала запустите с галкой «Создать в терминале», а потом второй раз с галкой «создать в 1С». Потому что пакетом юзвери в AD создаются медленно и поэтому не сразу находятся.
При повторном запуске пользователи пересоздаются. И в AD и в 1С.
Обработка устарела, вернее выросла в конфигурацию ServiceDesk1C
эх.. такую бы на семерке
RostovoblgazService — А это зачем? 🙂
(1) LDAP думаю можно и на 7.7. поюзать, Ексель тоже. А вот создать юзверей в конфигураторе не выйдет.
(2) это название группы в моем AD. Если у вас все в корне — оставьте пустым
(3) 7.7. поюзать, Ексель тоже. А вот создать юзверей в конфигураторе не выйдет.
В 7.7 юзвери в конфигураторе (вернее, в конфигурации) никогда и не создавались. А для тех, кто знает структуру users.usr, насоздавать юзверей — как два байта отослать 😉
Показать полностью
И в догонку ещё одну процедурку:
Показать полностью
А чтоб самому не париться с users.usr и «байты не отсылать», можно как вариант
для создания юзверей в 7-ке UsersDef.dll поюзать, так еще прошу будет
Извиняюсь, хотел написать «так еще проще будет»
ЗЫ: еще б уж тогда до кучи добавить чтоб у этих же юзеров заодно и почта на exchange прописывалась, чтоб админы ваще не работали 🙂
Подскажите, а если нет домена тогда как?
через LDAP можно и локальных пользователей создавать. В мануале по ADSI описано. Выложить?
В Висте 64 бита не работает, ругается:
{Форма.Форма(218)}: Ошибка при вызове метода контекста (ПолучитьCOMОбъект): Ошибка получения объекта COM: Указанный домен не существует или к нему невозможно подключиться.
objRootLDAP = ПолучитьCOMОбъект(«LDAP://rootDSE»);
//домен для авторизации ОС
objRootLDAP = ПолучитьCOMОбъект(«LDAP://rootDSE»); —- вот тут
strDC = objRootLDAP.Get(«defaultNamingContext»); //получаем имя домена формата LDAP
Домен = СтрЗаменить(strDC, «,DC=ru», «»);
Домен = СтрЗаменить(Домен, «DC=», «\»);
видимо дело не в Висте, а в том что у вас домена нет
Выложите пожалуйста обработку с учетом того что нет домена. Большое спасибо)
а можно поподробнее объяснить следующий момент:
не понял как это использовать 😳
если просто вставлять в код
то выдаётся сообщение об ошибке «Неопознанный оператор SET <<?>>objContainer»
если без SET:
то ругается «Метод объекта не обнаружен (OpenDSObject)»
Заранее спасибо!
я конечно структуры ваших доменов не знаю, но думаю что вы напутали в этой строчке:
strDC = «DC=test,DC=lan»;
посмотрите как вам возвращается ваш домен по умолчанию в
objRootLDAP = ПолучитьCOMОбъект(«LDAP://rootDSE»)
strDC = «DC=test,DC=lan»
сам домен имеет вид test.lan
разобрался, чтобы получить доступ от имени другого пользователя
Показать
ещё раз спасибо за обработку и помощь! 😉
обработка устарела. с конца 2008 года (когда я ее выкладывал) уже много воды утекло. переписал прилично, так что список изменений уже и весь не воспроизведу. Теперь обработка на 8.2 и в составе конфигурации ServiceDesk1С. На демке этот модуль кажется открыт — смотрите, колупайте кому надо.
На вскидку:
— может работать без домена (кто то просил)
— определяет права и группы из АД. Можно по умолчанию настроить для каждой базы или потом докинуть прав существующим пользователям AD
— расширенный поиск по АД — (по логину, части ФИО и пр.)
— все переписано под библиотеку универсальных запросов к AD (в составе конфы)
— может интегрироваться с любым сервисом, в том числе и не 1С. Процесс автоматизирован
Ну и впринципе сама обработка практических задач решает мало. Надо базу, чтоб хранила настройки, созданные учетки, управляла ими и пр. Ну собсно потому и ServiceDesk.
А обработка — просто пример кода, «кирпичик»
(18) При попытке создать пользователя спотыкаюсь на установке пароля для пользователя
objUser.SetPassword(strPWD);
по причине:
Произошла исключительная ситуация (0x80072030)
учётка админа под которой создаётся учётная запись все необходимые права имеет, без пароля всё остальное создаётся на ура
пароль соответствует политике безопасности
objUser.pwdLastSet = 0;
strPWD = «7EdfmR!»;
objUser.SetPassword(strPWD);
как думаете — в чём могут быть грабли?
P.S.: на 8.1 то же самое возвращает такую ошибку
objUser.SetPassword(strPWD);
по причине:
Произошла исключительная ситуация (Active Directory): Один или более входных параметров неправильны
После многочисленных прогонов открылся интересный нюанс — с вероятностью 1/15 — 1/20 пароль таки задаётся…
Определённо проблемы на контроллере домена.
Спасибо за обработку, пригадилась
Спасибо за обработку, пригодилась