Перем темпПользовательОС;
Перем темпПользовательИБ;
Процедура ТабличноеПолеВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
Если НЕ ВыбраннаяСтрока.ЭтоГруппа Тогда
СтандартнаяОбработка = Ложь;
Если НЕ ЗначениеЗаполнено(ПользовательОС) Тогда
Предупреждение("Не выбран пользователь ОС");
Возврат;
КонецЕсли;
//Предварительно удалим у всех авторизацию, схожую с нашей
ОчиститьАвторизациюОС();
//Затем назначим нужному юзеру
ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоИмени(СокрЛП(ВыбраннаяСтрока.Код));
Если ПользовательИБ <> Неопределено Тогда
Если ПользовательИБ.АутентификацияОС Тогда
//Запомним старую аутентификацию
темпПользовательОС = ПользовательИБ.ПользовательОС;
темпПользовательИБ = ПользовательИБ;
КонецЕсли;
ПользовательИБ.АутентификацияОС = Истина;
ПользовательИБ.ПользовательОС = ПользовательОС;
Попытка
ПользовательИБ.Записать();
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
КонецЕсли;
Если Найти(СтрокаСоединенияИнформационнойБазы(),"Srvr=") = 0 Тогда
СтрокаЗапуска = "C:\Program Files (x86)\1cv82\common\1cestart.exe ENTERPRISE "+СтрЗаменить(СтрЗаменить(СтрокаСоединенияИнформационнойБазы(),"File="," /F "),";","")+" /n """+ПользовательИБ.Имя+"";
Иначе
СтрокаЗапуска = "C:\Program Files (x86)\1cv82\common\1cestart.exe ENTERPRISE "+СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрокаСоединенияИнформационнойБазы(),"Srvr="," /S "),";Ref=""","/"),"""",""),";","")+" /n """+ПользовательИБ.Имя+"";
КонецЕсли;
ЗапуститьПриложение(СтрокаЗапуска);
КонецЕсли;
КонецПроцедуры
Процедура ОчиститьАвторизациюОС()
СписокПользователей = ПользователиИнформационнойБазы.ПолучитьПользователей();
Для н = 0 По СписокПользователей.Количество() - 1 Цикл
Если СписокПользователей[н].ПользовательОС = ПользовательОС Тогда
ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(СписокПользователей[н].УникальныйИдентификатор);
ПользовательИБ.АутентификацияОС = Ложь;
ПользовательИБ.ПользовательОС = "";
ПользовательИБ.Записать();
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура ПользовательОСНачалоВыбора(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ФормаВыбораПользователяWindows = ПолучитьОбщуюФорму("ФормаВыбораПользователяWindows", ЭтаФорма);
ФормаВыбораПользователяWindows.ВыбранныйПользовательWindows = ПользовательОС;
Результат = ФормаВыбораПользователяWindows.ОткрытьМодально();
Если Результат <> Неопределено Тогда
ПользовательОС = Результат;
КонецЕсли;
КонецПроцедуры
//Затираем следы
Процедура ПриЗакрытии()
//Авторизацию снова очищаем
Если ЗначениеЗаполнено(темпПользовательОС) Тогда
//Восстановим старую аутентификацию
темпПользовательИБ.АутентификацияОС = Истина;
темпПользовательИБ.ПользовательОС = темпПользовательОС;
Попытка
темпПользовательИБ.Записать();
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
//Если до этого не было аутентификации, то она не нужна
Иначе
ОчиститьАвторизациюОС();
КонецЕсли;
КонецПроцедуры
Быстрый вход в 1С под другим пользователем
Администрирование - Роли и права
Для тех, у кого нет мани - выкладываю код.
Пригодилась - не забываем плюсовать.
См. также
Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах
10000 руб.
02.09.2020 125135 683 389
SALE! 20%
Обработка по настройке прав доступа пользователей в 1С 8 (ЗУП, КА, УТ, ЕРП, ERP, УНФ, Розница, Управление холдингом)
3000
2400 руб.
22.12.2021 21882 109 59