Имя: Пароль:
1C
 
Как программно получить список активных пользователей?
0 be-may
 
04.11.04
15:50
Кто-нибудь знает как программно получить список активных пользователей? Точнее, как это делает сама 1С?
Извините, может тема не нова, но что-то ничего не могу найти..
1 Meer
 
04.11.04
15:56
Процедура ПриОткрытии()          
   спрС=СоздатьОбъект("Справочник.Сеанс");
   спрС.выбратьЭлементы();
   пока спрС.ПолучитьЭлемент()=1 цикл
       если спрС.Активный=1 тогда СП_Ктоесть.ДобавитьЗначение(спрС.Наименование);конецЕсли;
   конецЦикла;
КонецПроцедуры
2 Волшебник
 
04.11.04
15:57
3 GrayT
 
04.11.04
16:01
4 be-may
 
04.11.04
16:17
А можно без внешних компонент? Не хочется ничего больше подключать..
Проблема вот в чем.
База SQL. Получаю список процессов и имена ПК в сети с которых процессы запущены (через MSSQL). Нужно сопоставить имени компьютера - имя пользователя. Если через links.tmp - некорректно. Можно (наверное) попробовать открывать каждый каталог пользователя и смотреть есть ли там *.lck. Но, что-то мне это тоже не очень. Что еще? Может знает кто-то как это в самой 1С делается? Быстро и динамично ..
5 MMF
 
04.11.04
16:40
6 be-may
 
04.11.04
17:08
(5) А средствами 1C?
7 MMF
 
04.11.04
17:12
(6) ну конечно можно, надо только суметь залочить область в файле :-)
8 be-may
 
04.11.04
17:29
(7) не хочешь в аське пообщаться?
9 MMF
 
04.11.04
17:39
(8) хоть в форуме, хоть в аське, результат один - средствами 1С (если не считать ВК) список активных юзеров получить нельзя.
10 Warlock
 
04.11.04
19:38
MMF, нк почему же нельзя, если можно :) Вот у Meer'а идея правильная... Каждый создает за себя (ПриНачалеРаботыСистемы) элемент в справочнике "Сеанс". Можно и по-другому: например, выставляешь какой-нибудь флаг(например, константу), и все компы откликаются, кто есть живой(надо вышать обработку ожидания).
ИМХО первый метод лучше(надежнее).

ЗЫ И никаких ВК!
11 о_о
 
04.11.04
20:09
(10) А в ситуации если на машине не отработалось по каким-то причинам снятие из списка сеансов /просто перегрузили машину/? А пользователь снова ломится? Получится что 2 пользователя подключены. Ко второй части : если запущен какой нибудь отчет/обработка и работать он будет еще полтора часа - как он отклитнется?
12 GrayT
 
04.11.04
22:30
+11 или висит модальное окно.
А по поводу перегрузки машины  - сеансы очень действенный способ воспитания юзеров.
13 Warlock
 
05.11.04
01:58
(11)Не зря я уточнил, что первый метод надежнее... На самом деле вторым методом я не делал бы, просто паказал, что такая возможность есть.
А теперь ответы:
>А в ситуации если на машине не отработалось по каким-то причинам снятие из
>списка сеансов /просто перегрузили машину/?
Какие причины кроме зависания и жесткой перегрузки Reset'ом? И как часто такое бывает?


>А пользователь снова ломится?
В языке 1С есть "Если Тогда КонецЕсли"...

>Получится что 2 пользователя подключены.
См. выше

>Ко второй части : если запущен какой нибудь отчет/обработка и работать он
>будет еще полтора часа - как он отклитнется?
Не откликнется... Как показывает практика, случаи, когда не работает ОбработкаОжидания() происходят очень редко...

ЗЫ Можно комбинировать эти два метода: заприсывать справочник ПриНачалеРаботыСистемы() и обновлять реквизит "ВремяОбновления" в нем периодически.
14 be-may
 
05.11.04
10:04
Вот поэтому (11-13) не хочется никаких новых справочников и прочего..
Ладно. Наверное, подробней нужно рассказать.
Большая SQL база. В секунду может быть созданы до 3 документов + отчеты и прочее. В связи с этим - часто транзакции и возмущенные вопли "висим!" :(
Чтобы найти 'причину', пишу прямой SQL запрос к базе (таблица master..sysprocesses, master..syslockinfo) получаю результат - кто (Имя компьютера+ № процесса) и что (напр, транзакции) делает в базе. Тут же можно кинуть сообщение или 'кильнуть' зависший процесс. Но хотелось бы видеть и имя пользователя а не полько имя компьютера. Вот и вопрос.. Как его (имя) сопоставить имени компьютера? Можно из links.tmp. (Так и сделано, в-принципе..) Но это некоректно. Может кто-то подобное реализовывал?  Или оставить все как есть :( ?
15 Витаэль
 
05.11.04
11:56
Мне кажется, что стандартные механизмы 1с (журнал регистрации, активные пользователи) - очень удобен.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан