Как помочь сисадмину при большой текучке кадров

Публикация № 645007

Администрирование - Информационная безопасность

Хотелось бы поделиться своим опытом создания пользователей AD из 1С:ЗУП 2.5.

Доброго времени суток всем читающим! Работаю в компании, где сотрудников более 2.500, много подразделений и неплохая текучка в сфере торговли. Сисадмины просто "зашивались"  на создании пользователей и раздаче типовых прав, заявки поступают, сисадмины помимо обслуживания ЛВС, поломки принтеров, подключения ПК и т.д. и т.п. создавали пользователей. По сути создать пользователя несложно им, но согласно регламенту в данных пользователя AD должны быть ФИО, должность, отдел, личный телефон, рабочий телефон, домашний телефон, про стандартные реквизиты понятно все, и вот тут была заминка, доступа у сисадмина к 1С: ЗУП 2.5 нет и не должно быть, а вот личные данные где ему взять? Из - за этой заминки создание пользователей занимало немало времени, сходи в кадры, возьми данные, приди к себе на рабочее место, создай пользователя, забей данные, и не дай Бог неверно. Но мой начальник решил пойти другим путем, почему бы все это дело по созданию пользователей не переложить на плечи HR-отдела, по сути HR имеют доступ в данным сотрудников, вот пусть и колотят пользаков, но тут возникает заминка, что в HR-отделе женщины с серверам на ВЫ, следовательно надо озадачить этим делом ЗУП. 

Для начала попросил менеджера по персоналу выкрутить должности из ЗУП 2.5 и выделить те должности, которым нужен доступ к компьютеру, а следовательно в AD.

Создал РС по хранению пользователей домена где имееются поля ДатаСоздания, ПользовательАД, ПочтаАД, и  ФизЛицо, в который изначально обработкой с простым кодом были добавлены все пользователи AD, обработку прикрепил, вдруг кому понадобится.

Так как у нас в организации несколько почтовых доменов и много организация, создал справочник, в котором указывается Организация, и записывается почтовый домен, получилось см. рис 1

Дальше встал вопрос, как реализовать синхронизацию должностей и групп доступа AD, а также определить папки (группы) где должны находится пользователи. Сначала создал справочник для подразделений и групп см. рис 2. Потом создал справочник для должностей и групп доступа см. рис 3.

На мой взгляд справочники более простой вариант для заполнения, тем более что доступ к ним только у админа 1с, который при необходимости добавляет новое подразделение, должность или почтовый домен. Изначально это конечно трудоемкий и муторный процесс, но потом все это воздается.

Следующим этапом было определено, что доступ к AD автоматом заводится только для пользователей которые устраиваются на Основное место работы, остальные идут только через согласованием с мега боссом. ))

Дальше возник вопрос как написать ФИО сотрудника в транслите, ранее эти вопросом не задавался, но решил спросить у гугла, перепробовал много разных вариантов, и решил остановится вот на этом (где взял уже не помню), но этот не мое, да простит меня автор сего дела, что не указал ссылку))

Функция Транслит(Вход) 
	
	Русский = "абвгдеёжзийклмнопрстуфхцчшщьыъэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯ";
	Англ	= "a;b;v;g;d;e;yo;zh;z;i;y;k;l;m;n;o;p;r;s;t;u;f;kh;ts;ch;sh;shch;;y;;e;yu;ya;A;B;V;G;D;E;Yo;Zh;Z;I;Y;K;L;M;N;O;P;R;S;T;U;F;Kh;Ts;Ch;Sh;Shch;;Y;;E;Yu;Ya";
	МассивАнгл = _РазложитьСтрокуВМассивПодстрок(Англ,";");
	ДлиннаВход = СтрДлина(Вход);
	Выход = "";
	Для а=1 По ДлиннаВход Цикл 
		ТекущийСимвол = Сред(Вход,а,1);	
		Позиция = Найти(Русский,ТекущийСимвол);
		Если Позиция > 0 Тогда 
			Выход = Выход + МассивАнгл[Позиция-1];
		Иначе 
			Выход = Выход + ТекущийСимвол;
		КонецЕсли;
	КонецЦикла;
	Возврат Выход;
	
КонецФункции

Функция _РазложитьСтрокуВМассивПодстрок(Знач Стр, Разделитель = ",") Экспорт
   
    МассивСтрок = Новый Массив();
    Если Разделитель = " " Тогда
        Стр = СокрЛП(Стр);
        Пока 1=1 Цикл
            Поз = Найти(Стр,Разделитель);
            Если Поз=0 Тогда
                МассивСтрок.Добавить(Стр);
                Возврат МассивСтрок;
            КонецЕсли;
            МассивСтрок.Добавить(Лев(Стр,Поз-1));
            Стр = СокрЛ(Сред(Стр,Поз));
        КонецЦикла;
    Иначе
        ДлинаРазделителя = СтрДлина(Разделитель);
        Пока 1=1 Цикл
            Поз = Найти(Стр,Разделитель);
            Если Поз=0 Тогда
                МассивСтрок.Добавить(Стр);
                Возврат МассивСтрок;
            КонецЕсли;
            МассивСтрок.Добавить(Лев(Стр,Поз-1));
            Стр = Сред(Стр,Поз+ДлинаРазделителя);
        КонецЦикла;
    КонецЕсли;
   
КонецФункции

После этого много «Пока гуглю» изучение методов создания пользователей из 1с, в итоге последующее, для документов Прием на работу, Кадровый перевод, Оплата больничного (вид больничного «беременность и роды»), Отпуск сотрудника (кадровый), Увольнение создал подписки на событие с обработкой события ПриПроведении, так как создавать пользователей необходимо не всем кадровикам, а только отвественным лицам, была создана роль "ДобавлениеУдалениеПользователейАД", проверка который проводится перед выполнением кода самой задачи, нет прав, код не выполняется))

При проведении Прием на работу :

//проверяем доступность роли
	Если РольДоступна("ДобавлениеУдалениеПользователейАД") Тогда
	Для Каждого ТекСтрока из Источник.РаботникиОрганизации Цикл
		Если ТекСтрока.Сотрудник.ВидЗанятости = Перечисления.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы Тогда
			//проверяем доступность должности к АД
			ЗапросДол = Новый Запрос;
			ЗапросДол.УстановитьПараметр("Должность", ТекСтрока.Должность);
			ЗапросДол.УстановитьПараметр("Организация", Источник.Организация);
			ЗАпросДол.Текст = 
			"ВЫБРАТЬ
			|	грсДолжностиДляАДСписокДолжностейАД.Должность
			|ИЗ
			|	Справочник.грсДолжностиДляАД.СписокДолжностейАД КАК грсДолжностиДляАДСписокДолжностейАД
			|ГДЕ
			|	грсДолжностиДляАДСписокДолжностейАД.Должность = &Должность
			|	И грсДолжностиДляАДСписокДолжностейАД.Ссылка.ПометкаУдаления = ЛОЖЬ
			|	И грсДолжностиДляАДСписокДолжностейАД.Ссылка.Организация = &Организация";
			ВыборкаДол = ЗапросДол.Выполнить().Выгрузить();
			Если ВыборкаДол.Количество() > 0 Тогда
				//Проверяем если пользователь в АД
				ЗапросАД = Новый Запрос;
				ЗапросАД.УстановитьПараметр("ФизЛицо", ТекСтрока.Сотрудник.ФизЛицо);
				ЗапросАД.Текст = 
				"ВЫБРАТЬ
				|	грсСписокПользователейАД.ДатаСоздания,
				|	грсСписокПользователейАД.ПользовательАД,
				|	грсСписокПользователейАД.ПочтаАД,
				|	грсСписокПользователейАД.ФизЛицо
				|ИЗ
				|	РегистрСведений.грсСписокПользователейАД КАК грсСписокПользователейАД
				|ГДЕ
				|	грсСписокПользователейАД.ФизЛицо = &ФизЛицо";
				ВыборкаАД = ЗапросАД.Выполнить().Выбрать();
				//создаем пользователя
				Если ВыборкаАД.Количество() = 0 Тогда
					Запрос = Новый Запрос;
					Запрос.УстановитьПараметр("ФизЛицо", ТекСтрока.Сотрудник.ФизЛицо);
					Запрос.Текст =
					"ВЫБРАТЬ
					|	ФИОФизЛицСрезПоследних.Фамилия,
					|	ФИОФизЛицСрезПоследних.Имя,
					|	ФИОФизЛицСрезПоследних.Отчество
					|ИЗ
					|	РегистрСведений.ФИОФизЛиц.СрезПоследних КАК ФИОФизЛицСрезПоследних
					|ГДЕ
					|	ФИОФизЛицСрезПоследних.ФизЛицо = &ФизЛицо";
					Выборка = Запрос.Выполнить().Выбрать();
					
					Пока Выборка.Следующий() Цикл
						СтрокаВход = Выборка.Фамилия + Лев(Выборка.Имя, 1)+Лев(Выборка.Отчество, 1);
						СтрокаИмя = Выборка.Имя+" "+ Выборка.Отчество;
						CтрокаФамилия = Выборка.Фамилия;
						СтрокаФИО = Выборка.Фамилия +" "+ Выборка.Имя+" "+Выборка.Отчество;
					КонецЦикла;
					
					ЗапросДом = Новый Запрос;
					ЗапросДом.УстановитьПараметр("Организация", Источник.Организация);
					ЗапросДом.Текст = 
					"ВЫБРАТЬ
					|	грсСоответствиеОрганизацийИПотовыхДоменовОрганизацияДомен.ПочтоыйДомен КАК ПочтДомен
					|ИЗ
					|	Справочник.грсСоответствиеОрганизацийИПочтовыхДоменов.ОрганизацияДомен КАК грсСоответствиеОрганизацийИПотовыхДоменовОрганизацияДомен
					|ГДЕ
					|	грсСоответствиеОрганизацийИПотовыхДоменовОрганизацияДомен.Организация = &Организация
					|	И грсСоответствиеОрганизацийИПотовыхДоменовОрганизацияДомен.Ссылка.ПометкаУдаления = ЛОЖЬ";
					ВыборкаДом = ЗапросДом.Выполнить().Выбрать();
									
					 			
				    ТранслиФИО = Транслит(СтрокаВход);
					
					РС = РегистрыСведений.грсСписокПользователейАД.СоздатьМенеджерЗаписи();
					РС.Активность = Истина;
					РС.ДатаСоздания =  ТекСтрока.ДатаПриема;
					РС.ПользовательАД = ТранслиФИО;
					Пока ВыборкаДом.Следующий() Цикл
					РС.ПочтаАД = Нрег(РС.ПользовательАД)+ВыборкаДом.ПочтДомен;
					КонецЦикла;
					РС.ФизЛицо = ТекСтрока.Сотрудник.ФизЛицо;
					РС.Пароль = "Z"+"z"+Формат(ТекСтрока.ДатаПриема, "ДФ=yyyyMMdd");
					РС.Записать();
					
				    ЗапросПуть = Новый Запрос;
				    ЗапросПуть.УстановитьПараметр("Организация", Источник.Организация);
				    ЗапросПуть.УстановитьПараметр("Подразделение", ТекСтрока.ПодразделениеОрганизации);
				    ЗАпросПуть.Текст = 
				    "ВЫБРАТЬ
				    |	грсСооветствиеПодразделенийИГрупппВАДГруппыАД.ГруппаАД
				    |ИЗ
				    |	Справочник.грсСооветствиеПодразделенийИГрупппВАД.ГруппыАД КАК грсСооветствиеПодразделенийИГрупппВАДГруппыАД
				    |ГДЕ
				    |	грсСооветствиеПодразделенийИГрупппВАДГруппыАД.Ссылка.Организация = &Организация
				    |	И грсСооветствиеПодразделенийИГрупппВАДГруппыАД.Подразделение = &Подразделение
				    |	И грсСооветствиеПодразделенийИГрупппВАДГруппыАД.Ссылка.ПометкаУдаления = ЛОЖЬ";
				    ВыборкаПуть = ЗапросПуть.Выполнить().Выгрузить();
				    ДЛя Каждого ТекПуть из ВыборкаПуть Цикл
				        ПутьАД = СтрЗаменить(ТекПуть.ГруппаАД,"/","");
				    КонецЦикла;

					Попытка
				    objRootLDAP = ПолучитьCOMОбъект("LDAP://rootDSE");
				    objContainer = ПолучитьCOMОбъект("LDAP://"+ПутьАД+",DC=domen,DC=ru");
				    strCN = РС.ПользовательАД ;
				    strSam = РС.ПочтаАД;
				    strPWD = РС.Пароль;
				    objUser = objContainer.Create("User", "CN=" +CтрокаФамилия+" "+СтрокаИмя);
					objUser.Put("name", CтрокаФамилия+" "+СтрокаИмя);
				    objUser.Put("userPrincipalName", strSam);
				    objUser.Put("sAMAccountName",strCN);
				    objUser.Put("mail", strSam);
				    objUser.Put("sn", CтрокаФамилия);
				    objUser.Put("givenName", СтрокаИмя);
				    objUser.Put("displayName", CтрокаФамилия+" "+СтрокаИмя);
					
				    
				    РС = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей();
				    РС.Отбор.Объект.Установить(ТекСтрока.Сотрудник.ФизЛицо);
				    РС.Отбор.Вид.Установить(Справочники.ВидыКонтактнойИнформации.ТелефонФизЛица);
				    РС.Прочитать();
				    Если РС.Количество() > 0 Тогда
				    	Тел = РС.Получить(0).Представление;
				    	objUser.Put("mobile", Тел);
				    КонецЕсли;
				    objUser.Put("company", Источник.Организация.Наименование);
				    objUser.Put("title", ТекСтрока.Должность.Наименование);
				    objUser.Put("department", ТекСтрока.ПодразделениеОрганизации.Наименование);
				    objUser.SetInfo();
				     					
				    objUser.userAccountControl = 512;
				    objUser.SetPassword(strPWD);
				    objUser.SetInfo();
					
					ЗапросГруппы = НОвый Запрос;
				    ЗапросГруппы.УстановитьПараметр("Организация", Источник.Организация);
				    ЗапросГруппы.УстановитьПараметр("Должность", ТекСтрока.Должность);
					ЗапросГруппы.УстановитьПараметр("Подразделение", ТекСтрока.ПодразделениеОрганизации);
				    ЗапросГруппы.Текст =
				    "ВЫБРАТЬ
				    |	грсДолжностиДляАДСписокДолжностейАД.ГруппаБезопасности,
				    |	грсДолжностиДляАДСписокДолжностейАД.ПутьГруппы
				    |ИЗ
				    |	Справочник.грсДолжностиДляАД.СписокДолжностейАД КАК грсДолжностиДляАДСписокДолжностейАД
				    |ГДЕ
				    |	грсДолжностиДляАДСписокДолжностейАД.Ссылка.ПометкаУдаления = ЛОЖЬ
				    |	И грсДолжностиДляАДСписокДолжностейАД.Должность = &Должность
				    |	И грсДолжностиДляАДСписокДолжностейАД.Ссылка.Организация = &Организация
				    |	И грсДолжностиДляАДСписокДолжностейАД.Ссылка.Подразделение = &Подразделение";
				    ВыборкаГрупп = ЗапросГруппы.Выполнить().Выгрузить();
				    Для Каждого ТекГруппа из ВыборкаГрупп Цикл
				     ГруппаБезопасности = ПолучитьCOMОбъект("LDAP://" + ТекГруппа.ПутьГруппы);
				     ГруппаБезопасности.Add(objUser.ADsPath);
					 objUser.SetInfo();
				   КонецЦикла;
					   
					ТабДок = Новый ТабличныйДокумент;
					Макет = ПолучитьОбщийМакет("грсМакетЛогиПарольАД");
					ОбластьМакета = Макет.ПолучитьОбласть("ПользователиАД");
					ОбластьМакета.Параметры.пользователь ="Сотрудник: "+ ТекСтрока.Сотрудник.ФизЛицо.Наименование;
					ОбластьМакета.Параметры.логин = "Логин: "+РС.ПользовательАД;
					ОбластьМакета.Параметры.логин1 = "Логин: domen\"+РС.ПользовательАД;
					ОбластьМакета.Параметры.пароль ="Пароль: "+ РС.Пароль;
					ОбластьМакета.Параметры.почта = "Е-mail: "+РС.ПочтаАД;
					ТабДок.Вывести(ОбластьМакета);
		            ТабДок.ТолькоПросмотр = Истина;
				   	ТабДок.ОтображатьЗаголовки = Истина;
					ТабДок.ОтображатьСетку = Ложь;
					ТабДок.Показать();
					
                    //печатаем инструкции по подключению к RDP
					ЗапуститьПриложение("\\file\Common\Секретари\Инструкции ИТ\Подключение к удаленному рабочему столу Linux.doc");
					ЗапуститьПриложение("\\file\Common\Секретари\Инструкции ИТ\Подключение к удаленному рабочему столу Windows.docx");
				Исключение
					КонецПопытки;
				Иначе
					Сообщить("Для сотрудника " + ТекСтрока.Сотрудник.ФизЛицо + " уже создан пользователь AD", СтатусСообщения.Важное);
				КонецЕсли;
			Иначе
				Сообщить("Для должности "+ ТекСтрока.Должность + " не назначен доступ к ИС");
			КонецЕсли;
			
		КонецЕсли; 
	КонецЦикла;
	 
КонецЕсли;

При проведении Кадрового перемещения:

Если РольДоступна("ДобавлениеУдалениеПользователейАД") Тогда

	Для Каждого Текстрока из Источник.РаботникиОрганизации Цикл
		Попытка	
		Если ТекСтрока.Сотрудник.ВидЗанятости = Перечисления.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы Тогда
			//проверим пользователя на наличие в РС
			ЗапросДол = Новый Запрос;
			ЗапросДол.УстановитьПараметр("Должность", ТекСтрока.Должность);
			ЗапросДол.УстановитьПараметр("Организация", Источник.Организация);
			ЗАпросДол.Текст = 
			"ВЫБРАТЬ
			|	грсДолжностиДляАДСписокДолжностейАД.Должность
			|ИЗ
			|	Справочник.грсДолжностиДляАД.СписокДолжностейАД КАК грсДолжностиДляАДСписокДолжностейАД
			|ГДЕ
			|	грсДолжностиДляАДСписокДолжностейАД.Должность = &Должность
			|	И грсДолжностиДляАДСписокДолжностейАД.Ссылка.ПометкаУдаления = ЛОЖЬ
			|	И грсДолжностиДляАДСписокДолжностейАД.Ссылка.Организация = &Организация";
			ВыборкаДол = ЗапросДол.Выполнить().Выгрузить();
			//проверяем создан ли пользователь в АД
			Если ВыборкаДол.Количество() > 0 Тогда
				ЗапросАД = Новый Запрос;
				ЗапросАД.УстановитьПараметр("ФизЛицо", ТекСтрока.Сотрудник.ФизЛицо);
				ЗапросАД.Текст = 
				"ВЫБРАТЬ
				|	грсСписокПользователейАД.ДатаСоздания,
				|	грсСписокПользователейАД.ПользовательАД,
				|	грсСписокПользователейАД.ПочтаАД,
				|	грсСписокПользователейАД.ФизЛицо
				|ИЗ
				|	РегистрСведений.грсСписокПользователейАД КАК грсСписокПользователейАД
				|ГДЕ
				|	грсСписокПользователейАД.ФизЛицо = &ФизЛицо";
				ВыборкаАД = ЗапросАД.Выполнить().Выбрать();
				ВыборкаАД.Следующий();
				//создаем пользователя если не найден
				Если ВыборкаАД.Количество() = 0 Тогда
					Запрос = Новый Запрос;
					Запрос.УстановитьПараметр("ФизЛицо", ТекСтрока.Сотрудник.ФизЛицо);
					Запрос.Текст =
					"ВЫБРАТЬ
					|	ФИОФизЛицСрезПоследних.Фамилия,
					|	ФИОФизЛицСрезПоследних.Имя,
					|	ФИОФизЛицСрезПоследних.Отчество
					|ИЗ
					|	РегистрСведений.ФИОФизЛиц.СрезПоследних КАК ФИОФизЛицСрезПоследних
					|ГДЕ
					|	ФИОФизЛицСрезПоследних.ФизЛицо = &ФизЛицо";
					Выборка = Запрос.Выполнить().Выбрать();
					
					Пока Выборка.Следующий() Цикл
						СтрокаВход = Выборка.Фамилия + Лев(Выборка.Имя, 1)+Лев(Выборка.Отчество, 1);
						СтрокаИмя = Выборка.Имя+" "+ Выборка.Отчество;
						CтрокаФамилия = Выборка.Фамилия;
						СтрокаФИО = Выборка.Фамилия +" "+ Выборка.Имя+" "+Выборка.Отчество;
					КонецЦикла;
					
					ЗапросДом = Новый Запрос;
					ЗапросДом.УстановитьПараметр("Организация", Источник.Организация);
					ЗапросДом.Текст = 
					"ВЫБРАТЬ
					|	грсСоответствиеОрганизацийИПотовыхДоменовОрганизацияДомен.ПочтоыйДомен КАК ПочтДомен
					|ИЗ
					|	Справочник.грсСоответствиеОрганизацийИПочтовыхДоменов.ОрганизацияДомен КАК грсСоответствиеОрганизацийИПотовыхДоменовОрганизацияДомен
					|ГДЕ
					|	грсСоответствиеОрганизацийИПотовыхДоменовОрганизацияДомен.Организация = &Организация
					|	И грсСоответствиеОрганизацийИПотовыхДоменовОрганизацияДомен.Ссылка.ПометкаУдаления = ЛОЖЬ";
					ВыборкаДом = ЗапросДом.Выполнить().Выбрать();
									
					ТранслиФИО = Транслит(СтрокаВход);
						
					РС = РегистрыСведений.грсСписокПользователейАД.СоздатьМенеджерЗаписи();
					РС.Активность = Истина;
					РС.ДатаСоздания =  ТекСтрока.ДатаНачала;
					РС.ПользовательАД = ТранслиФИО;
					Пока ВыборкаДом.Следующий() Цикл
					РС.ПочтаАД = Нрег(РС.ПользовательАД)+ВыборкаДом.ПочтДомен;
					КонецЦикла;
					РС.ФизЛицо = ТекСтрока.Сотрудник.ФизЛицо;
					РС.Пароль = "Z"+"z"+Формат(ТекСтрока.ДатаНачала, "ДФ=yyyyMMdd");
					РС.Записать();
					
				    ЗапросПуть = Новый Запрос;
				    ЗапросПуть.УстановитьПараметр("Организация", Источник.Организация);
				    ЗапросПуть.УстановитьПараметр("Подразделение", ТекСтрока.ПодразделениеОрганизации);
				    ЗАпросПуть.Текст = 
				    "ВЫБРАТЬ
				    |	грсСооветствиеПодразделенийИГрупппВАДГруппыАД.ГруппаАД
				    |ИЗ
				    |	Справочник.грсСооветствиеПодразделенийИГрупппВАД.ГруппыАД КАК грсСооветствиеПодразделенийИГрупппВАДГруппыАД
				    |ГДЕ
				    |	грсСооветствиеПодразделенийИГрупппВАДГруппыАД.Ссылка.Организация = &Организация
				    |	И грсСооветствиеПодразделенийИГрупппВАДГруппыАД.Подразделение = &Подразделение
				    |	И грсСооветствиеПодразделенийИГрупппВАДГруппыАД.Ссылка.ПометкаУдаления = ЛОЖЬ";
				    ВыборкаПуть = ЗапросПуть.Выполнить().Выгрузить();
				    ДЛя Каждого ТекПуть из ВыборкаПуть Цикл
				        ПутьАД = СтрЗаменить(ТекПуть.ГруппаАД,"/","");
				    КонецЦикла;

					Попытка
				    objRootLDAP = ПолучитьCOMОбъект("LDAP://rootDSE");
				    objContainer = ПолучитьCOMОбъект("LDAP://"+ПутьАД+",DC=domen,DC=ru");
				    strCN = РС.ПользовательАД ;
				    strSam = РС.ПочтаАД;
				    strPWD = РС.Пароль;
				    objUser = objContainer.Create("User", "CN=" +CтрокаФамилия+" "+СтрокаИмя);
					objUser.Put("name", CтрокаФамилия+" "+СтрокаИмя);
				    objUser.Put("userPrincipalName", strSam);
				    objUser.Put("sAMAccountName",strCN);
				    objUser.Put("mail", strSam);
				    objUser.Put("sn", CтрокаФамилия);
				    objUser.Put("givenName", СтрокаИмя);
				    objUser.Put("displayName", CтрокаФамилия+" "+СтрокаИмя);
					
				    
				    РС = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей();
				    РС.Отбор.Объект.Установить(ТекСтрока.Сотрудник.ФизЛицо);
				    РС.Отбор.Вид.Установить(Справочники.ВидыКонтактнойИнформации.ТелефонФизЛица);
				    РС.Прочитать();
				    Если РС.Количество() > 0 Тогда
				    	Тел = РС.Получить(0).Представление;
				    	objUser.Put("mobile", Тел);
				    КонецЕсли;
				    objUser.Put("company", Источник.Организация.Наименование);
				    objUser.Put("title", ТекСтрока.Должность.Наименование);
				    objUser.Put("department", ТекСтрока.ПодразделениеОрганизации.Наименование);
				    objUser.SetInfo();
				     					
				    objUser.userAccountControl = 512;
				    //65536;
				    //objUser.AccountDisabled=1;
				    objUser.SetPassword(strPWD);
				    //objUser.pwdLastSet=0;
				    objUser.SetInfo();
					
					ЗапросГруппы = НОвый Запрос;
				    ЗапросГруппы.УстановитьПараметр("Организация", Источник.Организация);
				    ЗапросГруппы.УстановитьПараметр("Должность", ТекСтрока.Должность);
					ЗапросГруппы.УстановитьПараметр("Подразделение", ТекСтрока.ПодразделениеОрганизации);
				    ЗапросГруппы.Текст =
				    "ВЫБРАТЬ
				    |	грсДолжностиДляАДСписокДолжностейАД.ГруппаБезопасности,
				    |	грсДолжностиДляАДСписокДолжностейАД.ПутьГруппы
				    |ИЗ
				    |	Справочник.грсДолжностиДляАД.СписокДолжностейАД КАК грсДолжностиДляАДСписокДолжностейАД
				    |ГДЕ
				    |	грсДолжностиДляАДСписокДолжностейАД.Ссылка.ПометкаУдаления = ЛОЖЬ
				    |	И грсДолжностиДляАДСписокДолжностейАД.Должность = &Должность
				    |	И грсДолжностиДляАДСписокДолжностейАД.Ссылка.Организация = &Организация
				    |	И грсДолжностиДляАДСписокДолжностейАД.Ссылка.Подразделение = &Подразделение";
				    ВыборкаГрупп = ЗапросГруппы.Выполнить().Выгрузить();
				    Для Каждого ТекГруппа из ВыборкаГрупп Цикл
				     ГруппаБезопасности = ПолучитьCOMОбъект("LDAP://" + ТекГруппа.ПутьГруппы);
				     ГруппаБезопасности.Add(objUser.ADsPath);
					 objUser.SetInfo();
				   КонецЦикла;
				   
				   ТабДок = Новый ТабличныйДокумент;
				   Макет = ПолучитьОбщийМакет("грсМакетЛогиПарольАД");
				   ОбластьМакета = Макет.ПолучитьОбласть("ПользователиАД");
				   ОбластьМакета.Параметры.пользователь ="Сотрудник: "+ ТекСтрока.Сотрудник.ФизЛицо.Наименование;
				   ОбластьМакета.Параметры.логин = "Логин: "+РС.ПользовательАД;
				   ОбластьМакета.Параметры.логин1 = "Логин: domen\"+РС.ПользовательАД;
				   ОбластьМакета.Параметры.пароль ="Пароль: "+ РС.Пароль;
				   ОбластьМакета.Параметры.почта = "Е-mail: "+РС.ПочтаАД;
				   ТабДок.Вывести(ОбластьМакета);
	               ТабДок.ТолькоПросмотр = Истина;
				   	ТабДок.ОтображатьЗаголовки = Истина;
					ТабДок.ОтображатьСетку = Ложь;
					ТабДок.Показать();
					
					ЗапуститьПриложение("\\file\Common\Секретари\Инструкции ИТ\Подключение к удаленному рабочему столу Linux.doc");
					ЗапуститьПриложение("\\file\Common\Секретари\Инструкции ИТ\Подключение к удаленному рабочему столу Windows.docx");
				Исключение
					КонецПопытки;

                //если найден пользователь
				Иначе
					Запрос = Новый Запрос;
					Запрос.УстановитьПараметр("ФизЛицо", ТекСтрока.Сотрудник.ФизЛицо);
					Запрос.Текст =
					"ВЫБРАТЬ
					|	ФИОФизЛицСрезПоследних.Фамилия,
					|	ФИОФизЛицСрезПоследних.Имя,
					|	ФИОФизЛицСрезПоследних.Отчество
					|ИЗ
					|	РегистрСведений.ФИОФизЛиц.СрезПоследних КАК ФИОФизЛицСрезПоследних
					|ГДЕ
					|	ФИОФизЛицСрезПоследних.ФизЛицо = &ФизЛицо";
					Выборка = Запрос.Выполнить().Выбрать();
					
					Пока Выборка.Следующий() Цикл
						СтрокаВход = Выборка.Фамилия + Лев(Выборка.Имя, 1)+Лев(Выборка.Отчество, 1);
						СтрокаИмя = Выборка.Имя+" "+ Выборка.Отчество;
						CтрокаФамилия = Выборка.Фамилия;
						СтрокаФИО = Выборка.Фамилия +" "+ Выборка.Имя+" "+Выборка.Отчество;
					КонецЦикла;

					//если найден сверям должности и при различии перемещаем с новыми правами
					Отбор = Новый Структура;
					Отбор.Вставить("Сотрудник",ТекСтрока.Сотрудник); 
					СтарДанные = РегистрыСведений.РаботникиОрганизаций.ПолучитьПоследнее(Источник.Дата, Отбор);
					Если Не  ТекСтрока.Должность =  СтарДанные.Должность или не  СтарДанные.ПодразделениеОрганизации = ТекСтрока.ПодразделениеОрганизации Тогда
						//не равны должности но равны подразделения
						Если Не  ТекСтрока.Должность = СтарДанные.Должность и СтарДанные.ПодразделениеОрганизации = ТекСтрока.ПодразделениеОрганизации Тогда
								ЗапросДол = Новый Запрос;
								ЗапросДол.Текст =
								ЗапросДол = Новый Запрос;
								ЗапросДол.УстановитьПараметр("Должность", ТекСтрока.Должность);
								ЗАпросДол.Текст = 
								"ВЫБРАТЬ
								|	грсДолжностиДляАДСписокДолжностейАД.Должность
								|ИЗ
								|	Справочник.грсДолжностиДляАД.СписокДолжностейАД КАК грсДолжностиДляАДСписокДолжностейАД
								|ГДЕ
								|	грсДолжностиДляАДСписокДолжностейАД.Должность = &Должность
								|	И грсДолжностиДляАДСписокДолжностейАД.Ссылка.ПометкаУдаления = ЛОЖЬ";
								ВыборкаДол = ЗапросДол.Выполнить().Выгрузить();
								
								Если ВыборкаДол.Количество() > 0 Тогда
									ЗапросПуть = Новый Запрос;
									ЗапросПуть.УстановитьПараметр("Организация", Источник.Организация);
									ЗапросПуть.УстановитьПараметр("Подразделение", ТекСтрока.ПодразделениеОрганизации);
									ЗапросПуть.Текст = 
									"ВЫБРАТЬ
									|	грсСооветствиеПодразделенийИГрупппВАДГруппыАД.ГруппаАД
									|ИЗ
									|	Справочник.грсСооветствиеПодразделенийИГрупппВАД.ГруппыАД КАК грсСооветствиеПодразделенийИГрупппВАДГруппыАД
									|ГДЕ
									|	грсСооветствиеПодразделенийИГрупппВАДГруппыАД.Ссылка.Организация = &Организация
									|	И грсСооветствиеПодразделенийИГрупппВАДГруппыАД.Подразделение = &Подразделение
									|	И грсСооветствиеПодразделенийИГрупппВАДГруппыАД.Ссылка.ПометкаУдаления = ЛОЖЬ";
									ВыборкаПуть = ЗапросПуть.Выполнить().Выгрузить();
									
									ДЛя Каждого ТекПуть из ВыборкаПуть Цикл
									    ПутьАД = СтрЗаменить(ТекПуть.ГруппаАД,"/","");
									КонецЦикла;
												
									objRootLDAP = ПолучитьCOMОбъект("LDAP://rootDSE");
									objContainer = ПолучитьCOMОбъект("LDAP://"+ПутьАД+",DC=domen,DC=ru");
									strCN = СтрокаФИО;
									element_user = objContainer.GetObject("User", "CN=" +strCN);
									element_user.Put("title", ТекСтрока.Должность.Наименование);
									element_user.SetInfo(); 
									
									ЗапросСтарГрупп = НОвый Запрос;
								    ЗапросСтарГрупп.УстановитьПараметр("Владелец", Источник.Организация);
								    ЗапросСтарГрупп.УстановитьПараметр("Должность", СтарДанные.Должность);
									ЗапросСтарГрупп.УстановитьПараметр("Подразделение", СтарДанные.ПодразделениеОрганизации);
								    ЗапросСтарГрупп.Текст =
								    "ВЫБРАТЬ
								    |	грсДолжностиДляАДСписокДолжностейАД.ГруппаБезопасности,
								    |	грсДолжностиДляАДСписокДолжностейАД.ПутьГруппы
								    |ИЗ
								    |	Справочник.грсДолжностиДляАД.СписокДолжностейАД КАК грсДолжностиДляАДСписокДолжностейАД
								    |ГДЕ
								    |	грсДолжностиДляАДСписокДолжностейАД.Ссылка.ПометкаУдаления = ЛОЖЬ
								    |	И грсДолжностиДляАДСписокДолжностейАД.Должность = &Должность
								    |	И грсДолжностиДляАДСписокДолжностейАД.Ссылка.Организация = &Организация
								    |	И грсДолжностиДляАДСписокДолжностейАД.Ссылка.Подразделение = &Подразделение";
									ВыборкаСтарГрупп = ЗапросСтарГрупп.Выполнить().Выгрузить();	
									Для Каждого ТекСтарГруппа из ВыборкаСтарГрупп Цикл
									     ГруппаБезопасности = ПолучитьCOMОбъект("LDAP://" + ТекСтарГруппа.ПутьГруппы);
									     ГруппаБезопасности.Remove(element_user.ADsPath);
										 element_user.SetInfo();
									КонецЦикла;

									ЗапросГруппы = НОвый Запрос;
								    ЗапросГруппы.УстановитьПараметр("Организация", Источник.Организация);
								    ЗапросГруппы.УстановитьПараметр("Должность", ТекСтрока.Должность);
									ЗапросГруппы.УстановитьПараметр("Подразделение", ТекСтрока.ПодразделениеОрганизации);
								    ЗапросГруппы.Текст =
								    "ВЫБРАТЬ
								    |	грсДолжностиДляАДСписокДолжностейАД.ГруппаБезопасности,
								    |	грсДолжностиДляАДСписокДолжностейАД.ПутьГруппы
								    |ИЗ
								    |	Справочник.грсДолжностиДляАД.СписокДолжностейАД КАК грсДолжностиДляАДСписокДолжностейАД
								    |ГДЕ
								    |	грсДолжностиДляАДСписокДолжностейАД.Ссылка.ПометкаУдаления = ЛОЖЬ
								    |	И грсДолжностиДляАДСписокДолжностейАД.Должность = &Должность
								    |	И грсДолжностиДляАДСписокДолжностейАД.Ссылка.Организация = &Организация
								    |	И грсДолжностиДляАДСписокДолжностейАД.Ссылка.Подразделение = &Подразделение";
									ВыборкаГрупп = ЗапросГруппы.Выполнить().Выгрузить();
								    Для Каждого ТекГруппа из ВыборкаГрупп Цикл
								     ГруппаБезопасности = ПолучитьCOMОбъект("LDAP://" + ТекГруппа.ПутьГруппы);
								     ГруппаБезопасности.Add(element_user.ADsPath);
									 element_user.SetInfo();
								   КонецЦикла;
					              КонецЕсли;
							КонецЕсли;
							//равны должности но не равны подразделения
							Если ТекСтрока.Должность =  СтарДанные.Должность и Не СтарДанные.ПодразделениеОрганизации = ТекСтрока.ПодразделениеОрганизации Тогда
								ЗапросДол = Новый Запрос;
								ЗапросДол.Текст =
								ЗапросДол = Новый Запрос;
								ЗапросДол.УстановитьПараметр("Должность", ТекСтрока.Должность);
								ЗАпросДол.Текст = 
								"ВЫБРАТЬ
								|	грсДолжностиДляАДСписокДолжностейАД.Должность
								|ИЗ
								|	Справочник.грсДолжностиДляАД.СписокДолжностейАД КАК грсДолжностиДляАДСписокДолжностейАД
								|ГДЕ
								|	грсДолжностиДляАДСписокДолжностейАД.Должность = &Должность
								|	И грсДолжностиДляАДСписокДолжностейАД.Ссылка.ПометкаУдаления = ЛОЖЬ";
								ВыборкаДол = ЗапросДол.Выполнить().Выгрузить();
								
								Если ВыборкаДол.Количество() > 0 Тогда
									ЗапросПуть = Новый Запрос;
									ЗапросПуть.УстановитьПараметр("Организация", Источник.Организация);
									ЗапросПуть.УстановитьПараметр("Подразделение", СтарДанные.ПодразделениеОрганизации);
									ЗапросПуть.Текст = 
									"ВЫБРАТЬ
									|	грсСооветствиеПодразделенийИГрупппВАДГруппыАД.ГруппаАД
									|ИЗ
									|	Справочник.грсСооветствиеПодразделенийИГрупппВАД.ГруппыАД КАК грсСооветствиеПодразделенийИГрупппВАДГруппыАД
									|ГДЕ
									|	грсСооветствиеПодразделенийИГрупппВАДГруппыАД.Ссылка.Организация = &Организация
									|	И грсСооветствиеПодразделенийИГрупппВАДГруппыАД.Подразделение = &Подразделение
									|	И грсСооветствиеПодразделенийИГрупппВАДГруппыАД.Ссылка.ПометкаУдаления = ЛОЖЬ";
									ВыборкаПуть = ЗапросПуть.Выполнить().Выгрузить();
									
									ДЛя Каждого ТекПуть из ВыборкаПуть Цикл
									    ПутьАД = СтрЗаменить(ТекПуть.ГруппаАД,"/","");
									КонецЦикла;
											
									objRootLDAP = ПолучитьCOMОбъект("LDAP://rootDSE");
									objContainer = ПолучитьCOMОбъект("LDAP://"+ПутьАД+",DC=domen,DC=ru");
									strCN = СтрокаФИО;
									element_user = objContainer.GetObject("User", "CN=" +strCN);
									element_user.Put("department", ТекСтрока.ПодразделениеОрганизации.Наименование);
									element_user.SetInfo(); 
									
									ЗапросСтарПодр = Новый Запрос; 
									ЗапросСтарПодр.УстановитьПараметр("Организация", Источник.Организация);
									ЗапросСтарПодр.УстановитьПараметр("Подразделение", ТекСтрока.ПодразделениеОрганизации);
									ЗапросСтарПодр.Текст = 
									"ВЫБРАТЬ
									|	грсСооветствиеПодразделенийИГрупппВАДГруппыАД.ГруппаАД
									|ИЗ
									|	Справочник.грсСооветствиеПодразделенийИГрупппВАД.ГруппыАД КАК грсСооветствиеПодразделенийИГрупппВАДГруппыАД
									|ГДЕ
									|	грсСооветствиеПодразделенийИГрупппВАДГруппыАД.Ссылка.Организация = &Организация
									|	И грсСооветствиеПодразделенийИГрупппВАДГруппыАД.Подразделение = &Подразделение
									|	И грсСооветствиеПодразделенийИГрупппВАДГруппыАД.Ссылка.ПометкаУдаления = ЛОЖЬ";
									ВыборкаСтарПодр = ЗапросСтарПодр.Выполнить().Выгрузить();
									
									ДЛя Каждого ТекПутьСтары из ВыборкаСтарПодр Цикл
									    ПутьАДСтарый = СтрЗаменить(ТекПутьСтары.ГруппаАД,"/","");
									КонецЦикла;
									element_group = ПолучитьCOMОбъект("LDAP://"+ПутьАДСтарый+",DC=domen,DC=ru");
									element_group.MoveHere("LDAP://CN=" +strCN+","+ПутьАД+",DC=domen,DC=ru", "CN=" +strCN);
									element_group.SetInfo();				
									КонецЕсли;
								КонецЕсли;
								//ни подразделение ни должность не равно
								Если Не  ТекСтрока.Должность =  СтарДанные.Должность и не СтарДанные.ПодразделениеОрганизации = ТекСтрока.ПодразделениеОрганизации Тогда
									ЗапросДол = Новый Запрос;
									ЗапросДол.Текст =
									ЗапросДол = Новый Запрос;
									ЗапросДол.УстановитьПараметр("Должность", ТекСтрока.Должность);
									ЗАпросДол.Текст = 
									"ВЫБРАТЬ
									|	грсДолжностиДляАДСписокДолжностейАД.Должность
									|ИЗ
									|	Справочник.грсДолжностиДляАД.СписокДолжностейАД КАК грсДолжностиДляАДСписокДолжностейАД
									|ГДЕ
									|	грсДолжностиДляАДСписокДолжностейАД.Должность = &Должность
									|	И грсДолжностиДляАДСписокДолжностейАД.Ссылка.ПометкаУдаления = ЛОЖЬ";
									ВыборкаДол = ЗапросДол.Выполнить().Выгрузить();
									
									Если ВыборкаДол.Количество() > 0 Тогда
										ЗапросПуть = Новый Запрос;
										ЗапросПуть.УстановитьПараметр("Организация", Источник.Организация);
										ЗапросПуть.УстановитьПараметр("Подразделение", СтарДанные.ПодразделениеОрганизации);
										ЗапросПуть.Текст = 
										"ВЫБРАТЬ
										|	грсСооветствиеПодразделенийИГрупппВАДГруппыАД.ГруппаАД
										|ИЗ
										|	Справочник.грсСооветствиеПодразделенийИГрупппВАД.ГруппыАД КАК грсСооветствиеПодразделенийИГрупппВАДГруппыАД
										|ГДЕ
										|	грсСооветствиеПодразделенийИГрупппВАДГруппыАД.Ссылка.Организация = &Организация
										|	И грсСооветствиеПодразделенийИГрупппВАДГруппыАД.Подразделение = &Подразделение
										|	И грсСооветствиеПодразделенийИГрупппВАДГруппыАД.Ссылка.ПометкаУдаления = ЛОЖЬ";
										ВыборкаПуть = ЗапросПуть.Выполнить().Выгрузить();
										
										ДЛя Каждого ТекПуть из ВыборкаПуть Цикл
										    ПутьАД = СтрЗаменить(ТекПуть.ГруппаАД,"/","");
										КонецЦикла;
											
										objRootLDAP = ПолучитьCOMОбъект("LDAP://rootDSE");
										objContainer = ПолучитьCOMОбъект("LDAP://"+ПутьАД+",DC=domen,DC=ru");
										strCN = СтрокаФИО;
										element_user = objContainer.GetObject("User", "CN=" +strCN);
										element_user.Put("title", ТекСтрока.Должность.Наименование);
										element_user.Put("department", ТекСтрока.ПодразделениеОрганизации.Наименование);
										element_user.SetInfo(); 
										ЗапросСтарГрупп = НОвый Запрос;
									  	ЗапросСтарГрупп.УстановитьПараметр("Владелец", Источник.Организация);
									    ЗапросСтарГрупп.УстановитьПараметр("Должность", СтарДанные.Должность);
										ЗапросСтарГрупп.УстановитьПараметр("Подразделение", СтарДанные.ПодразделениеОрганизации);
									    ЗапросСтарГрупп.Текст =
									    "ВЫБРАТЬ
									    |	грсДолжностиДляАДСписокДолжностейАД.ГруппаБезопасности,
									    |	грсДолжностиДляАДСписокДолжностейАД.ПутьГруппы
									    |ИЗ
									    |	Справочник.грсДолжностиДляАД.СписокДолжностейАД КАК грсДолжностиДляАДСписокДолжностейАД
									    |ГДЕ
									    |	грсДолжностиДляАДСписокДолжностейАД.Ссылка.ПометкаУдаления = ЛОЖЬ
									    |	И грсДолжностиДляАДСписокДолжностейАД.Должность = &Должность
									    |	И грсДолжностиДляАДСписокДолжностейАД.Ссылка.Организация = &Организация
									    |	И грсДолжностиДляАДСписокДолжностейАД.Ссылка.Подразделение = &Подразделение";
									    ВыборкаСтарГрупп = ЗапросСтарГрупп.Выполнить().Выгрузить();
										
										Для Каждого ТекСтарГруппа из ВыборкаСтарГрупп Цикл
									     ГруппаБезопасности = ПолучитьCOMОбъект("LDAP://" + ТекСтарГруппа.ПутьГруппы);
									     ГруппаБезопасности.Remove(element_user.ADsPath);
										 element_user.SetInfo();
									   КонецЦикла;

										ЗапросГруппы = НОвый Запрос;
									  	ЗапросГруппы.УстановитьПараметр("Организация", Источник.Организация);
									    ЗапросГруппы.УстановитьПараметр("Должность", ТекСтрока.Должность);
										ЗапросГруппы.УстановитьПараметр("Подразделение", ТекСтрока.ПодразделениеОрганизации);
									    ЗапросГруппы.Текст =
									    "ВЫБРАТЬ
									    |	грсДолжностиДляАДСписокДолжностейАД.ГруппаБезопасности,
									    |	грсДолжностиДляАДСписокДолжностейАД.ПутьГруппы
									    |ИЗ
									    |	Справочник.грсДолжностиДляАД.СписокДолжностейАД КАК грсДолжностиДляАДСписокДолжностейАД
									    |ГДЕ
									    |	грсДолжностиДляАДСписокДолжностейАД.Ссылка.ПометкаУдаления = ЛОЖЬ
									    |	И грсДолжностиДляАДСписокДолжностейАД.Должность = &Должность
									    |	И грсДолжностиДляАДСписокДолжностейАД.Ссылка.Организация = &Организация
									    |	И грсДолжностиДляАДСписокДолжностейАД.Ссылка.Подразделение = &Подразделение";
									    ВыборкаГрупп = ЗапросГруппы.Выполнить().Выгрузить();
										
										Для Каждого ТекГруппа из ВыборкаГрупп Цикл
									     ГруппаБезопасности = ПолучитьCOMОбъект("LDAP://" + ТекГруппа.ПутьГруппы);
									     ГруппаБезопасности.Add(element_user.ADsPath);
										 element_user.SetInfo();
									   КонецЦикла;
									   
									 	ЗапросСтарПодр = Новый Запрос; 
										ЗапросСтарПодр.УстановитьПараметр("Организация", Источник.Организация);
										ЗапросСтарПодр.УстановитьПараметр("Подразделение", ТекСтрока.ПодразделениеОрганизации);
										ЗапросСтарПодр.Текст = 
										"ВЫБРАТЬ
										|	грсСооветствиеПодразделенийИГрупппВАДГруппыАД.ГруппаАД
										|ИЗ
										|	Справочник.грсСооветствиеПодразделенийИГрупппВАД.ГруппыАД КАК грсСооветствиеПодразделенийИГрупппВАДГруппыАД
										|ГДЕ
										|	грсСооветствиеПодразделенийИГрупппВАДГруппыАД.Ссылка.Организация = &Организация
										|	И грсСооветствиеПодразделенийИГрупппВАДГруппыАД.Подразделение = &Подразделение
										|	И грсСооветствиеПодразделенийИГрупппВАДГруппыАД.Ссылка.ПометкаУдаления = ЛОЖЬ";
										ВыборкаСтарПодр = ЗапросСтарПодр.Выполнить().Выгрузить();
										
										ДЛя Каждого ТекПутьСтары из ВыборкаСтарПодр Цикл
										    ПутьАДСтарый = СтрЗаменить(ТекПутьСтары.ГруппаАД,"/","");
										КонецЦикла;
										element_group = ПолучитьCOMОбъект("LDAP://"+ПутьАДСтарый+",DC=domen,DC=ru");
										element_group.MoveHere("LDAP://CN=" +strCN+","+ПутьАД+",DC=domen,DC=ru", "CN=" +strCN);
										element_group.SetInfo();

									КонецЕсли;
								КонецЕсли;
								
								
							ИНаче
								//если новая должность не имеет доступа к АД лочим юзверя
									Запрос = Новый Запрос;
									Запрос.УстановитьПараметр("ФизЛицо", ТекСтрока.Сотрудник.ФизЛицо);
									Запрос.Текст =
									"ВЫБРАТЬ
									|	ФИОФизЛицСрезПоследних.Фамилия,
									|	ФИОФизЛицСрезПоследних.Имя,
									|	ФИОФизЛицСрезПоследних.Отчество
									|ИЗ
									|	РегистрСведений.ФИОФизЛиц.СрезПоследних КАК ФИОФизЛицСрезПоследних
									|ГДЕ
									|	ФИОФизЛицСрезПоследних.ФизЛицо = &ФизЛицо";
									Выборка = Запрос.Выполнить().Выбрать();
												
									Пока Выборка.Следующий() Цикл
										СтрокаВход = Выборка.Фамилия + Лев(Выборка.Имя, 1)+Лев(Выборка.Отчество, 1);
										СтрокаФио = Выборка.Фамилия + " "+Выборка.Имя+" "+Выборка.Отчество;
									КонецЦикла;
									Отбор = Новый Структура;
									Отбор.Вставить("Сотрудник",ТекСтрока.Сотрудник); 
									СтарДанные = РегистрыСведений.РаботникиОрганизаций.ПолучитьПоследнее(Источник.Дата, Отбор);
			
									ЗапросПуть = Новый Запрос;
									ЗапросПуть.УстановитьПараметр("Организация", Источник.Организация);
									ЗапросПуть.УстановитьПараметр("Подразделение", СтарДанные.ПодразделениеОрганизации);
									ЗАпросПуть.Текст = 
									"ВЫБРАТЬ
									|	грсСооветствиеПодразделенийИГрупппВАДГруппыАД.ГруппаАД
									|ИЗ
									|	Справочник.грсСооветствиеПодразделенийИГрупппВАД.ГруппыАД КАК грсСооветствиеПодразделенийИГрупппВАДГруппыАД
									|ГДЕ
									|	грсСооветствиеПодразделенийИГрупппВАДГруппыАД.Ссылка.Организация = &Организация
									|	И грсСооветствиеПодразделенийИГрупппВАДГруппыАД.Подразделение = &Подразделение
									|	И грсСооветствиеПодразделенийИГрупппВАДГруппыАД.Ссылка.ПометкаУдаления = ЛОЖЬ";
									ВыборкаПуть = ЗапросПуть.Выполнить().Выгрузить();
									ДЛя Каждого ТекПуть из ВыборкаПуть Цикл
									    ПутьАД = СтрЗаменить(ТекПуть.ГруппаАД,"/","");
									КонецЦикла;
															 			
																					 										
									objRootLDAP = ПолучитьCOMОбъект("LDAP://rootDSE");
									objContainer = ПолучитьCOMОбъект("LDAP://"+ПутьАД+",DC=domen,DC=ru");
									strCN = СтрокаФИО;
									element_user = objContainer.GetObject("User", "CN=" +strCN);
									element_user.userAccountControl = 2;
									element_user.SetInfo(); 
									
									element_group = ПолучитьCOMОбъект("LDAP://OU=user,OU=Dead,DC=domen,DC=ru");
									element_group.MoveHere("LDAP://CN=" +strCN+","+ПутьАД+",DC=domen,DC=ru", "CN=" +strCN);
									element_group.SetInfo();
								КонецЕсли;
							КонецЕСли;
						КонецЕсли;	
					КонецЕсли;
				Исключение;
				КонецПопытки;
				
			КонецЦикла;
		КонецЕсли;
		

При проведении Отпуска:

Если РольДоступна("ДобавлениеУдалениеПользователейАД") Тогда

		Для Каждого ТекСтрока из Источник.РаботникиОрганизации Цикл
			Попытка;
				//находим пользователя
		ЗапросАД = Новый Запрос;
				ЗапросАД.УстановитьПараметр("ФизЛицо", ТекСтрока.Сотрудник.ФизЛицо);
				ЗапросАД.Текст = 
				"ВЫБРАТЬ
				|	грсСписокПользователейАД.ДатаСоздания,
				|	грсСписокПользователейАД.ПользовательАД,
				|	грсСписокПользователейАД.ПочтаАД,
				|	грсСписокПользователейАД.ФизЛицо
				|ИЗ
				|	РегистрСведений.грсСписокПользователейАД КАК грсСписокПользователейАД
				|ГДЕ
				|	грсСписокПользователейАД.ФизЛицо = &ФизЛицо";
				ВыборкаАД = ЗапросАД.Выполнить().Выбрать();
				ВыборкаАД.Следующий();
				Если ВыборкаАД.Количество() > 0 Тогда
					Если ТекСтрока.Сотрудник.ВидЗанятости = Перечисления.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы Тогда
					Запрос = Новый Запрос;
					Запрос.УстановитьПараметр("ФизЛицо", ТекСтрока.Сотрудник.ФизЛицо);
					Запрос.Текст =
					"ВЫБРАТЬ
					|	ФИОФизЛицСрезПоследних.Фамилия,
					|	ФИОФизЛицСрезПоследних.Имя,
					|	ФИОФизЛицСрезПоследних.Отчество
					|ИЗ
					|	РегистрСведений.ФИОФизЛиц.СрезПоследних КАК ФИОФизЛицСрезПоследних
					|ГДЕ
					|	ФИОФизЛицСрезПоследних.ФизЛицо = &ФизЛицо";
					Выборка = Запрос.Выполнить().Выбрать();
								
					Пока Выборка.Следующий() Цикл
						СтрокаВход = Выборка.Фамилия + Лев(Выборка.Имя, 1)+Лев(Выборка.Отчество, 1);
						СтрокаФио = Выборка.Фамилия + " "+Выборка.Имя+" "+Выборка.Отчество;
					КонецЦикла;
					//находим группу АД			
					ЗапросПуть = Новый Запрос;
								ЗапросПуть.УстановитьПараметр("Организация", Источник.Организация);
								ЗапросПуть.УстановитьПараметр("Подразделение", ТекСтрока.Сотрудник.ПодразделениеОрганизации);
								ЗАпросПуть.Текст = 
								"ВЫБРАТЬ
								|	грсСооветствиеПодразделенийИГрупппВАДГруппыАД.ГруппаАД
								|ИЗ
								|	Справочник.грсСооветствиеПодразделенийИГрупппВАД.ГруппыАД КАК грсСооветствиеПодразделенийИГрупппВАДГруппыАД
								|ГДЕ
								|	грсСооветствиеПодразделенийИГрупппВАДГруппыАД.Ссылка.Организация = &Организация
								|	И грсСооветствиеПодразделенийИГрупппВАДГруппыАД.Подразделение = &Подразделение
								|	И грсСооветствиеПодразделенийИГрупппВАДГруппыАД.Ссылка.ПометкаУдаления = ЛОЖЬ";
								ВыборкаПуть = ЗапросПуть.Выполнить().Выгрузить();
								ДЛя Каждого ТекПуть из ВыборкаПуть Цикл
								    ПутьАД = СтрЗаменить(ТекПуть.ГруппаАД,"/","");
								КонецЦикла;
																								 										
					objRootLDAP = ПолучитьCOMОбъект("LDAP://rootDSE");
					objContainer = ПолучитьCOMОбъект("LDAP://"+ПутьАД+",DC=domen,DC=ru");
					strCN = СтрокаФио;
					element_user = objContainer.GetObject("User", "CN=" +strCN);
					//расчитываем время блокировки пользователя = день начала отпуска
					ДатаАД = Формат((НачалоДня(ТекСтрока.ДатаНачала+86400) - НАчалоДня(Дата("16010101"))), "ЧГ=0");
					element_user.accountExpires = Формат(ДатаАД*10000000, "ЧГ=0");
					element_user.SetInfo(); 
					
				КонецЕсли;
			КонецЕсли;
		Исключение;
			
		КонецПопытки;
		КонецЦикла;
		
	КонецЕСли;

При проведении больничного листа по беременности и родам:

Если РольДоступна("ДобавлениеУдалениеПользователейАД") Тогда

		Если Источник.Сотрудник.ВидЗанятости = Перечисления.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы и Источник.ПричинаНетрудоспособности = Перечисления.ПричиныНетрудоспособности.ПоБеременностиИРодам Тогда
			Попытка;
		//находим пользователя АД		
		ЗапросАД = Новый Запрос;
		ЗапросАД.УстановитьПараметр("ФизЛицо", Источник.Сотрудник.ФизЛицо);
		ЗапросАД.Текст = 
		"ВЫБРАТЬ
		|	грсСписокПользователейАД.ДатаСоздания,
		|	грсСписокПользователейАД.ПользовательАД,
		|	грсСписокПользователейАД.ПочтаАД,
		|	грсСписокПользователейАД.ФизЛицо
		|ИЗ
		|	РегистрСведений.грсСписокПользователейАД КАК грсСписокПользователейАД
		|ГДЕ
		|	грсСписокПользователейАД.ФизЛицо = &ФизЛицо";
		ВыборкаАД = ЗапросАД.Выполнить().Выбрать();
		ВыборкаАД.Следующий();
		Если ВыборкаАД.Количество() > 0 Тогда
			Запрос = Новый Запрос;
			Запрос.УстановитьПараметр("ФизЛицо", Источник.Сотрудник.ФизЛицо);
			Запрос.Текст =
			"ВЫБРАТЬ
			|	ФИОФизЛицСрезПоследних.Фамилия,
			|	ФИОФизЛицСрезПоследних.Имя,
			|	ФИОФизЛицСрезПоследних.Отчество
			|ИЗ
			|	РегистрСведений.ФИОФизЛиц.СрезПоследних КАК ФИОФизЛицСрезПоследних
			|ГДЕ
			|	ФИОФизЛицСрезПоследних.ФизЛицо = &ФизЛицо";
			Выборка = Запрос.Выполнить().Выбрать();
						
			Пока Выборка.Следующий() Цикл
				СтрокаВход = Выборка.Фамилия + Лев(Выборка.Имя, 1)+Лев(Выборка.Отчество, 1);
				СтрокаФио = Выборка.Фамилия + " "+Выборка.Имя+" "+Выборка.Отчество;
			КонецЦикла;
			//Находим группу АД			
			ЗапросПуть = Новый Запрос;
						ЗапросПуть.УстановитьПараметр("Организация", Источник.Организация);
						ЗапросПуть.УстановитьПараметр("Подразделение", Источник.Сотрудник.ПодразделениеОрганизации);
						ЗАпросПуть.Текст = 
						"ВЫБРАТЬ
						|	грсСооветствиеПодразделенийИГрупппВАДГруппыАД.ГруппаАД
						|ИЗ
						|	Справочник.грсСооветствиеПодразделенийИГрупппВАД.ГруппыАД КАК грсСооветствиеПодразделенийИГрупппВАДГруппыАД
						|ГДЕ
						|	грсСооветствиеПодразделенийИГрупппВАДГруппыАД.Ссылка.Организация = &Организация
						|	И грсСооветствиеПодразделенийИГрупппВАДГруппыАД.Подразделение = &Подразделение
						|	И грсСооветствиеПодразделенийИГрупппВАДГруппыАД.Ссылка.ПометкаУдаления = ЛОЖЬ";
						ВыборкаПуть = ЗапросПуть.Выполнить().Выгрузить();
						ДЛя Каждого ТекПуть из ВыборкаПуть Цикл
						    ПутьАД = СтрЗаменить(ТекПуть.ГруппаАД,"/","");
						КонецЦикла;
								 										
			objRootLDAP = ПолучитьCOMОбъект("LDAP://rootDSE");
			objContainer = ПолучитьCOMОбъект("LDAP://"+ПутьАД+",DC=domen,DC=ru");
			strCN = СтрокаФио;
			element_user = objContainer.GetObject("User", "CN=" +strCN);
			//начала больничного по беременности и родам
			ДатаАД = Формат((НачалоДня(Источник.ДатаНачалаСобытия+86400) - НАчалоДня(Дата("16010101"))), "ЧГ=0");
			element_user.accountExpires = Формат(ДатаАД*10000000, "ЧГ=0");
			element_user.SetInfo(); 
		КонецЕсли;
	Исключение;
		
	КонецПопытки;
	
	КонецЕсли;
 КонецЕсли;

Ну и при проведении увольнения:

Если РольДоступна("ДобавлениеУдалениеПользователейАД") Тогда

		Для Каждого ТекСтрока из Источник.РаботникиОрганизации Цикл
			попытка;
		Если ТекСтрока.Сотрудник.ВидЗанятости = Перечисления.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы Тогда
		Запрос = Новый Запрос;
		Запрос.УстановитьПараметр("ФизЛицо", ТекСтрока.Сотрудник.ФизЛицо);
		Запрос.Текст =
		"ВЫБРАТЬ
		|	ФИОФизЛицСрезПоследних.Фамилия,
		|	ФИОФизЛицСрезПоследних.Имя,
		|	ФИОФизЛицСрезПоследних.Отчество
		|ИЗ
		|	РегистрСведений.ФИОФизЛиц.СрезПоследних КАК ФИОФизЛицСрезПоследних
		|ГДЕ
		|	ФИОФизЛицСрезПоследних.ФизЛицо = &ФизЛицо";
		Выборка = Запрос.Выполнить().Выбрать();
					
		Пока Выборка.Следующий() Цикл
			СтрокаВход = Выборка.Фамилия + Лев(Выборка.Имя, 1)+Лев(Выборка.Отчество, 1);
			СтрокаФио = Выборка.Фамилия + " "+Выборка.Имя+" "+Выборка.Отчество;
		КонецЦикла;
		
		Отбор = Новый Структура;
		Отбор.Вставить("Сотрудник",ТекСтрока.Сотрудник); 
		СтарДанные = РегистрыСведений.РаботникиОрганизаций.ПолучитьПоследнее(Источник.Дата, Отбор);
		//находим группу в АД
		ЗапросПуть = Новый Запрос;
		ЗапросПуть.УстановитьПараметр("Организация", Источник.Организация);
		ЗапросПуть.УстановитьПараметр("Подразделение", СтарДанные.ПодразделениеОрганизации);
		ЗАпросПуть.Текст = 
		"ВЫБРАТЬ
		|	грсСооветствиеПодразделенийИГрупппВАДГруппыАД.ГруппаАД
		|ИЗ
		|	Справочник.грсСооветствиеПодразделенийИГрупппВАД.ГруппыАД КАК грсСооветствиеПодразделенийИГрупппВАДГруппыАД
		|ГДЕ
		|	грсСооветствиеПодразделенийИГрупппВАДГруппыАД.Ссылка.Организация = &Организация
		|	И грсСооветствиеПодразделенийИГрупппВАДГруппыАД.Подразделение = &Подразделение
		|	И грсСооветствиеПодразделенийИГрупппВАДГруппыАД.Ссылка.ПометкаУдаления = ЛОЖЬ";
		ВыборкаПуть = ЗапросПуть.Выполнить().Выгрузить();
		ДЛя Каждого ТекПуть из ВыборкаПуть Цикл
		    ПутьАД = СтрЗаменить(ТекПуть.ГруппаАД,"/","");
		КонецЦикла;
		//находим пользователя АД
		ЗапросАД = Новый Запрос;
				ЗапросАД.УстановитьПараметр("ФизЛицо", ТекСтрока.Сотрудник.ФизЛицо);
				ЗапросАД.Текст = 
				"ВЫБРАТЬ
				|	грсСписокПользователейАД.ДатаСоздания,
				|	грсСписокПользователейАД.ПользовательАД,
				|	грсСписокПользователейАД.ПочтаАД,
				|	грсСписокПользователейАД.ФизЛицо
				|ИЗ
				|	РегистрСведений.грсСписокПользователейАД КАК грсСписокПользователейАД
				|ГДЕ
				|	грсСписокПользователейАД.ФизЛицо = &ФизЛицо";
				ВыборкаАД = ЗапросАД.Выполнить().Выбрать();
				ВыборкаАД.Следующий();		 			
	
		Если ВыборкаАД.Количество() > 0 Тогда			 										
		objRootLDAP = ПолучитьCOMОбъект("LDAP://rootDSE");
		objContainer = ПолучитьCOMОбъект("LDAP://"+ПутьАД+",DC=domen,DC=ru");
		strCN = СтрокаФио;
		element_user = objContainer.GetObject("User", "CN=" +strCN);
		Если ТекСтрока.ДатаУвольнения = ТекущаяДата() Тогда
		element_user.userAccountControl = 2;
		element_user.SetInfo(); 
		//Лочим пользователя если увольнение в день создания документа
		element_group = ПолучитьCOMОбъект("LDAP://OU=user,OU=Dead,DC=domen,DC=ru");
		element_group.MoveHere("LDAP://CN=" +strCN+","+ПутьАД+",DC=domen,DC=ru", "CN=" +strCN);
		element_group.SetInfo();
	Иначе
		//лочим пользователя если увольнение создано заранее
		ДатаАД = Формат((НачалоДня(ТекСтрока.ДатаУвольнения+86400) - НАчалоДня(Дата("16010101"))), "ЧГ=0");
		element_user.accountExpires = Формат(ДатаАД*10000000, "ЧГ=0");
		element_user.SetInfo();	
	КонецЕсли;
	КонецЕСли;
	КонецЕсли;
Исключение;
	КонецПопытки;
	КонецЦикла;
КонецЕсли;

Потом сисадмины создали группу в AD которая может создавать/редактировать  пользователей AD, включили в нее кадровиков. 2 дня заполнения данных по справочникам созданми изначально и передача в продакшин. Для передачи паролей пользователю, кадровикам сделал ВПФ которая берет данные созданно пользователя из РС, и кадровики отдают в руки с инструкциями пользоватлю. 

Всем спасибо за внимание! Всем добра)

Скачать файлы

Наименование Файл Версия Размер
Как помочь сисадмину при большой текучке кадров:

.epf 11,43Kb
06.07.17
7
.epf 11,43Kb 7 Скачать

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. oldfornit 06.07.17 10:49 Сейчас в теме
кстати, если у вас AD выше чем 2008- можно воспользоваться soap-интерфейсом для взаимодействия с ним.
2. PhoenixAOD 59 06.07.17 10:57 Сейчас в теме
(1)ну 2012 серваки стоят, с soap я сталкивался только когда писал выгрузку из 1с 7.7 в Кристалл 10))) и то плюнули на все эти пляски с бубнами и просто xml в папку обмена запилили))
3. citicat 119 06.07.17 11:10 Сейчас в теме
При большой текучке (об этом статья и написана) надо руководствоваться законом о защите персональных данных.
Данные вводить и нести за них ответстенность работники кадровой службы, а никак не сисадмин. Ссылка на закон здесь
http://www.consultant.ru/document/cons_doc_LAW_213151/

"Персональные данные: особая информация

Персональные данные работников – это любая информация, необходимая работодателю в связи с трудовыми отношениями и касающаяся конкретного сотрудника (п. 1 ст. 3 Федерального закона от 27 июля 2006 № 152-ФЗ «О персональных данных»).

У работодателя (организации или ИП) персональные данные работников, чаще всего, обобщаются в их личных карточках и личных делах. При этом почти каждый менеджер отела кадров или HR-специалист знает, что персональные данные допускается получать только лично от работников. Если персональные сведения возможно получить только от третьих лиц, то российское законодательство обязывает уведомить об этом работника и получить от него письменное согласие (пункт 3 части 1 статьи 86 Трудового кодекса РФ).

Работодатели не вправе получать и обрабатывать персональные данные, которые не относятся напрямую к трудовой деятельности человека. То есть, собирать сведения, допустим, о вероисповедании сотрудников – нельзя. Ведь такая информация представляет из себя личную или семейную тайну и никак не может быть связана с выполнением трудовых обязанностей (пункт 4 части 1 статьи 86 Трудового кодекса РФ).

Получив персональные данные, работодатель в силу требований законодательства обязан их не распространять и не раскрывать третьим лицам без согласия работника (ст. 7 Федерального закона от 27 июля 2006 № 152-ФЗ)."

Обработка персональных данных работодателем, по общему правилу, возможна только с письменного согласия работников. Такое согласие должно включать в себя следующую информацию (части 4 статьи 9 Закона от 27 июля 2006 г. № 152-ФЗ):

ФИО, адрес сотрудника, реквизиты паспорта (иного документа, удостоверяющего его личность), в том числе сведения о дате выдачи документа и выдавшем его органе;
4. PhoenixAOD 59 06.07.17 14:11 Сейчас в теме
(3)
У работодателя (организации или ИП) персональные данные работников, чаще всего, обобщаются в их личных карточках и личных делах. При этом почти каждый менеджер отела кадров или HR-специалист знает, что персональные данные допускается получать только лично от работников. Если персональные сведения возможно получить только от третьих лиц, то российское законодательство обязывает уведомить об этом работника и получить от него письменное согласие (пункт 3 части 1 статьи 86 Трудового кодекса РФ).
это вообще к чему тут? какие 3 лица?
5. chng 06.07.17 19:06 Сейчас в теме
(3) Вообще ваш камент, для тех кому предназначена эта статья, звучит примерно так:
Законодатель запретил водителю автомашины, заправлять автомобиль в поле из канистры, без уведомления производителя бензина. А саму заправку должен выполнять специалист заправочной станции, где приобретен бензин, находящийся в канистре.
:-) Согласитесь, смешно звучит...

Дело в том, что вы не разобрались о чем в статье идет речь.

Автор решал рутинную и очень важную проблему - управления аккаунтами пользователей в корпоративной компьютерной сети (т.е. сети работодателя).
Более того, предложенное решение, практически идеально разделяет ответственность за обработку ПДн, обобщенно о которой, идет речь в вашем комментарии.

В реализованном автором механизме, за персональные данные, отвечает именно кадровик (ему положено по штату), а с автоматически созданным в сети, аккаунтом пользователя, уже управляется сетевой администратор - назначает права, раздает полномочия и т.п.

Другими словами, Вас же не уведомляют каждый раз при расчете заработной платы, что обработали ваши данные из реестра больничных листов, его просто автоматизированно обрабатываю и включают в персонализированный расчет вашего больничного.
Так и тут, при приеме на работу, если кандидат берется на компьютеризированное рабочее место, то при заполнении кадровиком учетной информации о работнике, автоматика создает аккаунт в корпоративной сети, чтобы работник сев за рабочее место мог начать работать. Также оформив приказ на отпуск, кадровик фактически отключил аккаунт время отпуска т.к. юридически сотрудник в находящийся в отпуске не имеет права трудиться на работе.
При этом админам сети остается следить только за тем что находится в их компетенции - работой программного механизма, устраняя косяки в его работе и назначать не формализованные назначения привилегий...

Так что первый выделенный вами абзац, в части "общего правила" попадает под туже строчку в согласии об обработке ПДн что и расчет зарплаты.
Касательно части 4 статьи 9 152 ФЗ Вы перечислили очень мало данных которые должны быть в включены в согласие на обработку ПДн, особенно в все любят игнорировать п.4 и п.7.
6. PhoenixAOD 59 07.07.17 01:25 Сейчас в теме
(5)Вот именно, тем более у меня в организации каждый кто устраивается на работу, подписывает соглашение об обработке ПДн, хотя мне кажется уже в любой организации, если она конечно не ООО "Рога и Копыта" такое соглашение уже давно дают на подпись работнику при трудоустройстве.
7. TODD22 19 07.07.17 05:09 Сейчас в теме
Меня за такой код лет так 5 назад при трудоустройстве отправили учится программировать....
charushkin; +1 Ответить
8. chng 07.07.17 09:25 Сейчас в теме
(7) Однако это не связанные процессы. Код работает, вы учитесь.. не просто профит, а профит+профит...
:-)
9. TODD22 19 07.07.17 10:29 Сейчас в теме
(8)
Однако это не связанные процессы.

Не связанные с чем процессы? И о каких процессах речь?
10. chng 07.07.17 11:05 Сейчас в теме
(9)Обучение красивому написательству и работа пусть и не оптимально написанного кода - собственно об этих процессах и речь.
14. TODD22 19 07.07.17 12:43 Сейчас в теме
(10)Речь не о красивости. А о грубых ошибках. Которые я сделал в тестовом задании.
15. PhoenixAOD 59 08.07.17 01:22 Сейчас в теме
(14)
(10)
Спасибо за поддержку и за критику, но на тот момент когда я это все говнокодил))) у меня вообще не было понятия как это все должно работать, Но так как я исповедую "Работает не лезь", я не стал править ничего, Если честно, я не знаю как можно из запроса вернуть NULL если должность не найдена, и вот в этом была загогулина, а сейчас это все дело предстоит перенести на 3.1, и я буду раз критике и помощи в этом деле, так как в 2.5 это все делается из одного документа, а в 3.1 это разные документы, и ТЧ там совсем другие, я бы выкладывал свои наработки и хотелось бы услышать критику и советы, как бы это сделать было более правильно.
17. chng 10.07.17 08:47 Сейчас в теме
(14) А разве это был пост про Ваши ошибки, зачем было начинать троллить ТС-а?
В отличии от франчей, на производстве, в большинстве случаев, работу оценивают по принципу выполняет свою функцию или нет.

(16)Скрипт это худшая по сравнению с кодом в 1С идея, и вот почему:
Схема со скриптом, порождает еще одну точку администрирования и лишний процесс передачи инфы, от процесса подготовившего информацию (владелец админ 1С) в скрипт который потом по каким-либо причинам накосячит в АД (владелец админ АД).
Согласование формата передачи, правка и администрирование скрипта, чья будет зона ответственности?
Второй минус схемы со скриптом, это необходимость разных скриптов для АД и ЛДАП, а в коде 1С это можно учесть сразу или доработать по мере потребности, главное, что будет уверенность в однообразности результата.

ИМХО, надежней решать эту проблему именно кодом в 1С, тем более что с АД она работает нормально не вообще не помню с какой версии версии платформы...
Конечно, если по уму, то 1С-овцы должны были отдельный модуль для этого в БСП запилить, тем более что большая часть у них уже реализована, но им как обычно пофиг...
18. TODD22 19 10.07.17 08:55 Сейчас в теме
(17)
А разве это был пост про Ваши ошибки, зачем было начинать троллить ТС-а?

ТС делает такие же грубые ошибки. Вы считаете нормой писать и выкладывать код который содержит грубые ошибки? Его так то другие смотрят... учатся...
В отличии от франчей, на производстве, в большинстве случаев, работу оценивают по принципу выполняет свою функцию или нет.

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

За последний месяц второй раз встречаю код написанный по принципу "выполняет свою функцию". Только он отлично выполняет свою функцию на 10-100 документах. А когда их стало 3000 тогда код выполняющий свою функцию стал выполнятся по 30-40 минут.

Второй код выполняет свою функцию в сети розничных на рабочем месте кассира. И он отлично работает только до обеда пока количество чеков не превысило 50-70 штук. После этого проведение одного чека занимает 8 минут!

Но функцию же свою выполняет....
19. chng 10.07.17 09:24 Сейчас в теме
(18)Коллега, я не имел желания вас задеть или обидеть, поэтому если это невольно получилось, прошу прощения.
Думаю, что таки пост ТС-а о другом, поэтому тему о Вас и вашей работе, лучше оставить, чтобы не развивать никому не нужный тут флэйм.
Не буду комментировать ваш последний пост, просто скажу, в (15) посте, ТС конкретно попросил помощи, можете помочь, помогите, не можете или не хотите помочь, тогда не стоит развивать тему про одинокого дартаньяна... :-)
20. TODD22 19 10.07.17 09:37 Сейчас в теме
(19)Давайте ТС будет за себя сам говорить или вам то же хочется побыть дартаньяном?
23. PhoenixAOD 59 10.07.17 12:30 Сейчас в теме
(20)Да я уже сказал за себя, и был бы рад услышал советы и подсказки) Так как сейчас все это дело надо на 3.1 будет перекинуть, и чем все будет правильнее и оптимальнее, да и посмотреть как правильно пишется код я бы с удовольствием) Я сам учился медотом наития кодить, ну и вопросу тут на форуме конечно))
11. v3rter 07.07.17 11:20 Сейчас в теме
Админа нельзя отделить от персональных данных, админу как минимум нужно ФИО и фото сотрудников. Если так уж хочется отделить админа от зарплатных ведомостей персональных данных, то делайте робота с некоторой регулярной выгрузкой из ЗУП-а, а на стороне админа пусть работает скрипт. И с точки зрения безопасности так лучше - база 1С не будет запускать от имени себя код с привилегиями администратора домена.
12. PhoenixAOD 59 07.07.17 11:45 Сейчас в теме
(11) Задача стояла не отделить админа от ПДн, а упростить парням работу, что бы не бегали к кадрам за данными, что бы работали больше по своей текучке, а остальное пусть выполнит 1с.
13. v3rter 07.07.17 12:37 Сейчас в теме
(12) Это понятно, и звезду именно за это поставил. Считайте разделение на выгрузку и скрипт одним из вариантов дальнейшего развития системы.
16. PhoenixAOD 59 08.07.17 01:25 Сейчас в теме
(13)к сожалению скрипты я писать не умею((( но это идея хорошая)) можно попробовать ее в 3.1 запустить)) когда то же надо учиться писать скрипты))
21. v3rter 10.07.17 09:56 Сейчас в теме
(16) Или можно разделить конфигурацию на две части: выгрузку и админку. И пусть каждая запускается со своим уровнем прав: выгрузка - с правами отдела персонала на своём сервере, загрузка - у Вас, в Вашей личной админской конфигурации 1С с правами админа домена. Так спокойнее и безопаснее, считаю.
22. chng 10.07.17 11:31 Сейчас в теме
(21) А смысл? Зачем админу АД отдельно осуществлять загрузку если по определению понятно, что как минимум один раз в день он ее обязан делать (большая движуха кадров определяет это требование). Такое разделение приведет к тому, что в какой-то (как обычно самый "важный" момент) админ не сделает ее вовремя и в результате, чьи-то полномочия не применятся - в разборке, крайним останется админ АД.

Зачем боятся автоматики, если она проверена и правильно отрабатывает? ИМХО не стоит придумывать лишнюю "страховку", которая на самом деле ни от чего не страхует, но обязательно послужит скрытой причиной производственного конфликта.

Другое дело, сделать оповещение админа (смс или например речевым информатором по IP-телефонии) об изменениях в составе пользователей, а самих пользователей парковать в специально созданном для этого контейнере, для дальнейшей обработки админами.
Еще можно упорядочить внесение изменений в АД например двумя моментами, скажем до обеда и в конце рабочего дня. Но это уже зависит от конкретной ситуации в боевой системе.
24. PhoenixAOD 59 10.07.17 12:32 Сейчас в теме
(21)Очень не удачная идея распиливать это на две части)) соглашусь с (22), создание нужно в реальном времени) оформили человека, отдали логин и пароль, дальше принимают или увольняют)) админу некогда этим заниматься, у админа своих проблем хватает)
25. v3rter 10.07.17 13:08 Сейчас в теме
Ну если никого ничем не смущает 1С ЗУП, запущенная с правами админа домена...
26. chng 10.07.17 13:30 Сейчас в теме
(25)Ну если точнее выразиться, то сервер запущенный с полномочиями создания пользователей, не особо смущает, у него и так полномочий системных может быть навешано не мало. А правильная раздача полномочий для системных процессов, ну так в этом суть работы админов...
Думаю один раз правильно настроить права и полномочия процессу для админов проще, чем каждый день, неизвестное количество раз дергаться на создание или перенос по контейнерам, пользователей домена.
Но соглашусь с тем, что работу данного механизма надо проектировать, оценивая реальную архитектуру сети и разные риски в том или ином случае.
27. dungeonkeeper 10 13.07.17 15:20 Сейчас в теме
Это ж насколько должна быть большая "текучка", чтоб заморочиться на такой инструмент.
Хотя вещь полезная. Посмотрел с любопытством, но возникли некоторые вопросы сразу.
Вот, например, при увольнении лочится учетка. А ведь по факту человек еще в этот день работает и даже может еще несколько дней проработать.

Я тоже начал такой инструмент мудрить, но не доделал и бросил.
Приходит с обходным листом при приеме и увольнении, тут же при них и создаю или помечаю себе, что завтра-послезавтра надо заблокировать.
Еще не забыть что-то сделать с почтовым ящиком, аккаунтом на сайте, удаленным доступом и т.д.
По этому замутил свою конфигурацию, где и хочу хранить все нужные данные. Времени нет совсем.

P.S.
Проще все это сделать на каком-нить бесплатном движке типа Joomla. Типа HelpDesk, туда же прикрутить заявки от пользователей и еще много всего.

Чет понесло меня...
28. PhoenixAOD 59 14.07.17 01:27 Сейчас в теме
(27)текучка достаточная что бы заморочиться этим))) а по сути, день в день увольнение это очень большая редкость, и тут уже админы нужны, а по сути обычно за 2 недели же готовятся документы на увольнение.
29. v3rter 14.07.17 10:02 Сейчас в теме
(28)
обычно за 2 недели же готовятся документы на увольнение
Обычно админам сообщают в день увольнения, а то и задним числом )
30. PhoenixAOD 59 14.07.17 10:20 Сейчас в теме
(29)а теперь не сообщают, зачем админу это знать) у нас админы узнают, что человек увольняется когда приходят с обходым к ним.
31. user752750 21.11.18 13:02 Сейчас в теме
Думаю, в этом случае проще 1IDM приобрести, и перекладывать ни на кого не придется и управление доступом автоматизировано будет (там тебе из ЗУП вся нужная инфа для доступа подгрузится и учетки с правами можно автоматом выдавать, блокировать, и все что угодно)
Оставьте свое сообщение

См. также

Запуск 1С под любым пользователем (без необходимости указания пароля) Промо

Пароли v8 v8::Права 1cv8.cf Абонемент ($m)

Предназначается для запуска сеанса другого пользователя из своего сеанса 1С (если пароль вам неизвестен).

1 стартмани

02.07.2019    17152    169    sapervodichka    0    

Права доступа к объектам с гибкими отборами (расширение)

Роли и права v8 ERP2 КА2 Абонемент ($m)

Возможность без доработок конкретизировать пользователям права Просмотра и Изменения объектов базы 1С, установив ограничения с помощью отборов системы компоновки данных.

2 стартмани

02.07.2020    2055    0    sapervodichka    13    

Настройка ограничений входа пользователей в базу (расширение)

Роли и права v8 v8::Права 1cv8.cf Абонемент ($m)

Настраиваем для пользователей 1С разрешенное количество открытых сеансов к текущей базе данных 1С в привязке к компьютерам. (У пользователя не будет возможности превысить допустимое количество сеансов или зайти с чужого компьютера).

2 стартмани

19.05.2020    4879    3    sapervodichka    10    

Информация о пользователях информационной базы (отчет на СКД)

Администрирование данных 1С Роли и права v8 v8::Права v8::СКД 1cv8.cf Абонемент ($m)

Два простых отчета по пользователям информационной базы и информации по ним.

1 стартмани

02.03.2020    4151    16    YPermitin    8    

Просмотр прав пользователей Промо

Информационная безопасность v8 1cv8.cf Абонемент ($m)

Обработка наглядно показывает права доступа конкретного пользователя или роли к конкретному объекту метаданных.

1 стартмани

19.10.2012    31107    106    NILS2009    17    

Права на объект (расширение, отчет)

Роли и права v8 v8::Права 1cv8.cf Абонемент ($m)

Если пользователю не хватает прав на объект, то на практике в 90 % случаев, недостающую роль можно найти через типовой регистр сведений Права ролей. Также с помощью дополнительного отчета или небольшого расширения можно ускорить описанный процесс.

1 стартмани

07.01.2020    14833    92    sapervodichka    21    

Обозреватель криптографии

Инструментарий разработчика Защита ПО v8 Абонемент ($m)

Отчет для просмотра доступных провайдеров и сертификатов криптографии на сервере и клиенте.

2 стартмани

21.10.2019    8540    11    YPermitin    10    

RLS - дубли условий в запросах к СУБД

Практика программирования Роли и права v8 v8::Права 1cv8.cf Абонемент ($m)

"Подводные камни", возникающие при бездумном копировании ролей с ограничениями RLS, как это отражается на производительности, разбор примера и инструмент для анализа.

1 стартмани

07.10.2019    7601    17    geron4    4    

Анализ ролей и прав по профилю или пользователю и отбору метаданных Промо

Роли и права v8::УФ v8::Права v8::СКД 1cv8.cf Россия Абонемент ($m)

Отчет анализа ролей и прав с фильтром по профилю ИЛИ пользователю и отбору по метаданным (документы, справочники, регистры сведений и накоплений, обработок, планов обмена, констант, отчетов), ролям и правам. Тестировано на платформах: 8.3.11.2899,8.3.12.1440. Конфигурация: ERP 2.4.6.154

1 стартмани

02.08.2018    11480    78    strelec13    5    

Завершение работы пользователей

Роли и права v8 1cv8.cf Россия Абонемент ($m)

Завершение работы пользователей с помощью подключения обработчика ожидания.

1 стартмани

02.10.2019    5337    7    user921814    6    

Сравнение прав пользователей

Роли и права v8 v8::Права 1cv8.cf Россия Абонемент ($m)

Иногда требуется понять, почему какому-то пользователю не доступны какие-либо объекты или действия, а "вручную" сравнивать довольно утомительное занятие.

1 стартмани

23.09.2019    4986    19    ivnik    3    

Доступ к данным интернет-поддержки

Пароли v8 v8::УФ 1cv8.cf Россия Абонемент ($m)

Обработка позволяет получить логин и пароль интернет-поддержки.

1 стартмани

18.09.2019    5417    12    0ct0ber    25    

Отключение доступа уволенным пользователям Промо

Информационная безопасность Обработка справочников Администрирование данных 1С v8 v8::Права БП2.0 УПП1 Абонемент ($m)

Давно хотели навести порядок в пользователях? Надоело, что в списке мешаются давно уволенные сотрудники? Тогда эта обработка для Вас!

3 стартмани

15.10.2013    47906    50    VBod    17    

Оптимизация прав ролей

Производительность и оптимизация (HighLoad) Роли и права v8::УФ v8::Права 1cv8.cf Россия Абонемент ($m)

Решение вопроса по неоптимальной настройке (избыточной) ролей, влияющей на производительность системы (потребление оперативной памяти). Алгоритм работы следующий: Выгрузка конфигурации в файлы - Обработка (изменение) файлов прав ролей - Загрузка измененных прав в конфигурацию. Проверено на платформе начиная с 8.3.12.

1 стартмани

09.09.2019    6350    5    toxilamer    11    

PowerShell из 1С: создание пользователя Active Directory

Информационная безопасность v8 1cv8.cf Абонемент ($m)

Пример создания пользователя Active Directory с помощью PowerShell из 1С.

2 стартмани

27.08.2019    8258    11    wowik    13    

Вход в программу под нужным пользователем из карточки пользователя [Расширение]

Информационная безопасность v8::УФ v8::Права 1cv8.cf Абонемент ($m)

При проверке прав пользователей и тестировании требуется быстро войти в программу под пользователем (не меняя пароль пользователю). Для этого в карточку пользователя добавлена кнопка "Запустить сеанс".

1 стартмани

03.07.2019    3743    20    WinnerOnLine    2    

Права доступа ролей Промо

Информационная безопасность v8 v8::Права 1cv8.cf Абонемент ($m)

Отчет по правам доступа ролей, выводит в удобной краткой форме права доступа в разрезе ролей на интересующие нас объекты метаданных или объекты метаданных, к которым есть доступ у интересующей нас роли. Показывает наличие RLS и позволяет сравнить роли.

1 стартмани

05.02.2018    16739    104    Serge R    1    

Сравнение доступа профилей, ролей, пользователей по всем объектам конфигурации 8.3, 8.2 (обычные формы "ОФ" и управляемые формы "УФ") (выборочно)

Роли и права v8 v8::УФ v8::Права 1cv8.cf Абонемент ($m)

Сравнение профилей доступа по всем объектам конфигурации 8.3 (полноценно функционирует с версии 1С:Предприятия 8.1.10 - 8.3.X). Очень хотелось иметь обработку, которая бы показывала различия профилей доступа по каждому конкретному объекту конфигурации и по всем сразу. Желание было воплощено в данной обработке.

1 стартмани

23.06.2019    5162    17    AlexandrSmith    0    

[1С: БП 3] Роль "Кладовщик"

Учет ТМЦ Учет ТМЦ Роли и права v8 v8::БУ v8::Права БП3.0 Россия БУ Абонемент ($m)

Расширение, которое позволяет использовать роль "Кладовщик" для инвентаризации, оприходования и списания товаров.

1 стартмани

21.05.2019    9715    102    dima21m    61    

Подсистема динамических прав

Информационная безопасность v8::Права 1cv8.cf Абонемент ($m)

Подсистема прав, позволяющая в реальном времени (без назначения ролей, перезапуска 1с, изменения конфигурации) менять права пользователя: Просмотр, Создание, Изменение, Проведение, Отмена проведения, Изменение проведенных, Неоперативное проведение. Существенно упрощает управление правами в базах с большим количеством пользователей. Версия платформы 8.3.12.1685.

2 стартмани

10.04.2019    7079    16    itmind    53    

Регистры правил [Расширение] Промо

Инструментарий разработчика Информационная безопасность v8 v8::Права УТ11 Абонемент ($m)

Регистры правил - права доступа, запрет редактирования, автоподстановка реквизитов и т.д.

10 стартмани

15.03.2018    16175    7    33lab    1    

Аутентификация на внешних сервисах посредством OAuth

Информационная безопасность Внешние источники данных v8 v8::УФ 1cv8.cf Абонемент ($m)

Пример подключения к сервисам Google из 1С с помощью протокола OAuth и получения данных с внешнего сервиса.

1 стартмани

03.04.2019    17206    18    binx    123    

Запуск 1С под другим пользователем без ввода пароля

Информационная безопасность v8 v8::УФ v8::Права 1cv8.cf Абонемент ($m)

Для проверки настроек ролей и прав или для отладки можно использовать это решение.

1 стартмани

22.03.2019    6497    31    pridecom    0    

Наследование ролей в профилях групп доступа в конфигурациях на базе БСП

Практика программирования БСП (Библиотека стандартных подсистем) Роли и права v8 v8::Права 1cv8.cf Абонемент ($m)

С помощью данной доработки можно создать новый профиль групп доступа, с наследованием ролей от базового (поставляемого) профиля. В созданном профиле можно добавить или исключить какие-либо роли относительно базового профиля.

1 стартмани

15.03.2019    8057    9    ids79    1    

Матрица ролей и прав пользователей (управляемая форма, с настройкой оформления) Промо

Информационная безопасность v8 1cv8.cf Абонемент ($m)

Матрица ролей и прав пользователей, можно быстро посмотреть, какие конкретно права на конкретный объект у пользователя (или роли). UPD 11/07/17 Добавил форму настроек компоновки, теперь в конфигурациях перехватывающих формы настроек ошибка не появится ) Добавлена команда(по правой кнопки мыши) "отметить роли доступные пользователю" на второй закладке - ставить галочку по ролям к которым у пользователя есть доступ.

2 стартмани

11.11.2013    36192    409    sanek_gk    39    

PasswordHashViewer - просмотр хэшей пользовательских паролей

Информационная безопасность v8 1cv8.cf Абонемент ($m)

Программа для просмотра хэшей паролей пользователей в файловых и клиент-серверных базах 1С. Зачем это нужно? Для их проверки на криптостойкость.

1 стартмани

25.02.2019    5257    9    GeraltSnow    5    

Обезличивание базы ЗУП 3.1.*

Информационная безопасность Зарплата Управление персоналом (HRM) v8 v8::СПР ЗУП3.x Абонемент ($m)

Обработка по перемешиванию/скрытию конфиденциальной информации в базе ЗУП.

1 стартмани

05.02.2019    8914    54    Skin123    10    

Наводим порядок в Active Directory с помощью ЗУП / ЗИКГУ 3.1 (идентификация, отключение и актуализация учетных записей пользователей)

Информационная безопасность Администрирование данных 1С v8 v8::СПР ЗКБУ ЗУП3.x Россия Абонемент ($m)

Продолжаем использовать ЗУП 3.1 совместно с LDAP во имя автоматизации работы системного администратора. В этот раз займемся аудитом учетных записей. Обработка производит сопоставление учетной записи с данными сотрудников из ЗУП, причем с учетом недавних событий (для перехода на ЗУП 3.1 чаще всего используется рекомендованный перенос, не включающий уволенных сотрудников) есть возможность использовать объединенные с помощью COM-соединения данные ЗУП 2.5 и ЗУП 3.1. Также в данной обработке есть возможность массовой корректировки, заполнения данных и отключения учетных записей. Перед использованием обработки для душевного спокойствия необходимо сделать резервную копию Active Directory любым удобным способом. Протестировано на ЗУП 3.1.6 - 3.1.8.

5 стартмани

01.02.2019    7077    34    Туки Туки    10    

Включение и выключение регистрации отказа в доступе если "У пользователя не достаточно прав над операцией с базой данных". Промо

Информационная безопасность Журнал регистрации v8 1cv8.cf Абонемент ($m)

Включает (выключает) регистрацию событий отказа доступа в журнале регистрации.

1 стартмани

12.01.2011    33453    63    nexts    32    

Получение логина и пароля ИТС из базы 1С

Информационная безопасность v8 v8::УФ 1cv8.cf Абонемент ($m)

Обработка показывает пароль от сайта https://releases.1c.ru прямо из базы 1С.

1 стартмани

02.11.2018    19840    93    Timur.V    21    

Особенность при создании своих ролей в конфигурациях на управляемых формах

Информационная безопасность v8 v8::УФ v8::Права 1cv8.cf Россия Абонемент ($m)

Столкнулся с небольшой проблемкой при создании "своих" ролей в конфигураторе и добавлении их пользователям. Пользователю не добавляются созданные в конфигураторе роли, 1С 8.3, Управляемые формы. Гуглил много, ответа толкового не нашёл, поэтому пришлось разбираться самому и как результат, решил поделиться опытом. Возможно, кому-то пригодится.

1 стартмани

29.10.2018    12403    7    d.saladin    13    

Запрет на запуск более одного сеанса для одного пользователя в 1С: Предприятие 8.3 ЗУП, БП, КА, ERP, УАТ и т.д.

Информационная безопасность v8 1cv8.cf Россия Абонемент ($m)

Ограничение запуска 1С: Предприятие нескольких сеансов под одним пользователем. Функционал разработан через расширение, конфигурацию с поддержки снимать НЕ НУЖНО. Функционал работает в файловом и клиент-серверном варианте работы конфигурации. Платформа 8.3.12.1529 Конфигурации КА 2.4.5.71; ERP 2.4.5.54; БП 3.0.64.21; ЗУП 3.1.7.87 (это релизы на которых была произведена проверка, так же будет работать на всех стандартных конфигурациях 1С с режимом совместимости Версия 8.3.10)

1 стартмани

29.08.2018    12863    58    mityushov.vv    34    

Права пользователей Промо

Информационная безопасность v8 1cv8.cf Абонемент ($m)

Кросс-таблица прав пользователей (подсистема "Управление доступом")

1 стартмани

10.05.2016    26754    99    inspam    4    

[Расширения] Управление видимостью разделов для разных пользователей

Работа с интерфейсом Информационная безопасность v8 1cv8.cf Россия Абонемент ($m)

Как скрыть/показать раздел в управляемом приложении используя расширение, на примере БП 3.0

1 стартмани

05.07.2018    11214    11    Alex_E    10    

Анализ и редактирование прав пользователей (управляемые формы)

Информационная безопасность v8 v8::УФ v8::Права 1cv8.cf Россия Абонемент ($m)

В обработке реализовано два отчета - матрица ролей (пересечение ролей и пользователей), и анализ прав на объекты в разрезе пользователей / ролей. Также есть запуск под пользователем с временной подменой пароля и редактирование прав непосредственно в матрице.

2 стартмани

03.07.2018    9412    56    axelerleo    3    

Пример добавления собственных ролей пользователям через расширение 1С

Практика программирования Информационная безопасность v8 v8::Права 1cv8.cf Абонемент ($m)

В публикации представлена пошаговая инструкция создания собственных ролей с использованием расширения 1С:Предприятие 8.3.10 и программа с примером.

1 стартмани

18.01.2018    37394    12    flyDrag    19    

Права по ролям Промо

Информационная безопасность v8 1cv8.cf Абонемент ($m)

Отчет выводит установленные права

2 стартмани

16.09.2015    23657    75    nad11    1    

Анализатор прав и ролей

Информационная безопасность v8::Права 1cv8.cf Россия Абонемент ($m)

"Достали!" - именно с такой фразы началась разработка) Все кто сталкивались с последними мега конфигурациями (не будем показывать пальцем на ERP) и видели этот нереальный список ролей, от которого даже скролл дымился, то вам однозначно пригодится эта обработка. Основной целью было дополнить типовой функционал "Все роли" отборами для быстрого поиска нужных доступов. Возможности: просмотр по метаданным список их ролей и прав, просмотр по роли ее список метаданных, просмотр по правам ограничения (RLS).

1 стартмани

02.01.2018    8464    51    denacid    6    

Редактирование прав пользователя (анализ прав доступа)

Роли и права v8 v8::Права БП3.0 УТ11 Абонемент ($m)

Обработка для анализа и редактирования ролей пользователей 1С Предприятия.

1 стартмани

21.12.2017    12071    86    feniks_pro90    5    

Запуск ИБ 1С под любым пользователем (только для разработчиков/администраторов)

Информационная безопасность v8 v8::Права 1cv8.cf Россия Абонемент ($m)

Когда ведете разработку нового функционала, то есть необходимость протестировать алгоритмы под разными правами. Тогда Вам нужна данная обработка, которая ускорит процесс входа в базу под нужным пользователем.

1 стартмани

28.11.2017    9926    39    Diagnostiks    7    

Анализ ролей доступа (обычная и УФ) Промо

Информационная безопасность v8 v8::УФ 1cv8.cf Абонемент ($m)

Анализ ролей доступа. Определяет доступность к справочникам, документам, отчетам и т.д. Не нужно пересматривать кучу ролей, чтобы понять, что Вам нужно.

1 стартмани

25.08.2015    26330    186    fugu    9    

Необходимые роли по объектам

Роли и права v8::Права 1cv8.cf Россия Абонемент ($m)

Обработка позволяет увидеть, какие роли нужно дать пользователям для доступа к определенному документу, справочнику и т.д.

1 стартмани

26.08.2017    11664    34    no_betrayal    4    

Выгрузка и загрузка пользователей между различными конфигурациями 1С 8.3, включая пароли (Управляемое приложение, обычное приложение, БСП)

Роли и права v8 v8::УФ v8::Права 1cv8.cf Абонемент ($m)

Предназначена для переноса пользователей между различными конфигурациями 1С 8.3, включая пароли. Только для БСП (библиотека стандартных подсистем). Проверено на "Документооборот 2.0", "Управление торговлей 11", БСП 2.3.

4 стартмани

07.07.2017    18124    93    TuneSoft    5    

Создание и удаление пользователей в конфигурациях с БСП

Информационная безопасность v8 1cv8.cf Абонемент ($m)

Быстрое создание пользователей с заранее известными правами в интерактивном режиме и из файла. По одному и списком. Быстрое удаление списком пользователей ИБ и пометка на удаление элементов справочника Пользователи.

1 стартмани

20.06.2017    8870    26    user768334    1    

Запуск 1С под пользователем без сброса пароля Промо

Информационная безопасность v8 Россия Абонемент ($m)

Обработка позволяет запустить пользовательский режим 1С, не сбрасывая полностью пароль пользователя. Что очень удобно при отладке прав и RLS. Также есть возможность быстро установить пароль 123, и вернуть старый пароль вручную.

1 стартмани

18.11.2013    44664    312    mylogin    38    

Отключение/включение защиты от опасных действий пользователей

Информационная безопасность v8 v8::УФ 1cv8.cf Абонемент ($m)

Обработка позволяет управлять настройкой "Защита от опасных действий" пользователей информационной базы.

1 стартмани

16.05.2017    11853    30    Brawler    8    

Просмотр ролей по объектам метаданных конфигурации на 1С 8.3

Роли и права v8 1cv8.cf Россия Абонемент ($m)

Универсальная обработка для просмотра ролей по любому из объектов конфигурации 1С 8.3.для настройки пользовательских интерфейсов по стандартным ролям в конфигурации ERP 2.4, ЗУП 3.1, БП 3.0 и т.д.

1 стартмани

13.04.2017    15292    85    mityushov.vv    7    

Матрица полномочий (права доступа по профилям)

Информационная безопасность v8::Права v8::СКД ERP2 БП3.0 ЗУП3.x Россия Абонемент ($m)

Отчет позволяет вывести права доступа (чтение, просмотр, изменение, добавление, удаление, проведение) для объектов конфигурации в разрезе профилей. Профили - механизм настройки ролей в современных конфигурациях. Данная обработка делалась под 1С: ERP, но, думаю, будет работать и в других конфигурациях, где используются профили из БСП.

1 стартмани

30.03.2017    17317    90    dimpson    1    

Отчет для анализа прав доступа в разрезах Право/Объект/Роль/Профиль/Пользователь Промо

Информационная безопасность v8 1cv8.cf Абонемент ($m)

Удобный анализ прав доступа в различных разрезах, с промежуточным кэшированием набора данных. Только для конфигураций на БСП.

1 стартмани

16.04.2015    27292    330    unichkin    13