Имя: Пароль:
1C
1С v8
1C-сервер. Как удалить сеансы пользователей.
0 bvn-2005
 
21.12.18
07:52
Серверная 1С, БД - postgreSQL. На сервере 1С остаются висеть сеансы пользователей, хотя пользователи давно отключились. В обычной работе это не мешает, а, например, при выгрузке базы - мешает. Как АВТОМАТИЧЕСКИ удалить сеансы? Пока помогает только ручное удаление...
1 Мимохожий Однако
 
21.12.18
08:10
(0) Консоль Администрирования напрягает? Там секунд на 20 работы
2 Kuzmich123
 
21.12.18
08:13
(1) Он про автоматически спрашивает.

(0) Некоторое время назад в зазеркалье была статья про программное управление сервером 1С. Думаю, нужно оттуда начать.
3 Галахад
 
гуру
21.12.18
09:08
(0) 1С сервер на Винде?
4 Smile 8D
 
21.12.18
09:13
(0) 1. Есть скрипты удаления пользователей
2. В последних версиях платформы есть механизмы управления сеансами из кода 1с
3. Можно настроить автоматическое отключение спящих сеансов (в панели администрирования 1с есть колонка "спящий", посмотрите стоит ли "да" у ваших сеансов). По умолчанию спящие сеансы удаляются через сутки. Можно уменьшить значение в настройках базы (там же в панели).
5 Мимохожий Однако
 
21.12.18
09:18
Если подобная ситуация возникает достаточно часто, то я бы предпринял не только технические, но и административные меры. Обрубание сеансов не лечение, а пластыри.
6 Мимохожий Однако
 
21.12.18
09:23
7 PuhUfa
 
21.12.18
09:24
(0) можно настроить таймауты завершения сеансов, а можно программно выгонять всех
(4) почему в последних? это давно уже есть.

Например в одной базе у меня так:

    ТекущийНомерСеансаИнформационнойБазы = НомерСеансаИнформационнойБазы();
    
    СеансыИнформационнойБазы = ПолучитьСеансыИнформационнойБазы();
    Для Каждого СеансИБ Из СеансыИнформационнойБазы Цикл
        НачалоРаботы = СеансИБ.НачалоСеанса;
        Компьютер    = СеансИБ.ИмяКомпьютера;
        Сеанс        = СеансИБ.НомерСеанса;
        Соединение   = СеансИБ.НомерСоединения;
        
        Если Сеанс <> ТекущийНомерСеансаИнформационнойБазы Тогда
            
            Сообщение = "";
            Отключено = СоединенияИБКлиентСервер.ОтключитьСеанс(Сеанс, Сообщение);
            //Если НЕ ПустаяСтрока(Сообщение) и Не Отключено Тогда
            //    //Предупреждение(Сообщение);
            //КонецЕсли;
            
            Если НЕ Отключено Тогда
                ВсеОтключены = Ложь;
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;


А в УТ 11 вот смотрю, там:

// Удаляет все сеансы информационной базы кроме текущего.
//
Процедура УдалитьВсеСеансыКромеТекущего(ПараметрыАдминистрирования) Экспорт
    
    ВсеКромеТекущего = Новый Структура;
    ВсеКромеТекущего.Вставить("Свойство", "Номер");
    ВсеКромеТекущего.Вставить("ВидСравнения", ВидСравнения.НеРавно);
    ВсеКромеТекущего.Вставить("Значение", СоединенияИБВызовСервера.НомерТекущегоСеанса());
    
    Фильтр = Новый Массив;
    Фильтр.Добавить(ВсеКромеТекущего);

    АдминистрированиеКластераКлиентСервер.УдалитьСеансыИнформационнойБазы(ПараметрыАдминистрирования,, Фильтр);
    
КонецПроцедуры

Видимо от версии БСП зависит
8 Smile 8D
 
21.12.18
09:45
(7) Я говорю вот об этом https://wonderland.v8.1c.ru/blog/razvitie-klastera-serverov/
Появилось в 8.3.14
Закон Брукера: Даже маленькая практика стоит большой теории.