Пятница, 17.05.2024, 08:51 Развлекательный портал | Сайт отдыха и юмора !
****** Кабачок по Пятницам ******* *** К П П ***
Главная Регистрация Вход Информер
Приветствую Вас, Гость · RSS
Форма входа
Логин:
Пароль:

Меню сайта

Поиск

Категории раздела
Программирование V77 Администрирование V77
Ошибки в релизах

Мини-чат

Статистика

 Бояны
Главная » Статьи » Платформа V77 » Программирование V77

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

Вот, собственно, и все доработки.
Как это работает? При входе в ИБ любого Пользователя, в справочник "Пользователи" добавляется новая запись с Именем Пользователя (если такая запись отсутствовала), или не добавляется (если Пользователь с таким Именем уже заходил в эту базу и запись в справочнике уже была создана). Но самое главное, что при входе любого Пользователя - происходит блокировка соответствующего элемента справочника!
Теперь достаточно сделать программный обход элементов справочника Пользователи и прочитать значение флага блокировки с помощью метода Блокировка(). Если Пользователь находится в базе, то значение флага будет равно 1. В случае выхода или аварийного "вылета" Пользователя из базы, значение флага будет равно 0.
Примечание. Необходимо учитывать то, что при "вылете" Пользователя из базы - блокировка может сняться с определённой задержкой (проверяется эмпирическим путём).

Обсуждение тут >>

Категория: Программирование V77 | Добавил: volk13 (26.08.2010)
Просмотров: 2666 | Комментарии: 1 | Рейтинг: 0.0/0
Всего комментариев: 1
1 Sadovnikov  
Можно проще:

ПолучитьСписокАктивныхПользователей(<РежимРаботыПользователя>);
Синтаксис:
ПолучитьСписокАктивныхПользователей()
Назначение:
Получает список пользователей, работающих в данный момент в текущей базе.
Возвращает: список значений, в котором перечислены имена пользователей БД. 0 - в случае ошибки при считывании списка активных пользователей.
P.S. Благодарность Ерохину Андрею aka Vippi за предоставленную идею реализации данного метода.

Параметры:
<РежимРаботыПользователя> - число, какой режим работы пользователей анализировать. Возможные значения: 1 - предприятие, 2 - конфигуратор, 3 - отладчик, 4 - монитор, 0 - все.


Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Copyright PL1C © 2024
Copyright PL1C © 2024