8.х Борьба с пользователями

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем afeoncheg, 1 дек 2009.

  1. TopicStarter Overlay
    afeoncheg
    Offline

    afeoncheg

    Регистрация:
    1 дек 2009
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Как отключить неактивных пользователей (тех кто пришел с утра, запустил 1С и до вечера в ней ничего не делает)?
    Смотрел поиском, есть различные обработки, которые сообщают пользователю о грядущем и отключают без вопросов, либо кнопку отключения нажимает администратор. А возможно ли каким-то образом определить активность пользователя и программно отключить его, абсолютно без вмешательства человека? Или допустим каждые 10 или 20 минут (по выбору, не суть) у пользователей будет появляться диалоговое окошко - "Вы работаете в 1С?" и в случае если на кнопку "Да" не нажать в течении минуты, 1С прекращает работу.
    Заранее спасибо.
  2. Stack_G
    Offline

    Stack_G Опытный в 1С

    Регистрация:
    10 дек 2007
    Сообщения:
    786
    Симпатии:
    2
    Баллы:
    26
    В принципе, второй вариант уже реализован, то же самое, что и режим завершения работы пользователя "Завершить при наличии подтверждения пользователя" в типовых, например.
    Первый - через журнал регистрации, имхо.
  3. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Журнал регистрации не фиксирует работу с отчетами, соответственно ничего не скажет о сотрудниках, которые работают, но не меняют данные в системе. Во вторых периодическая его выгрузка для анализа производительности системе не добавит. Скорее наоборот.

    По поводу периодического опроса: Что делать в ситуациях, когда пользователь ждет окончания формирования отчета или окончания работы обработки? Или что делать, если пользователь отлучился, и забыл сохранить документ? Сомневаюсь, что он спасибо скажет админу, если потеряет результат проделанной работы.

    По моему данная идея (с отрубанием "неактивных" пользователей) мягко говоря бессмысленная. Ну висит себе сеанс, и пусть висит. Окромя небольшого количества памяти на сервере он ничего не занимает. А вот проблем от системы убирания "неактивных" может много произойти.

    Уверяю, что есть более благородные задачи, на которых стоит сосредоточить свои усилия...
  4. TopicStarter Overlay
    afeoncheg
    Offline

    afeoncheg

    Регистрация:
    1 дек 2009
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Дел действительно много и других, кроме как отключать неактивных. И действительно могут возникнуть ситуации когда просто ожидается окончание выполнения отчета-обработки. Это кстати может как-то можно обойти? И в крайнем случае можно добавить в обработку (если это будет она) список пользователей, для которых не будет срабатывать отключение (директорат, бухгалтерия допустим).
    А суть в чем. На данный момент не хватает лицензий на всех. Точней когда их закупали, расчет на то, что поработав и получив для себя какие-либо данные из 1С, пользователь выйдет из системы. Но, такого не происходит. Постоянные крики в чате - "Пустите в 1С", "Закройте 1С кто им сейчас не пользуется". Конечно проще лицензий докупить, что в принципе и планируется, но когда это еще будет..
  5. LxS
    Offline

    LxS Разработчик

    Регистрация:
    5 апр 2007
    Сообщения:
    680
    Симпатии:
    0
    Баллы:
    26
    Терминал.
  6. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Есть один метод, который на 100% верно говорит, действует ли пользователь в 1С, но он требует эксперементов и исследований для своего применения.

    Код:
    Коннектор=Новый COMОбъект("V81.COMConnector");
    ServerAgent=Коннектор.ConnectAgent("servername");
    
    ИмяАдминистратораКластера   = "123";
    ПарольАдминистратораКластера = "321";
    
    ИмяАдминистратораИБ = "321";
    ПарольАдминистратораИБ = "123";
    
    Для Каждого Cluster Из ServerAgent.GetClusters() Цикл
    ServerAgent.authenticate(Cluster, ИмяАдминистратораКластера, ПарольАдминистратораКластера);
    Для Каждого WorkingProcess Из ServerAgent.GetWorkingProcesses(Cluster) Цикл
    Если WorkingProcess.Running <> 1 Тогда
    Продолжить;
    КонецЕсли;
    WorkingProcessConnection = Коннектор.ConnectWorkingProcess("tcp://servername:" + Формат(WorkingProcess.MainPort, "ЧГ="));
    WorkingProcessConnection.AddAuthentication(ИмяАдминистратораИБ, ПарольАдминистратораИБ);
    InfoBaseInfo = WorkingProcessConnection.CreateInfoBaseInfo();
    InfoBaseInfo.Name = "basename";
    Для Каждого InfoBaseConnection из WorkingProcessConnection.GetInfoBaseConnections(InfoBaseInfo) Цикл
    Если InfoBaseConnection.AppID = "1CV8" Тогда
    Сообщить(" "+InfoBaseConnection.UserName+": "+InfoBaseConnection.bytesall+" = = "+InfoBaseConnection.dbmsBytesAll);
    КонецЕсли;
    КонецЦикла;
    КонецЦикла;
    КонецЦикла;
    
    
    
    Данная нехитрая конструкция, выводит, сколько байт пользователь получил за время своего сеанса. Анализируя количество полученных пользователем данных из базы за определенный период можно делать выводы о том, насколько интенсивно использует 1Ску. Разумеется тут нужно понаблюдать за поведением этих циферок, поэкспериментировать, прежде чем кого то начинать выгонять, т.к. возможно, что база все же периодически получает данные, даже когда пользователь ничего не делает. Да и вопрос с долгими обработками остается открытым...
  7. TopicStarter Overlay
    afeoncheg
    Offline

    afeoncheg

    Регистрация:
    1 дек 2009
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Там действительно есть небольшой обмен. Но это скорей всего не проблема, определенную цифру можно вывести как показатель активности.
    А как произвести отключение программно, пользователя который по полученным данным устроит нас?
    И плюсом вопрос - можно ли допустим получить список обработок, которые в данный момент запущены в сеансе у конкретного пользователя (например из списка, полученного после выборки по полученным данным)? Или это уже я слишком многого хочу?
  8. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Сия конструкция украдена вот отсюда: http://1c.proclub.ru/modules/newbb/viewtop...08&forum=10

    Изначально предназаначалась как раз для выгоняния пользователей. WorkingProcessConnection.Disconnect(InfoBaseConnection). Там есть еще много интересных полей, которые возможно более качественно подходят для решения поставленной задачи.

    Насчет текущих открытых окошек почитай вот тут:
    http://www.forum.mista.ru/topic.php?id=370350
    http://www.forum.mista.ru/topic.php?id=267367
    Боюсь, что слишком ресурсоемко...
  9. altenas
    Offline

    altenas Опытный в 1С

    Регистрация:
    1 окт 2008
    Сообщения:
    93
    Симпатии:
    0
    Баллы:
    26
    вопрос: если так обрубать пользователей, освободятся ли лицензии? у меня лицензий-то пока достотачно, если пересчитать всех активных юзеров во всех базах, а если посмотреть монитор алладиновский, то почти лицензии все заняты. вместе с дисконнектом нужно еще как-то насильно освобождать лицензию?
Похожие темы
  1. R_E_M
    Ответов:
    4
    Просмотров:
    279
  2. Coder1C
    Ответов:
    5
    Просмотров:
    837
Загрузка...

Поделиться этой страницей