Активные пользователи Windows в каких базах 1С сидят (клиент-серверный вариант)

1. Anyu-n 28 09.07.19 09:49 Сейчас в теме
Добрый день! Возник вопрос, есть базы 1с 8.3 клиент-серверный вариант работы (WServer2016+MS SQL). В базах есть 1 пользователь 1С для просмотра ("Просмотрщик"), под ним в базу заходит множество Windows-юзеров с одного сервера. Как определить какой пользователь Windows сейчас сидит в конкретной базе? Может в Администрировании сервера 1с есть такая инфа, но я ее не вижу? может обработки на инфостарте есть? Тыкните носом пожалуйста если все это уже существует....
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. a.doroshkevich 1407 09.07.19 09:55 Сейчас в теме
(1) Если пользователи заходят не по http, то в консоле сервера администрирование видно с имя ПК
3. Anyu-n 28 09.07.19 11:40 Сейчас в теме
(2) имя ПК - это имя сервера с которого заходят, оно для всех одно. А мне нужно название учетки Windows этого ПК
4. a.doroshkevich 1407 09.07.19 12:03 Сейчас в теме
Т.е. пользователи работают с базой по терминалу?
5. alanto23 35 09.07.19 12:14 Сейчас в теме
Если по RDP заходят в базу под одним 1С- пользователем - никак не увидеть. Все едино.
Если Windo-возовскую аутентификацию использовать - это будет уже не один 1С-просмотрщик. А целая толпа пользователей. ;-)
6. a.doroshkevich 1407 09.07.19 12:26 Сейчас в теме
Можно написать обработку, которая при входе будет получать имя компа и пользователя винды и писать в какой-нить регистр
7. Anyu-n 28 09.07.19 12:33 Сейчас в теме
(6) Заходят по RDP, предложили при подключении к базе писать в отдельный лог данные: имя базы+ID (или как там) Windows-юзера.... где его брать? поскажите направление.... неужели не было ни у кого схожей задачи?
8. a.doroshkevich 1407 09.07.19 12:37 Сейчас в теме
(7) скорее всего только запуском vbs/bat скрипта из 1С
9. Anyu-n 28 09.07.19 13:14 Сейчас в теме
(8) А какие нибудь примерчики не встречали, с чего начать бы хотя бы подсказку... там же еще выуживать надо эту инфу от куда то
10. a.doroshkevich 1407 09.07.19 13:23 Сейчас в теме
11. Asmer 09.07.19 15:44 Сейчас в теме
Добрый день. Я вижу два варианта - имя локального компьютера и имя пользователя (если терминал)

Функция ПолучитьИмяКомпьютераТО() Экспорт

	Если мИмяКомпьютера = Неопределено Тогда
		Попытка
			WshShell = Новый COMОбъект("WScript.Shell"); 
			мИмяКомпьютера = WshShell.expandEnvironmentStrings("%CLIENTNAME%"); 
		Исключение
			мИмяКомпьютера = ВРег(ИмяКомпьютера());
		КонецПопытки;
		КонецЕсли;
	Возврат мИмяКомпьютера;
КонецФункции // ПолучитьИмяКомпьютераТО()

	Network = Новый COMОбъект("WScript.Network");        
	
 	Сеанс1С            = НомерСеансаИнформационнойБазы();
	ЛокальныйКомпьютер = ПолучитьИмяКомпьютераТО();
	ПользовательАД     = Network.UserName;
	СерверАД           = Network.ComputerName;
Показать
12. Asmer 09.07.19 16:17 Сейчас в теме
(11) и это все вызвать с общего модуля в процедуре ПриНачалеРаботыСистемы() и писать, либо в базу 1с или в дбф, текст, эксель
13. Asmer 09.07.19 16:30 Сейчас в теме
если этого будет недостаточно: на стороне сервера в командной строке можно вызвать команду "Quser /SERVER:NameRDPserveer"

и пример в 1с:

 
		 tFile=  ПолучитьИмяВременногоФайла("txt");
		 Sh = Новый COMОбъект("WScript.Shell");
		 Sh.Run("cmd /c chcp 1252 & Quser /SERVER:"+сервер+" > """+tFile+ """",0,истина);


тут результат выгружается в текстовый файл, а в переменной "сервер" - хранится имя сервера , на котором работают пользователи. дальше парсите и получаете необходимые данные.
15. Anyu-n 28 10.07.19 07:59 Сейчас в теме
(13) Ой, спасибо огромное буду пробовать! Отпишусь если получится.....
14. seacat 10.07.19 04:43 Сейчас в теме
А того что в журнале регистрации в событии "Сеанс. Аутентификация" указываются Данные "Пользователь ОС" - недостаточно?
16. Anyu-n 28 10.07.19 07:59 Сейчас в теме
(14) "Пользователь ОС" всегда один , к сожалению
17. dakork 32 10.07.19 18:09 Сейчас в теме
Есть ещё такой вариант:

Сеть = Новый COMObject("wscript.network");
Сообщить("Компьютер: " + Сеть .ComputerName);
Сообщить("Пользователь: " + Сеть .UserName);
18. Asmer 11.07.19 09:03 Сейчас в теме
19. dakork 32 11.07.19 14:57 Сейчас в теме
(18)"WScript.Shell" против "wscript.network"
20. Asmer 12.07.19 10:16 Сейчас в теме
(19) Для танкистов :) Посмотри весь код.. там функция ПолучитьИмяКомпьютераТО() , а под ней кусок кода:

Network = Новый COMОбъект("WScript.Network");        

Сеанс1С            = НомерСеансаИнформационнойБазы();
ЛокальныйКомпьютер = ПолучитьИмяКомпьютераТО();
ПользовательАД     = Network.UserName;
СерверАД           = Network.ComputerName;
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)