Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Список активных пользователей (число прочтений - 6747 )
PVL
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 20
Местоположение: г.Томск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Список активных пользователей
16. Октября 2006 :: 08:54
Печать  
Может кто знает как можно программно получить список активных пользователей 1С, в связке 1С+Терминал+SQL. Вообще-то нужно получить связь Пользователь(Терминал)->Пользователь(1С). Есть какие-нибудь методы или способы?
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Список активных пользователей
Ответ #1 - 16. Октября 2006 :: 10:22
Печать  
Посмотри вот это: http://infostart.ru/projects/index.php?id=247&desc=1&ref=174
и как пример реализации + некоторые скрипты: http://infostart.ru/projects/?id=269&ref=1630
  
Наверх
 
IP записан
 
PVL
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 20
Местоположение: г.Томск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Список активных пользователей
Ответ #2 - 16. Октября 2006 :: 11:44
Печать  
Спасибо за ссылки, но это не подойдет:
1) Admin1C.dll - возможно для этих целей и хороша, но она проверяет админские(1С) права;
2) Для терминала  эти вещи не подходят, т.к. у всех будет показывать один комп (терминал)
  
Наверх
 
IP записан
 
pyramid
YaBB Newbies
*
Отсутствует



Сообщений: 7
Зарегистрирован: 09. Июня 2006
Re: Список активных пользователей
Ответ #3 - 17. Октября 2006 :: 06:31
Печать  
PVL писал(а) 16. Октября 2006 :: 11:44:
Для терминала  эти вещи не подходят, т.к. у всех будет показывать один комп (терминал)

Код
Выбрать все
	глИмяКлиента = "";
	Попытка
		WshShell = СоздатьОбъект("WScript.Shell");
		WshSysEnv = WshShell.Environment("PROCESS");
    	глИмяКлиента = WshSysEnv.Item("CLIENTNAME");
	Исключение
	КонецПопытки;

	Если ПустоеЗначение(глИмяКлиента) = 1 Тогда
	    глИмяКлиента = ИмяКомпьютера();
	КонецЕсли;        

	глИмяКлиента = СокрЛП(глИмяКлиента);
 


Вне зависимости, терминальный сеанс или консольный - получаем имя клиентского компьютера.
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Список активных пользователей
Ответ #4 - 17. Октября 2006 :: 07:47
Печать  
pyramid писал(а) 17. Октября 2006 :: 06:31:
PVL писал(а) 16. Октября 2006 :: 11:44:
Для терминала  эти вещи не подходят, т.к. у всех будет показывать один комп (терминал)

Код
Выбрать все
	глИмяКлиента = "";
	Попытка
		WshShell = СоздатьОбъект("WScript.Shell");
		WshSysEnv = WshShell.Environment("PROCESS");
    	глИмяКлиента = WshSysEnv.Item("CLIENTNAME");
	Исключение
	КонецПопытки;

	Если ПустоеЗначение(глИмяКлиента) = 1 Тогда
	    глИмяКлиента = ИмяКомпьютера();
	КонецЕсли;        

	глИмяКлиента = СокрЛП(глИмяКлиента);
 


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


Круто, только еще нужно отфильтровать пользователей именно этой базы.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
PVL
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 20
Местоположение: г.Томск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Список активных пользователей
Ответ #5 - 17. Октября 2006 :: 08:16
Печать  
Спасибо за скрипт, действительно возвращает реальное имя компа пользователя!
Вот только он возвращает для конкретного пользователя, а как сделать типа опроса, какой пользователь с какого компа коннектился?
  
Наверх
 
IP записан
 
PVL
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 20
Местоположение: г.Томск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Список активных пользователей
Ответ #6 - 20. Октября 2006 :: 03:02
Печать  
Проблема эта встала из-за необходимости использовать рассылку внутри пользователей конкретной базы 1С. Но у нас некоторая группа пользователей заходит в 1С под одним  ником, и у всех пользователей в качестве компа показывает сервер терминалов, а обработки по рассылкам используют или имя пользователя или имя компа. Поэтому единственной возможностью правильно идентифицировать пользователя 1С получается только через пользователя терминала. Приведенный выше скрипт можно использовать только для конкретного пользователя, т.е. при входе пользователя в 1С ("ПриНачалеРаботыСистемы()"). Но здесь теряется возможность отслеживать отвалившиеся сесси (особенно это касается входящих под одним ником - у них нету своего каталога с файлом *.lck). Поэтому вижу решение проблемы только через системные функции, но их я, увы, не знаю. Может кто подскажет решение такой проблемы?
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать