Отключение пользователя в AD при проведении документа "Увольнение из организации"
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Мы в свое время тоже сошлись на том, что правильнее, когда администратор выключает вручную по сообщению от кадровиков. Возможно, в простых орагнизациях, где используется голая AD это и имеет смысл, но там где навешаны Exchange-и и другие системы, в которых сотрудник еще нужен "живым" и после увольнения некоторое время это малоприменимо, хоть и интересно с точки зрения реализации.
Не делал, но имхо можно использовать утилиту dsmod для таких дел. Ну и в коде дока прописать запуск этой команды.
Отключение и включение учетной записи пользователя
В меню Пуск выберите пункт Выполнить.
В поле Открыть введите команду cmd.
В командной строке введите следующую команду:
dsmod user dn_пользователя -disabled {yes|no}
В этой команде используются следующие значения:
dn_пользователя обозначает различающееся имя отключаемого или включаемого объекта пользователя.
{yes|no}определяет, будет ли для учетной записи пользователя отключен вход в систему (yes) или нет (no).
В меню Пуск выберите пункт Выполнить.
В поле Открыть введите команду cmd.
В командной строке введите следующую команду:
dsmod user dn_пользователя -disabled {yes|no}
В этой команде используются следующие значения:
dn_пользователя обозначает различающееся имя отключаемого или включаемого объекта пользователя.
{yes|no}определяет, будет ли для учетной записи пользователя отключен вход в систему (yes) или нет (no).
Как лучше получить dn_пользователя в данном случае хз. Если все сотрудники являются пользователями 1С тогда можно попробовать выдернуть из логина базы в некоторых случаях. Либо предусмотрительно добавить свойство/поле в справочник сотрудников и при приеме на работу сразу указывать данные AD.
просто перечисление пользователей делается как-то так
ADS_SCOPE_SUBTREE = 2
objConnection = Новый COMОбъект("ADODB.Connection");
objCommand = Новый COMОбъект("ADODB.Command");
objConnection.Provider = "ADsDSOObject";
objConnection.Open("Active Directory Provider");
objCommand.ActiveConnection = objConnection;
objCommand.Properties("Page Size") = 1000;
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE;
objCommandProperties("Sort On") = "Name";
objCommand.CommandText = _
"SELECT Name FROM 'LDAP://dc=yourdomain,dc=com' WHERE objectCategory='user'";
objRecordSet = objCommand.Execute();
objRecordSet.MoveFirst
Пока objRecordSet.EOF() Цикл
// objRecordSet.Fields("Name").Value
objRecordSet.MoveNext();
КонецЦикла;
соответственно можно попробовать сделать UPDATE, либо как-то
Либо использовать vbs (через msscriptcontrol)
Set objUser = GetObject("WinNT://" & strDomain & "/" & oADobject.sAMAccountName)
objUser.AccountDisabled = True
либо этот же скрипт перевести на язык 1С
ЗЫ Доподлинно как делать не знаю, все этот результат 5-минутного гугления. Я обычно подобные вопросы ищу на vbs, а затем перевожу в 1С.
objUser.SetInfo
ADS_SCOPE_SUBTREE = 2
objConnection = Новый COMОбъект("ADODB.Connection");
objCommand = Новый COMОбъект("ADODB.Command");
objConnection.Provider = "ADsDSOObject";
objConnection.Open("Active Directory Provider");
objCommand.ActiveConnection = objConnection;
objCommand.Properties("Page Size") = 1000;
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE;
objCommandProperties("Sort On") = "Name";
objCommand.CommandText = _
"SELECT Name FROM 'LDAP://dc=yourdomain,dc=com' WHERE objectCategory='user'";
objRecordSet = objCommand.Execute();
objRecordSet.MoveFirst
Пока objRecordSet.EOF() Цикл
// objRecordSet.Fields("Name").Value
objRecordSet.MoveNext();
КонецЦикла;
соответственно можно попробовать сделать UPDATE, либо как-то
Либо использовать vbs (через msscriptcontrol)
Set objUser = GetObject("WinNT://" & strDomain & "/" & oADobject.sAMAccountName)
objUser.AccountDisabled = True
либо этот же скрипт перевести на язык 1С
ЗЫ Доподлинно как делать не знаю, все этот результат 5-минутного гугления. Я обычно подобные вопросы ищу на vbs, а затем перевожу в 1С.
objUser.SetInfo
(4) cool.vlad4, абсолютно верно, тут многое зависит именно от того как в организации происходит процесс создания пользователя AD, какие поля заполняются и т.д. Можно сразу в AD бить табельный номер как в 1С и поиск станет тривиальной задачей.
Хотя раз топикстартер задал такой вопрос, то может стоит и первоначальный процесс автоматизировать - провел приказ приема на работу а в AD автоматом пользователь добавился. Плюс можно и группу AD привязать к справочнику подразделений. Короч полет фантазии в данном вопросе не ограничен ;)
Хотя раз топикстартер задал такой вопрос, то может стоит и первоначальный процесс автоматизировать - провел приказ приема на работу а в AD автоматом пользователь добавился. Плюс можно и группу AD привязать к справочнику подразделений. Короч полет фантазии в данном вопросе не ограничен ;)
Levitin пишет:
Стоит задача
Автоматизировать отключение пользователя в AD при проведении документа "Увольнение из организации"
Есть у кого то готовыое решение для 1С 8.2?
Стоит задача
Автоматизировать отключение пользователя в AD при проведении документа "Увольнение из организации"
Есть у кого то готовыое решение для 1С 8.2?
Готового решения нет, но сделать такое возможно. Естественно нужно будет иметь достаточные права для блокировки учетки пользователя в домене. Также нужно чтоб к физ.лицу был привязан пользователь 1С, чтобы получить его логин в AD.
Почитать про это можешь в книге: "Михайлов А. 1С Предприятие 7.7-8.0 Системное программирование".
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот