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

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

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

23
Хотелось бы поделиться своим опытом создания пользователей 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 дня заполнения данных по справочникам созданми изначально и передача в продакшин. Для передачи паролей пользователю, кадровикам сделал ВПФ которая берет данные созданно пользователя из РС, и кадровики отдают в руки с инструкциями пользоватлю. 

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

23

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

Наименование Файл Версия Размер
Как помочь сисадмину при большой текучке кадров:
.epf 11,43Kb
06.07.17
6
.epf 11,43Kb 6 Скачать

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

Комментарии
Избранное Подписка Сортировка: Древо
1. oldfornit 06.07.17 10:49 Сейчас в теме
кстати, если у вас AD выше чем 2008- можно воспользоваться soap-интерфейсом для взаимодействия с ним.
2. PhoenixAOD 57 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 57 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 57 07.07.17 01:25 Сейчас в теме
(5)Вот именно, тем более у меня в организации каждый кто устраивается на работу, подписывает соглашение об обработке ПДн, хотя мне кажется уже в любой организации, если она конечно не ООО "Рога и Копыта" такое соглашение уже давно дают на подпись работнику при трудоустройстве.
7. TODD22 18 07.07.17 05:09 Сейчас в теме
Меня за такой код лет так 5 назад при трудоустройстве отправили учится программировать....
8. chng 07.07.17 09:25 Сейчас в теме
(7) Однако это не связанные процессы. Код работает, вы учитесь.. не просто профит, а профит+профит...
:-)
9. TODD22 18 07.07.17 10:29 Сейчас в теме
(8)
Однако это не связанные процессы.

Не связанные с чем процессы? И о каких процессах речь?
10. chng 07.07.17 11:05 Сейчас в теме
(9)Обучение красивому написательству и работа пусть и не оптимально написанного кода - собственно об этих процессах и речь.
14. TODD22 18 07.07.17 12:43 Сейчас в теме
(10)Речь не о красивости. А о грубых ошибках. Которые я сделал в тестовом задании.
15. PhoenixAOD 57 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 18 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 18 10.07.17 09:37 Сейчас в теме
(19)Давайте ТС будет за себя сам говорить или вам то же хочется побыть дартаньяном?
23. PhoenixAOD 57 10.07.17 12:30 Сейчас в теме
(20)Да я уже сказал за себя, и был бы рад услышал советы и подсказки) Так как сейчас все это дело надо на 3.1 будет перекинуть, и чем все будет правильнее и оптимальнее, да и посмотреть как правильно пишется код я бы с удовольствием) Я сам учился медотом наития кодить, ну и вопросу тут на форуме конечно))
11. v3rter 07.07.17 11:20 Сейчас в теме
Админа нельзя отделить от персональных данных, админу как минимум нужно ФИО и фото сотрудников. Если так уж хочется отделить админа от зарплатных ведомостей персональных данных, то делайте робота с некоторой регулярной выгрузкой из ЗУП-а, а на стороне админа пусть работает скрипт. И с точки зрения безопасности так лучше - база 1С не будет запускать от имени себя код с привилегиями администратора домена.
12. PhoenixAOD 57 07.07.17 11:45 Сейчас в теме
(11) Задача стояла не отделить админа от ПДн, а упростить парням работу, что бы не бегали к кадрам за данными, что бы работали больше по своей текучке, а остальное пусть выполнит 1с.
13. v3rter 07.07.17 12:37 Сейчас в теме
(12) Это понятно, и звезду именно за это поставил. Считайте разделение на выгрузку и скрипт одним из вариантов дальнейшего развития системы.
16. PhoenixAOD 57 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 57 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 57 14.07.17 01:27 Сейчас в теме
(27)текучка достаточная что бы заморочиться этим))) а по сути, день в день увольнение это очень большая редкость, и тут уже админы нужны, а по сути обычно за 2 недели же готовятся документы на увольнение.
29. v3rter 14.07.17 10:02 Сейчас в теме
(28)
обычно за 2 недели же готовятся документы на увольнение
Обычно админам сообщают в день увольнения, а то и задним числом )
30. PhoenixAOD 57 14.07.17 10:20 Сейчас в теме
(29)а теперь не сообщают, зачем админу это знать) у нас админы узнают, что человек увольняется когда приходят с обходым к ним.
31. user752750 21.11.18 13:02 Сейчас в теме
Думаю, в этом случае проще 1IDM приобрести, и перекладывать ни на кого не придется и управление доступом автоматизировано будет (там тебе из ЗУП вся нужная инфа для доступа подгрузится и учетки с правами можно автоматом выдавать, блокировать, и все что угодно)
Оставьте свое сообщение

См. также

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

Инструменты и обработки Системный администратор Программист Внешний отчет (ert,erf) v8 Windows Абонемент ($m) Инструментарий разработчика Защита ПО

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

2 стартмани

21.10.2019    787    2    YPermitin    4       

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

Статья Программист Конфигурация (md, cf) v8 v8::Права 1cv8.cf Абонемент ($m) Практика программирования Роли и права

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

1 стартмани

07.10.2019    2076    6    geron4    4       

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

Инструменты и обработки Программист Конфигурация (md, cf) v8 1cv8.cf Россия Windows Абонемент ($m) Роли и права

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

1 стартмани

02.10.2019    1298    3    user921814    5       

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

Отчеты и формы Системный администратор Внешняя обработка (ert,epf) v8 v8::Права 1cv8.cf Россия Windows Абонемент ($m) Роли и права

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

1 стартмани

23.09.2019    1128    8    ivnik    3       

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

Отчеты и формы Системный администратор Программист Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Россия Абонемент ($m) Пароли

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

1 стартмани

18.09.2019    2336    230    0ct0ber    25       

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

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8::УФ v8::Права 1cv8.cf Россия Windows Абонемент ($m) Производительность и оптимизация (HighLoad) Роли и права

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

1 стартмани

09.09.2019    2008    2    toxilamer    11       

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

Инструменты и обработки Системный администратор Программист Расширение (cfe) v8::УФ v8::Права 1cv8.cf Абонемент ($m) Информационная безопасность

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

1 стартмани

03.07.2019    1489    13    WinnerOnLine    1       

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

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 v8::Права 1cv8.cf Абонемент ($m) Информационная безопасность

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

1 стартмани

02.07.2019    10443    102    sapervodichka    0       

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

Отчеты и формы Системный администратор Программист Внешняя обработка (ert,epf) v8 v8::УФ v8::Права 1cv8.cf Абонемент ($m) Роли и права

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

1 стартмани

23.06.2019    1644    10    AlexandrSmith    0       

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

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

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

2 стартмани

10.04.2019    4511    16    itmind    53       

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

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

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

1 стартмани

03.04.2019    6100    4    binx    5       

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

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

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

1 стартмани

15.03.2019    3134    3    ids79    0       

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

Инструменты и обработки Системный администратор Приложение (exe) v8 1cv8.cf Windows Абонемент ($m) Информационная безопасность

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

1 стартмани

25.02.2019    2148    10    GeraltSnow    5       

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

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

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

1 стартмани

02.11.2018    10549    53    Timur.V    19       

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

Инструменты и обработки Системный администратор Программист Расширение (cfe) v8 v8::УФ v8::Права 1cv8.cf Россия Абонемент ($m) Информационная безопасность

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

1 стартмани

29.10.2018    5355    3    d.saladin    9       

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

Инструменты и обработки Системный администратор Программист Расширение (cfe) 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    7036    37    mityushov.vv    25       

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

Отчеты и формы Системный администратор Программист Внешний отчет (ert,erf) v8::УФ v8::Права v8::СКД 1cv8.cf Россия Абонемент ($m) Роли и права

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

1 стартмани

02.08.2018    7164    69    strelec13    4       

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

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 v8::УФ v8::Права 1cv8.cf Россия Абонемент ($m) Информационная безопасность

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

2 стартмани

03.07.2018    5889    51    axelerleo    3       

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

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

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

10 стартмани

15.03.2018    10261    27    33lab    0       

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

Отчеты и формы Системный администратор Программист Внешний отчет (ert,erf) v8 v8::Права 1cv8.cf Абонемент ($m) Информационная безопасность

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

1 стартмани

05.02.2018    12411    78    Serge R    1       

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

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

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

1 стартмани

18.01.2018    25645    12    flyDrag    19       

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

Отчеты и формы Системный администратор Программист Внешняя обработка (ert,epf) v8::Права 1cv8.cf Россия Абонемент ($m) Информационная безопасность

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

1 стартмани

02.01.2018    6952    42    denacid    6       

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

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 v8::Права 1cv8.cf Россия Абонемент ($m) Информационная безопасность

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

1 стартмани

28.11.2017    7825    40    Diagnostiks    7       

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

Отчеты и формы Системный администратор Программист Внешняя обработка (ert,epf) v8::Права 1cv8.cf Россия Абонемент ($m) Роли и права

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

1 стартмани

26.08.2017    9382    35    no_betrayal    4       

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

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 v8::УФ v8::Права 1cv8.cf Абонемент ($m) Роли и права

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

3 стартмани

07.07.2017    14028    70    tunesoft    0       

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

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Информационная безопасность

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

1 стартмани

20.06.2017    6927    20    user768334    0       

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

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Абонемент ($m) Информационная безопасность

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

1 стартмани

13.04.2017    12251    62    mityushov.vv    3       

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

Отчеты и формы Системный администратор Программист Внешний отчет (ert,erf) v8::Права v8::СКД ERP2 БП3.0 ЗУП3.x Россия Абонемент ($m) Информационная безопасность

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

1 стартмани

30.03.2017    13804    73    dimpson    1       

"Защита от опасных действий" или как снять галочку у всех пользователей 15

Инструменты и обработки Системный администратор Внешняя обработка (ert,epf) v8::Права 1cv8.cf Windows Абонемент ($m) Информационная безопасность

В новых версиях платформы 1С:Предприятие 8.3 (8.3.9.2033) появилась очень замечательная фишка. Реквизит у пользователя "Защита от опасных действий"

1 стартмани

17.01.2017    26226    120    Tatitutu    12       

Ограничение доступа на уровне записей по кассам 9

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 УПП1 Россия Абонемент ($m) Информационная безопасность Практика программирования

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

1 стартмани

07.10.2016    10485    53    Diego_Iv    13       

Управление доступом к документам и справочникам 17

Инструменты и обработки Системный администратор Расширение (cfe) v8 БГУ ДО Абонемент ($m) Информационная безопасность

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

1 стартмани

16.09.2016    9716    60    sikvel2012    7       

Просмотр информации о пользователе и его действий в документообороте 8 КОРП 10

Инструменты и обработки Системный администратор Внешняя обработка (ert,epf) v8 ДО Россия Windows Документооборот и делопроизводство Абонемент ($m) Рабочее место Информационная безопасность

Просмотр информации о свойствах пользователя документооборота, его настройках, персональных данных; созданные им документы, задачи ему, от него, его процессы и т.д. в документообороте 8 КОРП

1 стартмани

03.07.2016    8337    22    diletant    7       

Матрица прав конфигурации по ролям (управляемая форма, "такси" для любых баз, работающих на платформах 8.2... и 8.3...) 16

Отчеты и формы Системный администратор Программист Внешняя обработка (ert,epf) v8 v8::УФ v8::Права 1cv8.cf Абонемент ($m) Роли и права

Данная обработка поможет в просмотре и анализе прав, которые используют роли конфигурации для всей конфигурации. Матрица строится динамически, есть отбор по синонимам метаданных, отбор по определенным ролям, также возможен экспорт данных матрицы. Работает на любой конфигурации, на платформе 8.2... и 8.3... Для обычного приложения, вида как УТ 10.3, БП 2.0. и прочих, должна быть встроена в конфигурацию.

2 стартмани

09.06.2016    13104    57    hakerxp    0       

1С 8.3 (УФ) Удаление лишних (спящих, с повторным входом пользователя, длительно простаивающих) сеансов в один клик 12

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

Обработка для быстрого отключения "непотребных" (с точки зрения запустившего обработку) сеансов: спящих, с длительным временем неактивности (предел настраивается), множественные сеансы, открытые одним пользователем. Есть настраиваемый "белый список" (список пользователей, сеансы которых не будут закрыты ни при каких условиях)

1 стартмани

31.05.2016    14481    68    HorusTheOne    3       

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

Инструменты и обработки Системный администратор Программист Внешний отчет (ert,erf) v8 1cv8.cf Абонемент ($m) Информационная безопасность

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

1 стартмани

10.05.2016    23711    98    inspam    4       

"Зачистка" 1С от пользователей с отключенной учетной записью Windows 22

Инструменты и обработки Системный администратор Программист Внешний отчет (ert,erf) v8 1cv8.cf Windows Абонемент ($m) Информационная безопасность

Задача: в справочнике пользователей вычислить по учетной записи windows уволенных (т.е. с отключенной учеткой), перенести таких пользователей в папку "Уволенные" (при отсутствии создать такую) а в карточке пользователя снять галку "Аутентификация windows".

1 стартмани

01.05.2016    11152    23    mi1man    2       

Просмотр права доступа по ролям, состав ролей по метаданным, роли пользователей, редактирование права доступа пользователей для любых конфигураций 8.2 и 8.3 с поддержкой УФ 49

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 v8::УФ v8::Права 1cv8.cf Windows Абонемент ($m) Роли и права

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

1 стартмани

27.03.2016    28663    594    bitnike    25       

Объединение ролей 10

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Информационная безопасность

Установка прав на объекты - занятие долгое, однообразное, неинтересное. Особенно когда возникает необходимость соединить в одной роли несколько других, например, для установки уникальных ограничений на уровне записей или вынесения измененных прав в отдельную роль для упрощения создания обновлений конфигурации и тому подобных полезных вещей. Но, к счастью, можно несколько облегчить свою жизнь следующим способом.

1 стартмани

13.03.2016    5860    37    klivlent    2       

Установка параметров интерфейса + Компактный режим "Такси" 57

Инструменты и обработки Системный администратор Внешняя обработка (ert,epf) v8 1cv8.cf Россия Windows Абонемент ($m) Информационная безопасность

Позволяет быстро настроить интерфейс группам пользователей информационной базы. Для любых конфигураций с управляемым интерфейсом, основанных на механизмах БСП.

1 стартмани

12.01.2016    12084    166    Iternia    11       

Блокировка работы пользователей по расписанию или как сохранить произвольные параметры для внешней обработки 11

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Сервисные утилиты Информационная безопасность

Вариант сохранения произвольных параметров для внешних обработок на примере обработки по установке блокировки пользователей по расписанию.

1 стартмани

15.12.2015    10967    25    alexx2510    1       

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

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Windows Абонемент ($m) Инструментарий разработчика Информационная безопасность

Данная обработка позволяет запускать 1С под другими пользователя без указания пароля. Обычная и управляемая форма.

2 стартмани

01.11.2015    23831    203    karpik666    48