Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
25 ноя 2024, 05:31

Как выкинуть пользователей из 1С?

Автор polinochka96, 06 сен 2017, 07:08

0 Пользователей и 1 гость просматривают эту тему.

polinochka96

Такая ситуация. у нас мало клиентских лицензий на 1с уат. не все могут нормально работать в программе. у меня админские права. как выкинуть неактивных пользователей?

Golickoff

Вы работаете в файловой, или клиент-серверной базе?
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

Panter


Golickoff

Пока я писал комментарий, вы успели поставить смайлик вместо текста, который я по понятным причинам не стану дублировать. За такие советы надо банить.
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

Panter

Цитата: Golickoff от 06 сен 2017, 07:45
Пока я писал комментарий, вы успели поставить смайлик вместо текста, который я по понятным причинам не стану дублировать. За такие советы надо банить.
Извиняюсь хулиганят тут некоторые вредные личности пока комп бес присмотра остался

polinochka96

Цитата: Golickoff от 06 сен 2017, 07:40
Вы работаете в файловой, или клиент-серверной базе?
серверный

AIFrame

Процедура ОтключитьПользователейНажатие(Элемент)
Если Найти(СтрокаСоединенияИнформационнойБазы(), "Srvr") > 0 Тогда
    // серверный вариант
    Поиск1 = Найти(СтрокаСоединенияИнформационнойБазы(), "Srvr=");
    ПодстрокаПоиска = Сред(СтрокаСоединенияИнформационнойБазы(), Поиск1 + 6);
    ИмяСервера = Лев(ПодстрокаПоиска, Найти(ПодстрокаПоиска, """") - 1);
    // теперь ищем имя базы
    Поиск1 = Найти(СтрокаСоединенияИнформационнойБазы(), "Ref=");
    ПодстрокаПоиска = Сред(СтрокаСоединенияИнформационнойБазы(), Поиск1 + 5);
    ИмяБазы = Лев(ПодстрокаПоиска, Найти(ПодстрокаПоиска, """") - 1);
Иначе
    ЭлементыФормы.Лог.ДобавитьСтроку("Не удалось опознать кластер и имя БД");
    Возврат;
КонецЕсли;

    ЭлементыФормы.Лог.Очистить();

ЭлементыФормы.Лог.ДобавитьСтроку("Создаем COM-коннектор для подключения к Кластеру 1С: " + ИмяСервера);

Коннектор = Новый COMОбъект("v83.COMConnector");
Агент = Коннектор.ConnectAgent(ИмяСервера);
Кластеры = Агент.GetClusters();
ЭлементыФормы.Лог.ДобавитьСтроку("------------------------------------------");
Для каждого Кластер из Кластеры Цикл
//АдминистраторКластера = "";
//ПарольКластера = "";
//Агент.Authenticate(Кластер, АдминистраторКластера, ПарольКластера);
    Агент.Authenticate(Кластер, , );
    Процессы = Агент.GetWorkingProcesses(Кластер);
    Для каждого Процесс из Процессы Цикл
        Порт = Процесс.MainPort;
        // теперь есть адрес и порт для подключения к рабочему процессу
        РабПроц = Коннектор.ConnectWorkingProcess(ИмяСервера + ":" + СтрЗаменить(Порт, Символы.НПП, ""));
        РабПроц.AddAuthentication(АдминБД, ПарольАдминаБД);

        ИнформационнаяБаза = "";

        Базы = Агент.GetInfoBases(Кластер);
        Для каждого База из Базы Цикл
            Если База.Name = ИмяБазы Тогда
                ИнформационнаяБаза = База;

ЭлементыФормы.Лог.ДобавитьСтроку("Подключаемся к БД: "+База.Name);

Прервать;
            КонецЕсли;
        КонецЦикла;
        Если ИнформационнаяБаза = "" Тогда
ЭлементыФормы.Лог.ДобавитьСтроку("БД не найдена!");
        КонецЕсли;

        Сеансы = Агент.GetInfoBaseSessions(Кластер, ИнформационнаяБаза);
        Для каждого Сеанс из Сеансы Цикл
            Если нРег(Сеанс.AppID) = "backgroundjob" ИЛИ нРег(Сеанс.AppID) = "designer" Тогда
                // если это сеансы конфигуратора или фонового задания, то не отключаем
                Продолжить;
            КонецЕсли;
            Если Сеанс.UserName = ИмяПользователя() ИЛИ Сеанс.UserName = "xxxxxx" Тогда //  xxxxxx итак отключается каждый день в 7:45
                // это текущий пользователь
                Продолжить;
            КонецЕсли;
ЭлементыФормы.Лог.ДобавитьСтроку("Завершаем сеанс: "+Сеанс.UserName);
            Агент.TerminateSession(Кластер, Сеанс);
        КонецЦикла;

//Не нужно
//СоединенияБазы = Агент.GetInfoBaseConnections(Кластер, ИнформационнаяБаза);
//// Разорвать соединения клиентских приложений.
//Для Каждого Соединение Из СоединенияБазы Цикл
// Если нРег(Соединение.Application) = "backgroundjob" ИЛИ нРег(Соединение.Application) = "designer" Тогда
// // если это соединение конфигуратора или фонового задания, то не отключаем
// Продолжить;
// КонецЕсли;
// Если Соединение.UserName = ИмяПользователя() Тогда
// // это текущий пользователь
// Продолжить;
// КонецЕсли;
// ЭлементыФормы.Лог.ДобавитьСтроку("Закрываем соединение: "+Соединение.UserName);
// РабПроц.Disconnect(Соединение);
//КонецЦикла;
    КонецЦикла;
КонецЦикла;
ЭлементыФормы.Лог.ДобавитьСтроку("------------------------------------------");
ЭлементыФормы.Лог.ДобавитьСтроку("Готово. Клиентские сеансы завершены.");
КонецПроцедуры

oleg-x

Или запустить администрирование серверов 1С предприятия и завершить нужные сеансы (только для серверных вариантов)
Помог, нажми спасибо. Не помог, нажми спасибо :-)
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google

Golickoff

Или зайти в НСИ и администрирование, поддержка и обслуживание, активные пользователи и там их выгонять.
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск