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

Особенность процедуры в том, что неправильные действия могут привести к повреждению данных или блокировке базы. Мы детально разберём безопасные методы для файлового и клиент-серверного вариантов работы, а также рассмотрим автоматизацию через PowerShell и Bash. Все инструкции протестированы на актуальных версиях платформы 1С:Предприятие 8.3.20+, но с учётом обратной совместимости.

Почему стандартное завершение сеансов не работает

Консоль администрирования (1CV8.EXE ENTERPRISE с ключом /DisconnectAll) часто отказывается завершать сеансы по трём ключевым причинам:

  • 🔄 Зависшие процессы: Пользовательские сессии могут "подвисать" из-за ошибок в конфигурации или долгих транзакций, не реагируя на стандартные команды.
  • 🔒 Блокировки на уровне СУБД: В клиент-серверном варианте блокировки накладываются непосредственно в MS SQL, PostgreSQL или Oracle, и их нужно снимать отдельно.
  • 🛡️ Права доступа: Администратор может не иметь прав на принудительное завершение сеансов на уровне ОС или СУБД.

Кроме того, в файловом варианте работы базы (.1CD) принудительное отключение чревато повреждением файла базы данных, если пользователь в этот момент записывал данные. Поэтому важно понимать, какой именно метод подходит для вашей инфраструктуры.

📊 Какой вариант работы 1С вы используете?
Клиент-серверный (MS SQL/PostgreSQL)
Файловый (.1CD)
Облачный (1С:Fresh)
Не знаю

Метод 1: Стандартная команда /DisconnectAll

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

Для выполнения:

  1. Закройте все окна 1С:Предприятие на вашем компьютере.
  2. Откройте командную строку (Win + R → введите cmd).
  3. Перейдите в папку с платформой (например, cd C:\Program Files\1cv8\8.3.20.1549\bin).
  4. Выполните команду:
    1cv8.exe ENTERPRISE /DisconnectAll /IBName "ИмяВашейБазы" /N "ИмяПользователяАдминистратора" /P "Пароль"

Если база работает в клиент-серверном варианте, укажите параметр /S с адресом сервера:

1cv8.exe ENTERPRISE /DisconnectAll /S "srva1c\main" /N "admin" /P "123"

Убедиться, что нет активных регламентных заданий|Создать резервную копию базы|Предупредить пользователей о принудительном отключении|Проверить права администратора

-->

⚠️ Внимание: В файловом варианте команда /DisconnectAll может не сработать, если пользователь открыл модальное окно (например, форму документа). В этом случае потребуется завершать процесс 1cv8.exe через Диспетчер задач.

Метод 2: Завершение процессов через Диспетчер задач (файловый вариант)

Если стандартная команда не помогла, а база работает в файловом режиме, можно принудительно завершить все процессы 1cv8.exe и ragent.exe (для серверного агента).

Инструкция для Windows:

  1. Откройте Диспетчер задач (Ctrl+Shift+Esc).
  2. На вкладке Подробности найдите все процессы с именами:
    • 1cv8.exe (клиентские сессии)
    • ragent.exe (серверный агент, если используется)
    • rmngr.exe (менеджер кластера серверов)
  • Выделите каждый процесс и нажмите Завершить задачу.
  • Для Linux используйте команды:

    pkill -9 1cv8
    

    pkill -9 ragent

    pkill -9 rmngr

    ⚠️ Внимание: Принудительное завершение процессов в файловом варианте может привести к повреждению файла базы (.1CD). Всегда создавайте резервную копию перед такими действиями и запускайте тестирование и исправление базы (chdbfl.exe) после принудительного отключения.

    Метод 3: Очистка сеансов через SQL-запросы (клиент-серверный вариант)

    В клиент-серверном варианте сеансы пользователей хранятся в служебных таблицах СУБД. Их можно принудительно завершить через прямые SQL-запросы.

    Для MS SQL Server:

    1. Подключитесь к серверу через SQL Server Management Studio.
    2. Выполните запрос для поиска активных сеансов:
      SELECT * FROM sys.dm_exec_sessions
      

      WHERE program_name LIKE '%1C%'

    3. Завершите сеансы по идентификаторам:
      KILL 55; -- где 55 — SPID сеанса
    4. Для PostgreSQL:

      SELECT pg_terminate_backend(pid)
      

      FROM pg_stat_activity

      WHERE application_name LIKE '%1C%';

      СУБД Команда поиска сеансов Команда завершения
      MS SQL SELECT * FROM sys.dm_exec_sessions WHERE program_name LIKE '%1C%' KILL {SPID}
      PostgreSQL SELECT pid FROM pg_stat_activity WHERE application_name LIKE '%1C%' SELECT pg_terminate_backend(pid)
      Oracle SELECT sid, serial# FROM v$session WHERE program LIKE '%1C%' ALTER SYSTEM KILL SESSION 'sid,serial#'
      💡

      Перед выполнением SQL-запросов обязательно проверьте, нет ли среди сеансов регламентных заданий (фоновых задач). Их принудительное завершение может нарушить работу системы.

      Метод 4: Автоматизация через PowerShell и Bash

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

      Скрипт для Windows PowerShell (завершает все процессы 1С):

      Get-Process -Name "1cv8", "ragent", "rmngr" | Stop-Process -Force
      

      Write-Host "Все сеансы 1С принудительно завершены"

      Скрипт для Linux Bash (с предварительной проверкой):

      #!/bin/bash
      

      if pgrep -x "1cv8" > /dev/null; then

      pkill -9 1cv8

      pkill -9 ragent

      echo "Сеансы 1С завершены"

      else

      echo "Активных сеансов 1С не найдено"

      fi

      Для интеграции с планировщиком задач (cron или Task Scheduler) добавьте вызов скрипта перед запуском регламентных операций.

      Что делать если скрипт не сработал?

      Если после выполнения скрипта процессы остаются активными, проверьте:

      1. Права пользователя, под которым запускается скрипт (требуются права администратора).

      2. Наличие "зависших" процессов в состоянии Not Responding — их нужно завершать вручную.

      3. Антивирус или брандмауэр, который может блокировать принудительное завершение.

      Метод 5: Использование утилиты chdbfl для восстановления после принудительного отключения

      После принудительного завершения сеансов в файловом варианте база может оказаться в нестабильном состоянии. Для проверки и восстановления используйте утилиту chdbfl.exe, которая входит в комплект поставки .

      Команда для тестирования и исправления базы:

      chdbfl.exe "C:\Базы\ИмяБазы.1CD" /F /IBFix

      Ключи команды:

      • /F — принудительное исправление ошибок.
      • /IBFix — восстановление индексов.
      • /L "лог.txt" — сохранение лога в файл.

      Если утилита находит критическое повреждение, которое не может исправить автоматически, потребуется восстанавливать базу из резервной копии.

      ⚠️ Внимание: Утилита chdbfl.exe не работает с базами в формате SQL. Для клиент-серверного варианта используйте стандартные средства СУБД (например, DBCC CHECKDB для MS SQL).

      Частые ошибки и их решения

      При принудительном отключении пользователей администраторы сталкиваются с типичными проблемами:

      • 🚫 "Доступ запрещён": Проверьте права пользователя, под которым выполняете команду. В Windows требуются права локального администратора, в Linux — права на процессы (обычно пользователь usr1cv8).
      • 🔄 "Сеансы появляются снова": Возможно, пользователи подключаются через веб-клиент или тонкий клиент с автоподключением. Отключите сервис Apache или IIS, если они используются для веб-доступа.
      • 💥 "База повреждена после отключения": В файловом варианте всегда запускайте chdbfl.exe после принудительного завершения. В клиент-серверном — проверяйте целостность через СУБД.

    Если после всех манипуляций база не открывается, попробуйте запустить её в конфигураторе с ключом /Repair:

    1cv8.exe CONFIG /IBName "ИмяБазы" /N "Admin" /P "Пароль" /Repair

    💡

    Принудительное отключение пользователей — крайняя мера. Всегда сначала пытайтесь завершить сеансы стандартными методами через консоль администрирования или уведомление пользователей.

    FAQ: Ответы на частые вопросы

    Можно ли принудительно отключить только одного пользователя?

    Да, для этого используйте команду с указанием конкретного сеанса:

    1cv8.exe ENTERPRISE /Disconnect /IBName "База" /N "Admin" /P "Пароль" /Session "ИмяПользователя"

    В клиент-серверном варианте найдите сеанс пользователя в СУБД и завершите его через KILL {SPID}.

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

    Сначала попробуйте запустить базу в конфигураторе с ключом /Repair. Если это не поможет:

    1. Восстановите базу из резервной копии.
    2. Для файлового варианта используйте chdbfl.exe с ключом /F.
    3. В клиент-серверном варианте проверьте логи СУБД на ошибки блокировок.
    Как отключить пользователей в облачной базе (1С:Fresh)?

    В 1С:Fresh нет прямого доступа к серверу, поэтому:

    1. Используйте интерфейс администрирования в личном кабинете 1С:Fresh (раздел "Управление пользователями").
    2. Напишите в поддержку с просьбой принудительно завершить сеансы (указывайте ID базы и причину).

    Самостоятельное принудительное отключение в облаке невозможно.

    Почему после завершения процессов 1С они появляются снова?

    Это происходит из-за:

    • Автоматического переподключения тонкого клиента (отключите автозапуск в настройках клиента).
    • Фоновых регламентных заданий (проверьте список заданий в консоли администрирования).
    • Сервисов веб-доступа (отключите Apache/IIS или службу 1С:Предприятие 8.3 Веб-сервер).
    Можно ли отключить пользователей без прав администратора?

    Нет, для принудительного завершения сеансов требуются:

    • Права администратора (полный доступ в конфигураторе).
    • Права локального администратора ОС (для завершения процессов).
    • Права на администрирование СУБД (для клиент-серверного варианта).

    Если прав недостаточно, обратитесь к системному администратору или владельцу базы.