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

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

Почему нельзя просто "выключить" пользователей из 1С

Многие администраторы ошибочно считают, что достаточно перезагрузить сервер или закрыть приложение — и все сеансы прервутся автоматически. На практике это работает только для файлового варианта базы. В клиент-серверном режиме (особенно с SQL Server или PostgreSQL) принудительное отключение чревато:

  • 🔴 Блокировками таблиц — если транзакция не завершена, база может остаться в неконсистентном состоянии.
  • 🔴 Потерей данных — несохранённые документы, отчёты или изменения конфигурации пропадут без возможности восстановления.
  • 🔴 Повреждением индексов — при резком обрыве соединения SQL-сервер может не успеть обновить служебные структуры.
  • 🔴 Зависанием кластера — в редких случаях это приводит к необходимости полной переустановки 1С:Сервера.

Даже если вы используете Разрешить принудительное отключение пользователей в настройках кластера, это не гарантирует безопасность. Например, в PostgreSQL принудительное завершение сеанса (pg_terminate_backend) может прервать длительную транзакцию, что потребует ручного восстановления базы через VACUUM FULL.

⚠️ Внимание: Если в базе ведётся регламентное задание (например, закрытие месяца или расчёт зарплаты), его принудительный останов может привести к невозможности дальнейшей работы без вмешательства специалиста.

Способ 1: Стандартные инструменты администрирования 1С

Самый безопасный метод — использование встроенных утилит. Он подходит для большинства версий 1С:Предприятие 8.3 (включая последние релизы) и не требует глубоких технических знаний.

Шаг 1. Открытие консоли администрирования

Перейдите в Пуск → 1С Предприятие 8.3 → Администрирование серверов 1С:Предприятия. В окне консоли выберите нужный кластер (если их несколько) и разверните список Рабочие процессы.

Шаг 2. Просмотр активных сеансов

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

  • 👤 Имени пользователя (из справочника Пользователи).
  • 🖥️ Компьютера, с которого выполнено подключение.
  • ⏱️ Времени начала сеанса и продолжительности.
  • 📄 Текущей операции (например, "Открыт документ 'Реализация товаров'").
    Что делать, если сеанс "завис" и не отображается в консоли?

    В редких случаях сеансы могут "застревать" в базе данных, но не отображаться в консоли администрирования. Это происходит из-за сбоев в работе rmngr-процесса. В такой ситуации поможет только перезапуск кластера 1С или принудительное завершение процесса через SQL-команды (см. Способ 3).

Шаг 3. Завершение сеансов

Выделите нужные сеансы (можно несколько, удерживая Ctrl) и нажмите Завершить сеанс. Система предложит выбрать:

  • 🟢 Обычное завершение — пользователь получит уведомление и сможет сохранить данные (рекомендуется).
  • 🔴 Принудительное завершение — сеанс обрывается немедленно (риск потери данных).
⚠️ Внимание: Если в настройках кластера отключён параметр Разрешить принудительное отключение пользователей, кнопка будет неактивна. Чтобы её включить, потребуется редактировать файл conf.cfg (см. Способ 4).

Проверить, нет ли длительных операций (закрытие месяца, выгрузка данных)

Сохранить копию базы (на случай сбоя)

Уведомить пользователей о планируемом отключении

Закрыть свои сеансы (администратора) в последнюю очередь-->

Способ 2: Командная строка и утилиты 1С

Для автоматизации или работы на удалённом сервере удобно использовать консольные утилиты. Этот метод требует прав администратора на сервере и знания основ работы с командной строкой.

Утилита rac (Remote Administration Console)

В составе 1С:Предприятия поставляется утилита rac.exe, расположенная в каталоге установки (например, C:\Program Files (x86)\1cv8\8.3.x.xxx\bin\rac.exe). Она позволяет управлять кластером без графического интерфейса.

Примеры команд:

rac cluster list                        # Показать список кластеров

rac session list --cluster=ИмяКластера # Показать активные сеансы

rac session terminate --cluster=ИмяКластера --session-id=123 --force # Принудительно завершить сеанс с ID 123

Утилита 1cv8 в режиме конфигуратора

Если у вас есть доступ к конфигуратору, можно использовать встроенный язык для завершения сеансов. Откройте базу в режиме Конфигуратор и выполните следующий код:

Попытка

Сеансы = ПолучатьСеансыИнформационнойБазы();

Для Каждого Сеанс Из Сеансы Цикл

Если Сеанс.Активный Тогда

ЗавершитьСеанс(Сеанс.Идентификатор, Ложь); // Ложь = обычное завершение

КонецЕсли;

КонецЦикла;

Исключение

Сообщить("Ошибка завершения сеансов: " + ОписаниеОшибки());

КонецПопытки;

⚠️ Внимание: Выполнение этого кода в тонком клиенте или веб-клиенте может привести к зависанию вашего собственного сеанса. Используйте только в толстом клиенте или конфигураторе.

Стандартная консоль администрирования

Командная строка (rac.exe)

Скрипты в конфигураторе

Перезагрузка сервера

Другой вариант-->

Способ 3: Прямое обращение к SQL-серверу

Если сеансы "зависших" пользователей не отображаются в консоли 1С, но блокируют работу базы, можно обратиться напрямую к SQL-серверу. Этот метод требует прав sysadmin и осторожности — ошибка может привести к повреждению базы.

Для Microsoft SQL Server

Подключитесь к серверу через SQL Server Management Studio и выполните запрос:

-- Посмотреть активные соединения 1С

SELECT

session_id,

login_name,

host_name,

program_name,

login_time,

status

FROM sys.dm_exec_sessions

WHERE program_name LIKE '%1cv8%' OR program_name LIKE '%ragent%';

-- Принудительно завершить сеанс (замените 123 на реальный session_id)

KILL 123;

Для PostgreSQL

В pgAdmin или через psql выполните:

-- Посмотреть активные соединения

SELECT pid, usename, application_name, client_addr, state, query

FROM pg_stat_activity

WHERE application_name LIKE '%1cv8%';

-- Завершить процесс (замените 1234 на реальный PID)

SELECT pg_terminate_backend(1234);

СУБД Команда для просмотра сеансов Команда для завершения Риски
Microsoft SQL Server SELECT * FROM sys.dm_exec_sessions KILL {session_id} Возможны несохранённые транзакции, блокировки таблиц
PostgreSQL SELECT * FROM pg_stat_activity SELECT pg_terminate_backend({pid}) Могут остаться "мертвые" транзакции, требующие VACUUM
IBM DB2 db2 list applications db2 force application ({id}) Высокий риск повреждения данных при принудительном отключении

После принудительного завершения сеансов через SQL рекомендуется выполнить проверку целостности базы:

  • 🔧 Для MS SQL: DBCC CHECKDB.
  • 🔧 Для PostgreSQL: VACUUM ANALYZE.
💡

Перед работой с SQL-сервером всегда делайте резервную копию базы! Даже если вы просто просматриваете сеансы, случайное выполнение команды KILL или pg_terminate_backend может привести к необратимым последствиям.

Способ 4: Редактирование конфигурационного файла кластера

Если в консоли администрирования недоступна опция принудительного завершения сеансов, её можно включить вручную. Для этого отредактируйте файл conf.cfg, расположенный в каталоге кластера (например, C:\ProgramData\1C\1Cv8\conf\).

Добавьте или измените следующие параметры:

[common]

Разрешить принудительное отключение пользователей

enableForcedDisconnect=1

Таймаут ожидания завершения сеанса (в секундах)

sessionTerminateTimeout=30

После сохранения файла перезапустите службу 1С:Сервер:

net stop srv1cv83

net start srv1cv83

⚠️ Внимание: Изменение параметра sessionTerminateTimeout на значение менее 10 секунд может привести к повреждению данных при завершении длительных операций (например, выгрузки больших отчётов).

Способ 5: Перезагрузка сервера или службы 1С

Крайнюю меру — перезагрузку сервера или остановку службы 1С:Предприятия — следует применять только если другие методы не сработали. Этот способ гарантированно прервёт все сеансы, но чреват:

  • 🔴 Потерей несохранённых данных у всех пользователей.
  • 🔴 Повреждением файловой базы (если используется файловый вариант).
  • 🔴 Длительным восстановлением SQL-сервера после некорректного завершения.

Если вы всё же решились на перезагрузку, выполните действия в следующем порядке:

  1. Уведомите пользователей о принудительном отключении.
  2. Остановите службу 1С:Сервер:
    net stop srv1cv83
  3. Подождите 1–2 минуты (даже если служба остановилась сразу).
  4. Перезагрузите сервер (если необходимо):
    shutdown /r /t 0
  5. После запуска проверьте целостность базы через chdbfl.exe (для файлового варианта) или DBCC CHECKDB (для MS SQL).
💡

Перезагрузка сервера — это всегда риск! Если база работает в клиент-серверном режиме, сначала попробуйте завершить сеансы через SQL-команды или утилиту rac.

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

В редких случаях после принудительного завершения сеансов база может перестать открываться или выдавать ошибки вроде:

  • Ошибка блокировки (особенно в PostgreSQL).
  • Несоответствие версий данных (при прерванном обновлении конфигурации).
  • Ошибка SBL (повреждение служебных таблиц).

Действия по восстановлению:

  1. Для файлового варианта:
    chdbfl.exe /F "C:\Path\To\Your\Base\1Cv8.1CD" /FixErrors
  2. Для MS SQL:
    EXEC sp_resetstatus 'YourDatabase';
    

    ALTER DATABASE YourDatabase SET EMERGENCY;

    ALTER DATABASE YourDatabase SET SINGLE_USER;

    DBCC CHECKDB ('YourDatabase', REPAIR_ALLOW_DATA_LOSS);

    ALTER DATABASE YourDatabase SET MULTI_USER;

  3. Для PostgreSQL:
    VACUUM FULL ANALYZE;
    

    REINDEX DATABASE your_database;

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

-- Для MS SQL

KILL {session_id} -- для всех сеансов с статусом 'sleeping' и блокировками

-- Для PostgreSQL

SELECT pg_terminate_backend(pid) FROM pg_locks WHERE NOT granted;

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

Могу ли я завершить сеанс другого администратора?

Да, но для этого ваша учётная запись должна иметь роль "Администратор кластера" в консоли администрирования 1С. Если прав недостаточно, система выдаст ошибку Отказано в доступе. В SQL-сервере для этого требуются права sysadmin.

Что будет, если завершить сеанс во время обновления конфигурации?

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

  1. Восстановить базу из резервной копии.
  2. Или вручную довести конфигурацию до актуальной версии через Конфигуратор (опция Продолжить обновление).

Если база после этого не открывается, обратитесь в службу поддержки с логами обновления (1Cv8Log\).

Как автоматизировать завершение сеансов по расписанию?

Можно создать регламентное задание в SQL Server Agent (для MS SQL) или cron-задачу (для PostgreSQL), которая будет выполнять скрипт завершения сеансов. Пример для MS SQL:

-- Создать задание в SQL Server Agent

USE msdb;

EXEC dbo.sp_add_job

@job_name = N'Terminate 1C Sessions Nightly';

EXEC sp_add_jobstep

@job_name = N'Terminate 1C Sessions Nightly',

@step_name = N'Kill 1C Sessions',

@subsystem = N'TSQL',

@command = N'

DECLARE @sql NVARCHAR(MAX) = '';

SELECT @sql = @sql + ''KILL '' + CAST(session_id AS NVARCHAR(5)) + '';''

FROM sys.dm_exec_sessions

WHERE program_name LIKE ''%1cv8%'';

EXEC sp_executesql @sql;',

@retry_attempts = 3,

@retry_interval = 5;

Для можно написать внешнюю обработку, которая будет запускаться по расписанию через Планировщик заданий Windows.

Почему после завершения сеансов база долго открывается?

Это связано с:

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

В норме задержка не должна превышать 5–10 минут. Если база не открывается дольше, проверьте логи SQL-сервера и (1Cv8Log\).

Можно ли завершить сеансы в облачной базе (1С:Fresh, 1С:ГК)?

Нет, в облачных сервисах (1С:Fresh, 1С:ГК, 1С:Линк) нет доступа к инструментам администрирования. Чтобы завершить сеансы, обратитесь в техническую поддержку провайдера с указанием:

  • 📌 Названия базы.
  • 📌 Причины запроса (обновление, резервное копирование и т. д.).
  • 📌 Желаемого времени отключения.

В некоторых тарифах (например, 1С:ГК для корпораций) может быть предоставлен доступ к ограниченной консоли администрирования — уточните это у вашего менеджера.