Решение 1. Добавляем в конфигурацию новый справочник, например "Пользователи" 2. В Процедуру ПриНачалеРаботыСистемы() глобального модуля добавляем код: СпрПользователи = СоздатьОбъект("Справочник.Пользователи"); Если СпрПользователи.НайтиПоНаименованию(ИмяПользователя(),0,1) 0 Тогда//либо ПолноеИмяПользователя() СпрПользователи.Новый(); СпрПользователи.Наименование = ИмяПользователя();//либо ПолноеИмяПользователя() СпрПользователи.Записать(); КонецЕсли; СпрПользователи.Блокировка(1); Вот, собственно, и все доработки. Как это работает? При входе в ИБ любого Пользователя, в справочник "Пользователи" добавляется новая запись с Именем Пользователя (если такая запись отсутствовала), или не добавляется (если Пользователь с таким Именем уже заходил в эту базу и запись в справочнике уже была создана). Но самое главное, что при входе любого Пользователя - происходит блокировка соответствующего элемента справочника! Теперь достаточно сделать программный обход элементов справочника Пользователи и прочитать значение флага блокировки с помощью метода Блокировка(). Если Пользователь находится в базе, то значение флага будет равно 1. В случае выхода или аварийного "вылета" Пользователя из базы, значение флага будет равно 0. Примечание. Необходимо учитывать то, что при "вылете" Пользователя из базы - блокировка может сняться с определённой задержкой (проверяется эмпирическим путём). Обсуждение тут >> |