Работа с 1С:Предприятие в многопользовательском режиме часто сталкивается с проблемой"зависших" сеансов. Пользователи забывают закрыть программу, теряется связь с сервером, или требуется срочное обновление базы — а активные подключения блокируют критические операции. В таких случаях администратору или разработчику необходимо принудительно завершить сеансы пользователей без ожидания их добровольного выхода.

В этой статье мы разберём все актуальные способы отключения пользователей: от стандартных инструментов платформы до админских команд и скриптов. Особое внимание уделим нюансам работы с 1С:Предприятие 8.3 (включая последние релизы), а также рассмотрим специфику кластерных и файловых вариантов баз. Важно: некоторые методы требуют прав администратора сервера или доступа к консоли управления — без них часть функций будет недоступна.

Прежде чем применять принудительное отключение, убедитесь, что это действительно необходимо. Внезапный разрыв сеанса может привести к потере несохранённых данных пользователя или даже повреждению транзакций. Всегда предупреждайте сотрудников о планируемых работах заранее!

1. Стандартный способ: через"Активные пользователи" в конфигураторе

Самый простой и безопасный метод — использование встроенного инструмента Конфигуратора 1С. Он подходит для большинства случаев, когда у вас есть доступ к конфигуратору с правами администратора. Этот способ работает как для файловых, так и для клиент-серверных баз.

Чтобы завершить сеансы:

  • 🔹 Откройте 1С:Предприятие в режиме Конфигуратор (запуск с ключом /Config или выбор режима при старте).
  • 🔹 Перейдите в меню Администрирование → Активные пользователи.
  • 🔹 В открывшемся окне вы увидите список всех подключённых пользователей с указанием их имен, компьютеров, времени начала сеанса и блокировок.
  • 🔹 Выделите нужного пользователя (или несколько, удерживая Ctrl) и нажмите кнопку "Завершить работу".

Если кнопка неактивна, это означает, что у вашей учётной записи недостаточно прав. В клиент-серверном варианте требуются права Администратор кластера серверов 1С или Администратор информационной базы.

💡

Перед принудительным отключением проверьте столбец"Блокировки" в списке активных пользователей. Если там есть записи, завершение сеанса может привести к сбою транзакций. В таком случае сначала попробуйте связаться с пользователем и попросить его сохранить данные.

Тип базы Требуемые права Ограничения метода
Файловая (1Cv8.1CD) Полный доступ к файлу базы Не работает, если файл заблокирован ОС
Клиент-серверная (SQL) Администратор кластера или ИБ Не сбрасывает блокировки на уровне СУБД
Управляемое приложение Права"Администрирование" Может не показывать сеансы веб-клиентов

2. Через консоль кластера серверов 1С (ras)

Для клиент-серверных баз наиболее надёжный способ — использование утилиты ras.exe (Remote Administration Server), которая входит в комплект поставки 1С:Предприятие 8.3. Этот метод позволяет управлять сеансами даже если конфигуратор недоступен.

Инструкция по использованию:

  1. Откройте командную строку (cmd.exe) от имени администратора.
  2. Перейдите в каталог с утилитами 1С (обычно это C:\Program Files (x86)\1cv8\<версия>\bin).
  3. Выполните команду для просмотра активных сеансов:
    ras session -s<ИмяСервера> list

    где <ИмяСервера> — имя вашего сервера 1С (например, localhost или srvinfo).

  4. Чтобы завершить конкретный сеанс, используйте:
    ras session -s<ИмяСервера> terminate -id<НомерСеанса>

    Например: ras session -slocalhost terminate -id42

Если вы работаете с кластером серверов 1С, можно завершить все сеансы для конкретной информационной базы:

ras session -s<ИмяСервера> terminate -infobase<ИмяБазы> -all

Что делать если ras.exe не находит сеансы?

Если команда ras session list возвращает пустой список, проверьте:

1. Правильность имени сервера (должно совпадать с именем в консоли управления кластером).

2. Права пользователя — требуется членство в группе Администраторы кластера 1С.

3. Работоспособность службы Агент сервера 1С:Предприятия (проверьте в services.msc).

4. Версию утилиты — для 8.3.20+ используйте ras.exe из соответствующего каталога.

3. Принудительное отключение через SQL-запросы (для MS SQL)

Если пользователи подключены к базе через Microsoft SQL Server, можно завершить их сеансы на уровне СУБД. Этот метод полезен, когда стандартные инструменты 1С не работают (например, при зависании кластера).

Внимание: неправильное использование SQL-команд может привести к повреждению данных. Применяйте этот способ только если вы уверены в своих действиях или под руководством опытного администратора баз данных.

Шаги для завершения сеансов:

  • 🔧 Подключитесь к SQL Server Management Studio (или другой утилите для работы с MS SQL).
  • 🔧 Выполните запрос для просмотра активных подключений:
    SELECT
    

    s.session_id,

    s.login_name,

    s.host_name,

    s.program_name,

    s.status,

    s.last_request_start_time

    FROM sys.dm_exec_sessions s

    WHERE s.program_name LIKE'%1C%'

  • 🔧 Найдите в результатах сеансы с программой 1C:Enterprise 8 и скопируйте их session_id.
  • 🔧 Завершите сеанс командой:
    KILL ;

    Например: KILL 58;

Проверьте, что завершаемый сеанс принадлежит 1С (столбец program_name)

Убедитесь, что нет активных транзакций (запрос SELECT * FROM sys.dm_tran_active_transactions)

Сначала попробуйте завершить сеанс через 1С, если это возможно

Не завершайте сеансы системных процессов (session_id < 50)-->

Для PostgreSQL аналогичные действия выполняются через команду:

SELECT pg_terminate_backend(pid)

FROM pg_stat_activity

WHERE application_name LIKE'%1C%';

4. Отключение через удалённый рабочий стол (RDP) или Task Manager

Если пользователь подключён к серверу 1С через удалённый рабочий стол (RDP) и"завис" в сеансе, можно завершить его процесс вручную. Этот метод применим только если у вас есть доступ к серверу по RDP с правами администратора.

Инструкция:

  1. Подключитесь к серверу по RDP.
  2. Откройте Диспетчер задач (Ctrl+Shift+Esc).
  3. Найдите в списке процессов 1cv8.exe или 1cv8c.exe (для клиент-серверного варианта).
  4. Выделите процесс нужного пользователя (можно ориентироваться по имени в столбце"Пользователь") и нажмите "Снять задачу".

Для терминальных серверов (например, Windows Server с установленным 1С) можно завершить сеанс пользователя целиком:

  • 🖥️ Откройте Управление сервером → Службы удалённых рабочих столов → Host-серверы сеансов удалённых рабочих столов.
  • 🖥️ Найдите активный сеанс пользователя и выберите "Отключить" или "Завершить".

Стандартный инструмент в конфигураторе|Консоль ras.exe|SQL-запросы|Диспетчер задач Windows|Другой способ-->

5. Автоматизированные скрипты для массового отключения

Если вам регулярно приходится завершать сеансы (например, для ночных обновлений), имеет смысл автоматизировать процесс с помощью скриптов. Ниже приведён пример на PowerShell, который завершает все сеансы 1С на сервере.

Скрипт для завершения сеансов через ras.exe:

$serverName ="localhost" # Имя сервера 1С

$rasPath ="C:\Program Files (x86)\1cv8\8.3.20.1549\bin\ras.exe"

Получаем список сеансов

$sessions = &"$rasPath" session -s$serverName list

Извлекаем ID сеансов

$sessionIds = $sessions | Select-String"Сеанс \d+" | ForEach-Object {

$_.Line.Split('')[1]

}

Завершаем каждый сеанс

foreach ($id in $sessionIds) {

&"$rasPath" session -s$serverName terminate -id$id

Write-Host"Завершён сеанс с ID $id"

}

Для запуска по расписанию:

  1. Сохраните скрипт в файл с расширением .ps1.
  2. Создайте задачу в Планировщике заданий Windows (taskschd.msc).
  3. Укажите действие: powershell.exe -ExecutionPolicy Bypass -File"C:\scripts\kill_1c_sessions.ps1".
  4. Настройте триггер (например, ежедневно в 23:00).
💡

Автоматизированное завершение сеансов удобно для регулярных задач, но требует тестирования. Всегда проверяйте работу скрипта вручную перед настройкой автозапуска, чтобы избежать случайного отключения критически важных процессов.

Для Linux-серверов с 1С:Предприятие можно использовать аналогичный подход с crontab и утилитой rac (аналог ras для Linux). Пример команды:

rac session --cluster=<ИмяКластера> terminate --all

6. Крайние меры: перезапуск служб 1С или сервера

Если ни один из вышеперечисленных методов не сработал (например, при полном зависании кластера), остаётся перезапуск служб 1С или даже всего сервера. Это радикальный способ, который следует применять только в крайних случаях.

Как перезапустить службы:

  • 🔌 Откройте services.msc (или выполните services в Выполнить).
  • 🔌 Найдите службы:
    • Агент сервера 1С:Предприятия 8.3
    • Сервер 1С:Предприятия 8.3
    • Менеджер кластера серверов 1С:Предприятия 8.3
  • 🔌 Остановите каждую службу по очереди, затем запустите снова.

Если даже это не помогает (например, службы не останавливаются), остаётся перезагрузка сервера. Помните, что это приведёт к обрыву всех сеансов и возможной потере несохранённых данных. Всегда предупреждайте пользователей заранее!

💡

Перед перезапуском служб проверьте, нет ли в это время критически важных операций (например, закрытия месяца или выгрузки отчётности). Используйте команду ras cluster list для просмотра активных рабочих процессов.

7. Особенности работы с веб-клиентами и мобильными приложениями

Сеансы пользователей, подключённых через веб-клиент или мобильное приложение 1С, завершаются теми же методами, но имеют свои нюансы:

  • 🌐 Веб-клиенты отображаются в списке активных пользователей как сеансы с типом ThinClient или WebClient.
  • 📱 Мобильные подключения могут не сразу отображаться в ras session list из-за особенностей работы через HTTP-сервисы.
  • 🔄 Для веб-клиентов иногда требуется дополнительно очищать кэш на стороне веб-сервера (IIS, Apache, Nginx).

Если стандартные методы не срабатывают для веб-пользователей:

  1. Перезапустите пул приложений в IIS Manager (для Windows).
  2. Для Linux с Nginx/Apache выполните:
    systemctl restart nginx
    

    systemctl restart apache2

Мобильные приложения часто используют долгосрочные токены для подключения. Чтобы полностью"выгнать" такого пользователя, может потребоваться:

  • Сброс токена в настройках мобильного устройства.
  • Блокировка учётной записи пользователя в 1С (временно).
  • Очистка кэша приложения на смартфоне.

8. Профилактика"зависших" сеансов: настройки тайм-аутов

Чтобы минимизировать количество проблемных сеансов, настройте автоматические тайм-ауты в 1С. Это позволит избежать ручного отключения в большинстве случаев.

Где настроить:

Параметр Где изменять Рекомендуемое значение
Тайм-аут неактивного сеанса Консоль управления кластером → Настройки кластера → Сеансы 30–60 минут
Максимальное время сеанса Тот же раздел 8–12 часов (для рабочего дня)
Тайм-аут блокировки Конфигуратор → Администрирование → Поддержка 5–10 минут

Для настройки через конфигуратор:

  1. Откройте базу в режиме Конфигуратор.
  2. Перейдите в Администрирование → Поддержка → Настройка поддержки.
  3. Установите флаг "Использовать тайм-аут блокировки данных" и задайте значение (например, 300 секунд).
  4. Сохраните настройки и обновите конфигурацию базы.

Для клиент-серверного варианта дополнительные настройки доступны в Консоли управления кластером (http://localhost:1545):

  • 🔧 Раздел "Центральные серверы" → выберите ваш сервер.
  • 🔧 Вкладка "Сеансы" → настройте параметры Тайм-аут простоя сеанса и Максимальная длительность сеанса.
💡

Настройка тайм-аутов — лучший способ профилактики"зависших" сеансов. Оптимальные значения зависят от специфики работы: для бухгалтерии можно установить более длинные тайм-ауты, а для торгового зала — покороче.

Не забывайте, что после изменения настроек кластера требуется его перезапуск для применения изменений.

FAQ: Частые вопросы по завершению сеансов в 1С

Можно ли завершить сеанс пользователя, не прерывая его работу?

Нет, принудительное завершение сеанса всегда приводит к обрыву соединения. Однако пользователь может потерять только несохранённые данные. Уже записанные в базу документы и операции останутся нетронутыми. Чтобы минимизировать потери, используйте предупреждения о планируемом отключении (например, через рассылку сообщений в 1С).

Почему после завершения сеанса через ras.exe пользователь сразу подключается снова?

Это типичная ситуация для тонкого клиента или веб-клиента, где настройка автоматического переподключения включена по умолчанию. Чтобы избежать этого:

  • Завершайте сеансы в нерабочее время.
  • Настройте в клиентском приложении параметр Автоматически восстанавливать соединение в Настройках подключения.
  • Используйте блокировку учётной записи на время технических работ.
Как завершить сеанс пользователя, который заблокировал регламентное задание?

Если сеанс пользователя блокирует выполнение регламентного задания (например, Закрытие месяца), сначала попробуйте:

  1. Завершить сеанс стандартным способом через конфигуратор.
  2. Если не помогает — используйте ras.exe с флагом -force:
    ras session -s<ИмяСервера> terminate -id -force
  3. Для SQL-баз проверьте блокировки через запрос:
    SELECT * FROM sys.dm_tran_locks WHERE resource_associated_entity_id IN
    

    (SELECT object_id FROM sys.objects WHERE name LIKE'%Регламентные%')

    и снимите их командой KILL.

Если блокировка сохраняется, может потребоваться перезапуск службы Агент сервера 1С.

Что делать, если после завершения сеансов база не открывается?

Это может указывать на:

  • 🔴 Повреждение блокировок — выполните тестирование и исправление базы через конфигуратор (Администрирование → Тестирование и исправление).
  • 🔴 Зависание рабочих процессов — перезапустите службы 1С или сервер.
  • 🔴 Проблемы с СУБД — проверьте логи MS SQL/PostgreSQL на ошибки.

Если база не открывается даже после перезапуска, восстановите её из резервной копии.

Как узнать, какой пользователь блокирует объект в базе?

Для этого используйте:

  • В Конфигураторе: Администрирование → Активные пользователи → столбец Блокировки.
  • В MS SQL:
    SELECT
    

    t1.resource_type,

    t1.resource_database_id,

    t1.request_mode,

    t1.request_session_id,

    s.host_name,

    s.login_name

    FROM sys.dm_tran_locks t1

    JOIN sys.dm_exec_sessions s ON t1.request_session_id = s.session_id

    WHERE t1.resource_type!='DATABASE'

  • В PostgreSQL:
    SELECT blocked_locks.pid AS blocked_pid,
    

    blocking_locks.pid AS blocking_pid,

    blocked_activity.usename AS blocked_user,

    blocking_activity.usename AS blocking_user

    FROM pg_catalog.pg_locks blocked_locks

    JOIN pg_stat_activity blocked_activity ON blocked_activity.pid = blocked_locks.pid

    JOIN pg_catalog.pg_locks blocking_locks

    ON blocking_locks.locktype = blocked_locks.locktype

    AND blocking_locks.DATABASE IS NOT DISTINCT FROM blocked_locks.DATABASE

    AND blocking_locks.relation IS NOT DISTINCT FROM blocked_locks.relation

    AND blocking_locks.page IS NOT DISTINCT FROM blocked_locks.page

    AND blocking_locks.tuple IS NOT DISTINCT FROM blocked_locks.tuple

    AND blocking_locks.virtualxid IS NOT DISTINCT FROM blocked_locks.virtualxid

    AND blocking_locks.transactionid IS NOT DISTINCT FROM blocked_locks.transactionid

    AND blocking_locks.classid IS NOT DISTINCT FROM blocked_locks.classid

    AND blocking_locks.objid IS NOT DISTINCT FROM blocked_locks.objid

    AND blocking_locks.objsubid IS NOT DISTINCT FROM blocked_locks.objsubid

    AND blocking_locks.pid!= blocked_locks.pid

    JOIN pg_stat_activity blocking_activity ON blocking_activity.pid = blocking_locks.pid

    WHERE NOT blocked_locks.GRANTED;