Есть кто живой ?
Как известно, в состав сетевых версий программы 1С:Предприятие входит встроенная утилитка - монитор пользователей (пункт главного меню программы "Помощь", далее пункт меню "О программе" и кнопка "Монитор"), назначение ее очевидно - отображать кто в данный момент находится в системе, причем реализована она как внешнее приложение (..\1cv75\bin\usrmon.exe). В свое время, на ранних релизах версии 7.5 я столкнулся с крайне неудовлетворительной работой данной утилиты - либо безумно долго запускалась, либо вообще убивала систему. Но ведь вещь то нужная и я решил построить что-то аналогичное средствами 1С.
Идея проста - я завел новый справочник "Сеансы", у которого текстовое поле код - это имя пользователя, а наименование - текстовое представление времени входа в систему.
Далее, при входе каждого нового пользователя в программу создается новый элемент данного справочника, при выходе - соответстветствующий элемент уничтожается. Теперь для того чтобы узнать кто работает в программе, нам достаточно просто выбрать все элементы данного справочника и отобразить их в удобном виде. Подробный код, реализующий данный механизм можно найти во все той же демонстрационной конфигурациии - adm.rar.
Опять же, при таком подходе можно пойти дальше - добавить дополнительные поля в данный справочник и хранить в них все что заблагорассудится. К примеру, год назад у меня были проблемы с сетью, почти ежедневно кто-то из пользователей аварийно отваливался, нужно было как-то автоматически отслеживать кто именно. Я добавил к данному справочнику поле, в которое один раз в 15 минут для каждого пользователя записывалось текущее время (делалось это в глобальном модуле через процедуру ОбработкаОжидания(), т.е. если пользователь умирал, то запись соответственно не производилась). Перед каждой записью из элемента справочника считывалось предыдущее значение времени и если разница между ним и текущим значением времени превышала 18 минут (15 мин. + некий запас), то констатировался факт "смерти" пользователя с сохранением некролога в LOG файл. Это в свое время помогло съэкономить мне массу сил и нервов - не пришлось допрашивать с пристрастием бедных пользователей "А корректно ли вы сегодня закончили работу ?" и сверять результаты допроса с содержимым LOG-файла - подсчитывать для каждого пользователя число входов/выходов в/из систему/системы: