gifts2017

Быстрый вход в 1С под другим пользователем

Опубликовал jig jig (jig) в раздел Управление - Практика учета

Всего лишь кликните два раза по выбранному пользователю и 1С откроется под ним.
Для тех, у кого нет мани - выкладываю код.
Пригодилась - не забываем плюсовать.
Перем темпПользовательОС;
Перем темпПользовательИБ;


Процедура ТабличноеПолеВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
	Если НЕ ВыбраннаяСтрока.ЭтоГруппа Тогда
		СтандартнаяОбработка = Ложь;
		Если НЕ ЗначениеЗаполнено(ПользовательОС) Тогда
			Предупреждение("Не выбран пользователь ОС");
			Возврат;
		КонецЕсли;
		//Предварительно удалим у всех авторизацию, схожую с нашей
		ОчиститьАвторизациюОС();
		//Затем назначим нужному юзеру
		ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоИмени(СокрЛП(ВыбраннаяСтрока.Код));
		Если ПользовательИБ <> Неопределено Тогда
			Если ПользовательИБ.АутентификацияОС Тогда
				//Запомним старую аутентификацию
				темпПользовательОС = ПользовательИБ.ПользовательОС;
				темпПользовательИБ = ПользовательИБ;
			КонецЕсли;
			ПользовательИБ.АутентификацияОС = Истина;
			ПользовательИБ.ПользовательОС = ПользовательОС;
			Попытка
				ПользовательИБ.Записать();
			Исключение
				Сообщить(ОписаниеОшибки());
			КонецПопытки;
		КонецЕсли;
		Если Найти(СтрокаСоединенияИнформационнойБазы(),"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.ОткрытьМодально();
	Если Результат <> Неопределено Тогда
		ПользовательОС = Результат;
	КонецЕсли;
КонецПроцедуры

//Затираем следы
Процедура ПриЗакрытии()
	//Авторизацию снова очищаем
	Если ЗначениеЗаполнено(темпПользовательОС) Тогда
		//Восстановим старую аутентификацию
		темпПользовательИБ.АутентификацияОС = Истина;
		темпПользовательИБ.ПользовательОС = темпПользовательОС;
		Попытка
			темпПользовательИБ.Записать();
		Исключение
			Сообщить(ОписаниеОшибки());
		КонецПопытки;
		//Если до этого не было аутентификации, то она не нужна
	Иначе
		ОчиститьАвторизациюОС();
	КонецЕсли;
КонецПроцедуры

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

Наименование Файл Версия Размер Кол. Скачив.
Медвежатник
.epf 7,91Kb
28.09.12
250
.epf 7,91Kb 250 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Konstantin Konstantin (KonstB) 01.10.12 09:42
2. Игорь Сарафанов (ivs200999) 01.10.12 09:48
Можно чуть подробнее о реализации? Сбрасывается пароль?
3. jig jig (jig) 01.10.12 09:51
(2) ivs200999, В конфигурации подменяется авторизация, после закрытия обработки - все становится на свои места.
4. jig jig (jig) 01.10.12 09:58
(1) KonstB, У меня немного по другому работает, без подмены пароля.
5. Игорь Сарафанов (ivs200999) 01.10.12 10:04
(3) Да, я уже увидел, спасибо.
6. Konstantin Konstantin (KonstB) 01.10.12 10:40
(4) jig, У меня и так и так )
+ это уже все реализовано тут: Подсистема "Инструменты разработчика" v2.60 и в мобильной версии.
поэтому у Вас очередной велосипед :)
7. Дмитрий Павлик (DimaP) 01.10.12 14:18
ПараметрыСеанса.ТекущийПользователь = <Выбранный из списка>


тут так?
8. jig jig (jig) 01.10.12 14:23
(7) DimaP, Нет, тут запуск непосредственно под выбранным пользователем.
9. jig jig (jig) 01.10.12 14:25
(6) KonstB, В данную обработку не смотрел. Каждая новая наработка - немного чей-то велосипед.
10. Михаил Гарабин (shadow264) 01.10.12 14:47
А что классная задумка=)экономит пару минут на тестах,ставлю +
11. Konstantin Konstantin (KonstB) 01.10.12 14:56
Надо администрацию попросить отключить ПОИСК по сайту - все равно никто не пользуется :)
12. Дмитрий Павлик (DimaP) 01.10.12 21:55
(11) Пользуется!
Но пока найдешь что нужно/скачешь - все мани кончатся ))
13. Konstantin Konstantin (KonstB) 02.10.12 09:16
(12) DimaP, Поэтому многие, в последнее время, начали всякую чушь, да копи-пасты выкладывать - тем самым засоряя ресурс ((( В результате имеем проблемы с последующим поиском...
ojiojiowka; +1 Ответить 1
14. jig jig (jig) 02.10.12 10:30
(13) KonstB, зачем тут мне комментарии засорять??? Можно в своих темах рассуждать о засорах ресурса. поставь уже минус - да иди с миром.
15. Konstantin Konstantin (KonstB) 02.10.12 12:10
(14) jig, Ничего не могу поделать - раз уж затрагивается наболевшая тема...
Я ради этого и сделал публикацию - по своей сути "фуфел" (ничего особенного) - что бы позасорять комментарии, но у Вас активности больше ))) Хотел этот вопрос на форуме поднять, но все как то руки не доходят (
16. Alex Steiner (OrsoBear) 03.10.12 11:43
Предлагаю подобные вещи помимо отчета еще и примерами кода снабжать.
Действительно, чтобы глянуть, что сделал автор, приходится скачивать обработку,
тратятся средства.
17. jig jig (jig) 03.10.12 12:32
Без проблем могу выложить, только хотябы плюсы ставьте.
18. Alexey K (kanalex) 29.11.12 10:10
{Форма.Форма.Форма(32)}: Значение не является значением объектного типа (Имя)
СтрокаЗапуска = "C:\Program Files (x86)\1cv82\common\1cestart.exe ENTERPRISE "+СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрокаСоединенияИнформационнойБазы(),"Srvr="," /S "),";Ref=""","/"),"""",""),";","")+" /n """+ПользовательИБ.Имя+"";

{Форма.Форма.Форма(52)}: Ошибка при вызове метода контекста (ПолучитьОбщуюФорму)
ФормаВыбораПользователяWindows = ПолучитьОбщуюФорму("ФормаВыбораПользователяWindows", ЭтаФорма);
по причине:
Недопустимое значение параметра (параметр номер '1')
19. jig jig (jig) 29.11.12 11:44
(18) kanalex, Здравствуйте. Данная обработка писалась на стандартной УТ 10.3, там присутствует общая форма выбора пользователя. Если так ругается, то заполните поле - имя пользователя вручную, \\имяДомена\имяЮзера.
20. Александр Крынецкий (echo77) 19.06.13 09:06
Оформите публикацию нормально - код можно оформить и покрасивее.
Вот, почитайте статью : http://infostart.ru/public/66592/
21. jig jig (jig) 19.06.13 13:12
(20) echo77, Благодарю за подсказку.
22. Никита Грызлов (nixel) 26.06.13 18:05
Восстановления паролей у пользователей, очищенных процедурой ОчиститьАвторизациюОС() не предусмотрено? =)
Действительно, а зачем им...
23. jig jig (jig) 27.06.13 13:30
(22) nixel, внимательней читаем код:
Процедура ПриЗакрытии()
//Авторизацию снова очищаем
Если ЗначениеЗаполнено(темпПользовательОС) Тогда
//Восстановим старую аутентификацию
темпПользовательИБ.АутентификацияОС = Истина;
темпПользовательИБ.ПользовательОС = темпПользовательОС;
Попытка
темпПользовательИБ.Записать();
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
//Если до этого не было аутентификации, то она не нужна
Иначе
ОчиститьАвторизациюОС();
КонецЕсли;
КонецПроцедуры
24. Никита Грызлов (nixel) 27.06.13 15:09
(23) jig, это только для одного сохраненного во временной переменной пользователя. а процедурка очищает всех, что найдет.

Процедура ОчиститьАвторизациюОС()
    СписокПользователей = ПользователиИнформационнойБазы.ПолучитьПользователей();
    Для н = 0 По СписокПользователей.Количество() - 1 Цикл
        Если СписокПользователей[н].ПользовательОС = ПользовательОС Тогда
            ПользовательИБ =      ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(СписокПользователей[н].УникальныйИдентификатор);
            ПользовательИБ.АутентификацияОС = Ложь;
            ПользовательИБ.ПользовательОС = "";
            ПользовательИБ.Записать();
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры
...Показать Скрыть
25. Никита Грызлов (nixel) 27.06.13 15:12
(23) jig, все, нашел. тотально скретинил, извиняюсь =)
26. goodwin11 (Borunmeert) 28.06.13 10:07
не работает в УПП 1.3. ничего не происходит при нажатии!
27. jig jig (jig) 02.07.13 20:36
(26) goodwin11, Проверьте правильность написания "пользователя windows".
28. Anton Podobin (a.podobin) 27.05.14 10:21
Итак, тестирование показало следующие недочеты:
1. если серверная БД, то ключ пути к БД должен быть через обратный слэш --> /S db-srv\CENTER
скорее всего у некоторых скачавших и не запускается, просто ничего не происходит. обратите внимание на п.2 если решили протестировать на других юзверах!
2. в случае если необходимо запустить БД под несколькими пользователями, при закрытии восстановление настроек выполняется только для последнего.

Для "взял и пользуйся" - далеко.
Для "допила" - нормально.

Без понимания 2-го пункта в живой базе можно натворить беды.
29. jig jig (jig) 29.05.14 14:32
(28) a.podobin, Спасибо за комментарий, но по второму пункту не согласен! Вот код:
Процедура ОчиститьАвторизациюОС()
СписокПользователей = ПользователиИнформационнойБазы.ПолучитьПользователей();
Для н = 0 По СписокПользователей.Количество() - 1 Цикл
Если СписокПользователей[н].ПользовательОС = ПользовательОС Тогда
ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(СписокПользователей[н].УникальныйИдентификатор);
ПользовательИБ.АутентификацияОС = Ложь;
ПользовательИБ.ПользовательОС = "";
ПользовательИБ.Записать();
КонецЕсли;
КонецЦикла;
КонецПроцедуры
т.е. очистка будет авторизации будет у всех пользователей, у которых прошла подмена.
30. Константин Куликов (Светлый ум) 19.11.15 13:55
В портативных инструментах разработчика - эта штука тоже есть.
31. Pavel Defula (veyron21) 20.01.16 10:22
А мне кажется, что обработка весьма полезная.
Чтобы не тратить много времени на знакомство с подсистемой инструментов разработчика, можно скачать эту поделку и пользоваться себе наздоровье. Автор молодец, даже исходник выложил.
32. Александр Крынецкий (echo77) 24.01.16 11:24
ИМХО, это не будет работать в клиент-серверном варианте, если сервер 1С работает вне домена, а вы пытаетесь запустится под другим пользователем не с сервера 1С
33. Константин Куликов (Светлый ум) 08.11.16 09:54
(30) Светлый ум, приспичела версия для 8.1 и та что в "инструментах разработчика" - не подошла:
- а ваша шуршит-работает)
+1
34. Константин Куликов (Светлый ум) 08.11.16 10:07
(33) Модуль и форму руками перетаскивал.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа