Имя: Пароль:
1C
1С v8
Учетная запись
0 Grigory_2012
 
14.11.12
09:23
Форме документа вставил кнопку, при нажатии на ее ФИО, должность, подразделение, эл.адрес экспортируется в Active Directiry, но столкнулся с проблемой. Администратор сети расшарил мои права, но если зайти под другой учетной записью на компьютер и нажать на кнопку выдаст ошибку (... нет доступа). Можно ли как то прописать, чтоб работала под любой учетной записью.

---------------------------------------------
Функция ПолучитьLDAPОбъект(Путь,Пользователь="",Пароль="")
.......
КонецФункции

---------------------------------------------
Процедура ДействияФормыДействие7(Кнопка)
   Перем Пользователь,Пароль,Домен,Стр,Контроллер,Отбор,Подразделение,Группа, промш;
   
   Домен="alfa.ru";

   ТекстЗапроса="<LDAP://"+Контроллер;
   
   Корень=ПолучитьLDAPОбъект("LDAP://RootDSE",Пользователь,Пароль);
   
   Провайдер="Provider=ADSDSOObject;";
   ТекстЗапроса=ТекстЗапроса+Корень.Get("defaultNamingContext")+">";
   
   Маска="Rabotnik";
   Отбор=";(&(objectClass=organizationalUnit)(name=" + Маска + "));AdsPath;subTree";
   ТекстЗапросаОтбор=ТекстЗапроса+Отбор;
   Соединение = Новый COMОбъект("ADODB.Connection");
   Соединение.Open(Провайдер);
   Записи=Соединение.Execute(ТекстЗапросаОтбор);
   Пока Записи.EOF=0 Цикл
       Сообщить(Записи.Fields(0).Value);
       Подразделение=ПолучитьLDAPОбъект(Записи.Fields(0).Value,Пользователь,Пароль);
       Сообщить(Подразделение.AdsPath);
       Прервать;
       Записи.MoveNext();
   КонецЦикла;
   Если ПустаяСтрока(Подразделение)=Истина Тогда
       Возврат;
   КонецЕсли;
   Маска="Синтаксис";
   Отбор=";(&(objectClass=Group)(sAMAccountName=" + Маска + "));AdsPath;subTree";
   ТекстЗапросаОтбор=ТекстЗапроса+Отбор;
   Записи=Соединение.Execute(ТекстЗапросаОтбор);
   Пока Записи.EOF=0 Цикл
       Группа=ПолучитьLDAPОбъект(Записи.Fields(0).Value,Пользователь,Пароль);
       Сообщить(Группа.AdsPath);
       Прервать;
       Записи.MoveNext();
   КонецЦикла;
   Рус=Новый Массив;
   Лат=Новый Массив;
   Рус.Добавить("А"); Лат.Добавить("a");
   Рус.Добавить("Б"); Лат.Добавить("b");
   Рус.Добавить("В"); Лат.Добавить("v");
   Рус.Добавить("Г"); Лат.Добавить("g");
   Рус.Добавить("Д"); Лат.Добавить("d");
   Рус.Добавить("Е"); Лат.Добавить("e");
   Рус.Добавить("Ё"); Лат.Добавить("yo");
   Рус.Добавить("Ж"); Лат.Добавить("zh");
   Рус.Добавить("З"); Лат.Добавить("z");
   Рус.Добавить("И"); Лат.Добавить("i");
   Рус.Добавить("Й"); Лат.Добавить("j");
   Рус.Добавить("К"); Лат.Добавить("k");
   Рус.Добавить("Л"); Лат.Добавить("l");
   Рус.Добавить("М"); Лат.Добавить("m");
   Рус.Добавить("Н"); Лат.Добавить("n");
   Рус.Добавить("О"); Лат.Добавить("o");
   Рус.Добавить("П"); Лат.Добавить("p");
   Рус.Добавить("Р"); Лат.Добавить("r");
   Рус.Добавить("С"); Лат.Добавить("s");
   Рус.Добавить("Т"); Лат.Добавить("t");
   Рус.Добавить("У"); Лат.Добавить("u");
   Рус.Добавить("Ф"); Лат.Добавить("f");
   Рус.Добавить("Х"); Лат.Добавить("h");
   Рус.Добавить("Ц"); Лат.Добавить("ts");
   Рус.Добавить("Ч"); Лат.Добавить("ch");
   Рус.Добавить("Ш"); Лат.Добавить("sh");
   Рус.Добавить("Щ"); Лат.Добавить("sch");
   Рус.Добавить("Ы"); Лат.Добавить("y");
   Рус.Добавить("Ъ"); Лат.Добавить("");
   Рус.Добавить("Ь"); Лат.Добавить("");
   Рус.Добавить("Э"); Лат.Добавить("e");
   Рус.Добавить("Ю"); Лат.Добавить("yu");
   Рус.Добавить("Я"); Лат.Добавить("ya");
   
   Рус.Добавить("а"); Лат.Добавить("a");
   Рус.Добавить("б"); Лат.Добавить("b");
   Рус.Добавить("в"); Лат.Добавить("v");
   Рус.Добавить("г"); Лат.Добавить("g");
   Рус.Добавить("д"); Лат.Добавить("d");
   Рус.Добавить("е"); Лат.Добавить("e");
   Рус.Добавить("ё"); Лат.Добавить("yo");
   Рус.Добавить("ж"); Лат.Добавить("zh");
   Рус.Добавить("з"); Лат.Добавить("z");
   Рус.Добавить("и"); Лат.Добавить("i");
   Рус.Добавить("й"); Лат.Добавить("j");
   Рус.Добавить("к"); Лат.Добавить("k");
   Рус.Добавить("л"); Лат.Добавить("l");
   Рус.Добавить("м"); Лат.Добавить("m");
   Рус.Добавить("н"); Лат.Добавить("n");
   Рус.Добавить("о"); Лат.Добавить("o");
   Рус.Добавить("п"); Лат.Добавить("p");
   Рус.Добавить("р"); Лат.Добавить("r");
   Рус.Добавить("с"); Лат.Добавить("s");
   Рус.Добавить("т"); Лат.Добавить("t");
   Рус.Добавить("у"); Лат.Добавить("u");
   Рус.Добавить("ф"); Лат.Добавить("f");
   Рус.Добавить("х"); Лат.Добавить("h");
   Рус.Добавить("ц"); Лат.Добавить("ts");
   Рус.Добавить("ч"); Лат.Добавить("ch");
   Рус.Добавить("ш"); Лат.Добавить("sh");
   Рус.Добавить("щ"); Лат.Добавить("sch");
   Рус.Добавить("ы"); Лат.Добавить("y");
   Рус.Добавить("ъ"); Лат.Добавить("");
   Рус.Добавить("ь"); Лат.Добавить("");
   Рус.Добавить("э"); Лат.Добавить("e");
   Рус.Добавить("ю"); Лат.Добавить("yu");
   Рус.Добавить("я"); Лат.Добавить("ya");
   ФамилииЭЛ=ADФамилияЭлектронное;
   Для н=1 по СтрДлина(ADФамилияЭлектронное) Цикл
       Сим=Сред(ADФамилияЭлектронное,н,1);
       Инд=Рус.Найти(Сим);
       Если Инд<>Неопределено Тогда
           Сим=Лат[Инд];
       КонецЕсли;    
       ФамилииЭЛ=Сред(ФамилииЭЛ +Сим, 2, 10);
   Конеццикла;    
   ИмяЭл=ADИмяЭлектронное;
   Для н=1 по СтрДлина(ADИмяЭлектронное) Цикл
       Сим=Сред(ADИмяЭлектронное,н,1);
       Инд=Рус.Найти(Сим);
       Если Инд<>Неопределено Тогда
           Сим=Лат[Инд];
       КонецЕсли;    
       ИмяЭл=Сред(ИмяЭл +Сим, 2, 10);
   Конеццикла;
   
   Им=ADИмя;
   Отчетсва =ADОтчество;
   Организации=ADОрганизация;
   Фамилии=ADФамилия;
   Долж=ADДолжность.Наименование;
   Отделы=ADОтдел.Наименование;
   Гор=ADГород.Наименование;
   Имя=ADПолноеНаименование;
   ПолноеИмя=Имя;
   ОтображаемоеИмя=ПолноеИмя;
   ИмяПринципала=СтрЗаменить(ФамилииЭЛ," ","_")+"@"+Домен;
   ИмяПредВиндуз2000=СтрЗаменить(ФамилииЭЛ," ","_");
   //--<
   Отбор=";(&(objectClass=User)(sAMAccountName=" + ИмяПредВиндуз2000 + "));AdsPath;subTree";
   ТекстЗапросаОтбор=ТекстЗапроса+Отбор;
   Записи=Соединение.Execute(ТекстЗапросаОтбор);
   Если Записи.RecordCount> 0 Тогда
       Пользователь = Подразделение.Create("User", "CN="+Имя);
       Пользователь.Put("Department", Отделы);
       Пользователь.Put("sAMAccountName", ИмяЭл+"."+ФамилииЭЛ);    
       Пользователь.Put("displayName", ОтображаемоеИмя);
       Пользователь.Put("name", ПолноеИмя);
       Пользователь.Put("givenName",ПолноеИмя);
       Пользователь.Put("title", Долж);                      
       Пользователь.Put("userPrincipalName",  ИмяЭл+"."+ИмяПринципала);
       Пользователь.Put("company", Организации);
       Пользователь.Put("sn",Фамилии);
       Пользователь.Put("givenName",Им+ " " + Отчетсва);
       Пользователь.Put("l",Гор);
       Пользователь.SetInfo();
   Иначе
       Пользователь = Подразделение.Create("User", "CN="+Имя);
       Пользователь.Put("Department", Отделы);
       Пользователь.Put("sAMAccountName", ФамилииЭЛ);
       Пользователь.Put("displayName", ОтображаемоеИмя);
       Пользователь.Put("name", ПолноеИмя);
       Пользователь.Put("givenName",ПолноеИмя);
       Пользователь.Put("title", Долж);                      
       Пользователь.Put("userPrincipalName",  ИмяПринципала);
       Пользователь.Put("company", Организации);
       Пользователь.Put("sn",Фамилии);
       Пользователь.Put("givenName",Им+ " " + Отчетсва);
       Пользователь.Put("l",Гор);
       Пользователь.SetInfo();    
   КонецЕсли;
   
КонецПроцедуры
1 Spieluhr
 
14.11.12
09:35
если база серверная - то можно попробовать использовать пользователя под которым стартует служба сервера + фоновое задание (оно будет запускаться на сервере)
2 Лефмихалыч
 
14.11.12
09:39
(0) ты говоришь о том, чтобы дать КАЖДОМУ пользователю право изменять ВСЕ учетные записи домена. Ты хорошо подумал?
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn