Как программно получить список активных пользователей? #14579


#0 by be-may
Кто-нибудь знает как программно получить список активных пользователей? Точнее, как это делает сама 1С? Извините, может тема не нова, но что-то ничего не могу найти..
#2 by Волшебник
#3 by GrayT
- вот еще
#4 by be-may
А можно без внешних компонент? Не хочется ничего больше подключать.. Проблема вот в чем. База SQL. Получаю список процессов и имена ПК в сети с которых процессы запущены (через MSSQL). Нужно сопоставить имени компьютера - имя пользователя. Если через links.tmp - некорректно. Можно (наверное) попробовать открывать каждый каталог пользователя и смотреть есть ли там *.lck. Но, что-то мне это тоже не очень. Что еще? Может знает кто-то как это в самой 1С делается? Быстро и динамично ..
#6 by be-may
А средствами 1C?
#7 by MMF
ну конечно можно, надо только суметь залочить область в файле :-)
#8 by be-may
не хочешь в аське пообщаться?
#9 by MMF
хоть в форуме, хоть в аське, результат один - средствами 1С (если не считать ВК) список активных юзеров получить нельзя.
#10 by Warlock
MMF, нк почему же нельзя, если можно :) Вот у Meer'а идея правильная... Каждый создает за себя (ПриНачалеРаботыСистемы) элемент в справочнике "Сеанс". Можно и по-другому: например, выставляешь какой-нибудь флаг(например, константу), и все компы откликаются, кто есть живой(надо вышать обработку ожидания). ИМХО первый метод лучше(надежнее). ЗЫ И никаких ВК!
#11 by о_о
А в ситуации если на машине не отработалось по каким-то причинам снятие из списка сеансов /просто перегрузили машину/? А пользователь снова ломится? Получится что 2 пользователя подключены. Ко второй части : если запущен какой нибудь отчет/обработка и работать он будет еще полтора часа - как он отклитнется?
#12 by GrayT
+11 или висит модальное окно. А по поводу перегрузки машины  - сеансы очень действенный способ воспитания юзеров.
#13 by Warlock
Не зря я уточнил, что первый метод надежнее... На самом деле вторым методом я не делал бы, просто паказал, что такая возможность есть. А теперь ответы: >А в ситуации если на машине не отработалось по каким-то причинам снятие из >списка сеансов /просто перегрузили машину/? Какие причины кроме зависания и жесткой перегрузки Reset'ом? И как часто такое бывает? >А пользователь снова ломится? В языке 1С есть "Если Тогда КонецЕсли"... >Получится что 2 пользователя подключены. См. выше >Ко второй части : если запущен какой нибудь отчет/обработка и работать он >будет еще полтора часа - как он отклитнется? Не откликнется... Как показывает практика, случаи, когда не работает ОбработкаОжидания происходят очень редко... ЗЫ Можно комбинировать эти два метода: заприсывать справочник ПриНачалеРаботыСистемы и обновлять реквизит "ВремяОбновления" в нем периодически.
#14 by be-may
Вот поэтому (11-13) не хочется никаких новых справочников и прочего.. Ладно. Наверное, подробней нужно рассказать. Большая SQL база. В секунду может быть созданы до 3 документов + отчеты и прочее. В связи с этим - часто транзакции и возмущенные вопли "висим!" :( Чтобы найти 'причину', пишу прямой SQL запрос к базе (таблица master..sysprocesses, master..syslockinfo) получаю результат - кто (Имя компьютера+ № процесса) и что (напр, транзакции) делает в базе. Тут же можно кинуть сообщение или 'кильнуть' зависший процесс. Но хотелось бы видеть и имя пользователя а не полько имя компьютера. Вот и вопрос.. Как его (имя) сопоставить имени компьютера? Можно из links.tmp. (Так и сделано, в-принципе..) Но это некоректно. Может кто-то подобное реализовывал?  Или оставить все как есть :( ?
#15 by Витаэль
Мне кажется, что стандартные механизмы 1с (журнал регистрации, активные пользователи) - очень удобен.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С