Заметил, что многие до сих пор меняют пароль пользователя руками, чтобы зайти в 1С под другим пользователем. Хорошо, если вы используюте доменную авторизацию. А если нет? Как тогда быть?
Все просто. Нужно сохранить пароль пользователя перед заменой пароля, затем поменять пароль, запустить 1С и вернуть старый пароль пользователя. Сейчас раскажу как сделать это программно.
Создаем обработку, форму с реквизитом СсылкаНаПользователя (тип СправочникСсылка.Пользователи), команду и кнопку Запуск1С. Код формы будет иметь следующий вид
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
&НаКлиенте Процедура Запуск1С(Команда) СтруктураДляЗапуска = ПолучитьВременныйЛогинПароль(); ЗапуститьПриложение("""" + КаталогПрограммы() + "1cv8.exe"" enterprise /IBConnectionString""" + СтрЗаменить(СтрокаСоединенияИнформационнойБазы(), """", """""") + """ /N""" + СтруктураДляЗапуска.ИмяПользователя + """ /P" + СтруктураДляЗапуска.Пароль); КонДата = ТекущаяДата() + 10; Пока ТекущаяДата() < КонДата Цикл КонецЦикла; ВернутьПарольПользователя(СтруктураДляЗапуска); КонецПроцедуры &НаСервере Процедура ВернутьПарольПользователя(СтруктураДляЗапуска) ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(Новый УникальныйИдентификатор(СокрЛП(СсылкаНаПользователя.ИдентификаторПользователяИБ))); ПользовательИБ.СохраняемоеЗначениеПароля = СтруктураДляЗапуска.СохраняемоеЗначениеПароля; ПользовательИБ.АутентификацияСтандартная = СтруктураДляЗапуска.АутентификацияСтандартная; ПользовательИБ.Записать(); КонецПроцедуры &НаСервере Функция ПолучитьВременныйЛогинПароль() СтруктураДляЗапуска = Новый Структура; ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(Новый УникальныйИдентификатор(СокрЛП(СсылкаНаПользователя.ИдентификаторПользователяИБ))); ВременныйПароль = Строка(Новый УникальныйИдентификатор); СтруктураДляЗапуска.Вставить("АутентификацияСтандартная", ПользовательИБ.АутентификацияСтандартная); СтруктураДляЗапуска.Вставить("СохраняемоеЗначениеПароля", ПользовательИБ.СохраняемоеЗначениеПароля); СтруктураДляЗапуска.Вставить("Пароль", ВременныйПароль); СтруктураДляЗапуска.Вставить("ИмяПользователя", ПользовательИБ.Имя); ПользовательИБ.Пароль = ВременныйПароль; ПользовательИБ.АутентификацияСтандартная = Истина; ПользовательИБ.Записать(); Возврат СтруктураДляЗапуска; КонецФункции |
Ожидание запуска 1С тут выставлено в 10 сек. Обычно этого достаточно. Но если хотите — можете использовать и другое значение. Для этого в строке КонДата = ТекущаяДата() + 10; надо заменить 10 на то кол-во секунд, которое вам необходимо.
Готовую обработку можете скачать в моем телеграм канале