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

Особенность в том, что некоторые сеансы могут «зависнуть» из-за сетевых проблем, ошибок в коде или некорректного выхода пользователей. Такие процессы блокируют объекты базы, мешая выполнению регламентных операций. Мы рассмотрим не только стандартные инструменты платформы, но и скрытые команды консоли управления кластером, которые позволяют закрыть сеансы даже при отсутствии доступа к интерфейсу.

Важно: если вы не администратор системы, перед применением любых методов согласуйте действия с IT-отделом. Некоторые операции требуют прав Администратор кластера серверов 1С или Полные права в конфигураторе.

1. Закрытие сеансов через Конфигуратор 1С

Самый распространённый способ — использование встроенного инструмента в Конфигураторе. Этот метод подходит для большинства версий платформы (8.3.10+), включая облачные и локальные установки. Главное преимущество: визуальный контроль над всеми активными соединениями.

Чтобы закрыть сеансы:

  • 📌 Запустите 1С:Предприятие в режиме Конфигуратор (выберите базу → нажмите Конфигуратор в списке режимов).
  • 🔍 Перейдите в меню Администрирование → Активные пользователи.
  • 🚫 В открывшемся окне вы увидите список всех подключённых пользователей. Выделите нужные сеансы (можно использовать Ctrl+A для выбора всех) и нажмите кнопку Завершить работу.
  • ⚡ Подтвердите действие в диалоговом окне.

Если кнопка Завершить работу неактивна, это означает, что у вашей учётной записи недостаточно прав. В таком случае потребуется авторизоваться под пользователем с ролью Администратор или использовать альтернативные методы (см. следующие разделы).

💡

Перед принудительным закрытием сеансов проверьте, не выполняются ли в них критические операции (например, проведение документов или выгрузка данных). Это поможет избежать потери информации.

2. Использование консоли управления кластером (rac)

Для администраторов серверных установок доступна утилита rac (Remote Administration Console), которая позволяет управлять сеансами через командную строку. Этот метод незаменим, если графический интерфейс недоступен (например, при удалённом администрировании или сбоях в работе RDP).

Основные команды для работы с сеансами:

# Подключение к кластеру (замените "server" на имя вашего сервера)

rac cluster --cluster=server connect

Просмотр активных сеансов

rac session list

Принудительное завершение сеанса по ID (например, 123)

rac session terminate --session-id=123

Закрытие всех сеансов текущей базы

rac session terminate-all --infobase="ИмяБазы"

Обратите внимание: команда terminate-all завершает все сеансы без возможности выбора. Используйте её только в крайних случаях, когда другие методы не работают.

Что делать, если rac не распознаёт команду?

Убедитесь, что утилита rac установлена и добавлена в переменную окружения PATH. Для Windows путь по умолчанию: C:\Program Files\1cv8\8.3.x.xxx\bin\rac.exe. Если проблема сохраняется, проверьте права доступа к кластеру через rac cluster list.

3. Автоматизация через скрипты (PowerShell, командная строка)

Для регулярного обслуживания серверов удобно использовать скрипты, которые закрывают сеансы по расписанию или при возникновении блокировок. Ниже приведён пример скрипта на PowerShell, который завершает все сеансы указанной базы:

$ClusterAdmin = "АдминистраторКластера"

$ClusterPassword = "Пароль" | ConvertTo-SecureString -AsPlainText -Force

$Credential = New-Object System.Management.Automation.PSCredential($ClusterAdmin, $ClusterPassword)

Подключение к кластеру

Connect-1CCluster -ComputerName "ИмяСервера" -Credential $Credential

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

$Sessions = Get-1CSessions -InfobaseName "ИмяБазы"

Завершение каждого сеанса

foreach ($Session in $Sessions) {

Stop-1CSession -SessionID $Session.SessionID -Force

}

Для работы скрипта необходим модуль 1C-Admin, который можно установить через PowerShell Gallery:

Install-Module -Name 1C-Admin -Force

Альтернативный вариант — использование oscript (скриптового языка ):

ПодключитьКластерСерверов("ИмяСервера", "Администратор", "Пароль");

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

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

ЗавершитьСеанс(Сеанс.Идентификатор);

КонецЦикла;

📊 Какой метод закрытия сеансов вы используете чаще?
Через Конфигуратор
Команды rac
Скрипты PowerShell
Другие способы

4. Закрытие сеансов через SQL-запрос (для файлового и клиент-серверного вариантов)

В некоторых случаях (например, при повреждении блокировок) стандартные методы не срабатывают. Тогда можно воспользоваться прямым обращением к базе данных SQL Server или PostgreSQL, если работает в клиент-серверном режиме.

Для Microsoft SQL Server выполните запрос:

USE [ИмяБазыДанных]

GO

-- Просмотр активных сеансов

SELECT * FROM sys.dm_exec_sessions WHERE program_name LIKE '%1C%'

-- Принудительное завершение сеанса по SPID (например, 56)

KILL 56

Для PostgreSQL:

-- Просмотр активных подключений

SELECT pid, usename, application_name, query

FROM pg_stat_activity

WHERE application_name LIKE '%1C%';

-- Завершение процесса по PID (например, 1234)

SELECT pg_terminate_backend(1234);

⚠️ Внимание: Непредусмотренное завершение SQL-сеансов может привести к несохранённым транзакциям и повреждению данных. Используйте этот метод только если другие способы не помогли, и вы уверены в отсутствии критичных операций.

5. Особенности закрытия сеансов в облачных решениях (1С:Fresh, 1С:Линк)

Для облачных сервисов 1С:Fresh и 1С:Линк стандартные методы (например, rac) не работают. Здесь управление сеансами осуществляется через личный кабинет или API.

Инструкция для 1С:Fresh:

  1. Авторизуйтесь в личном кабинете.
  2. Перейдите в раздел Управление базой → Активные сеансы.
  3. Выделите нужные сеансы и нажмите Завершить.

Для 1С:Линк доступно REST API. Пример запроса на завершение сеанса:

POST https://api.1c-link.ru/v1/sessions/terminate

Headers:

Authorization: Bearer {ВашТокен}

Content-Type: application/json

Body:

{

"infobase_id": "ID_Вашей_Базы",

"session_id": "ID_Сеанса"

}

⚠️ Внимание: В облачных решениях принудительное закрытие сеансов может повлечь дополнительные проверки безопасности. Например, в 1С:Fresh после 3-х принудительных завершений подряд требуется подтверждение по SMS.

6. Диагностика и устранение ошибок при закрытии сеансов

Иногда при попытке завершить сеансы возникают ошибки. Рассмотрим наиболее распространённые и способы их решения:

Ошибка Причина Решение
Отказано в доступе Недостаточно прав пользователя Авторизуйтесь под учётной записью с ролью Администратор кластера
Сеанс не найден Указан неверный ID сеанса или он уже завершён Обновите список сеансов командой rac session list
Операция прервана пользователем Сеанс заблокирован длительной транзакцией Используйте rac session terminate --force
Не удалось подключиться к кластеру Сервис 1С:Предприятие не запущен Проверьте статус службы 1C:Enterprise 8.3 Server Agent

Если ошибка сохраняется, проверьте:

  • 🔌 Состояние сетевого подключения к серверу .
  • 📋 Логи сервера (папка %APPDATA%\1C\1Cv8\logs).
  • 🔄 Версию платформы — в старых релизах (ниже 8.3.10) могут отсутствовать некоторые команды rac.

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

7. Профилактика «зависших» сеансов

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

  • ⏱️ Настройте тайм-аут неактивности в параметрах кластера (Администрирование → Тайм-ауты). Оптимальное значение: 30–60 минут.
  • 🔄 Регулярно обновляйте платформу — в новых версиях исправлены ошибки с блокировками.
  • 📊 Используйте мониторинг производительности (например, Zabbix или Prometheus) для отслеживания долгих транзакций.
  • 🔒 Ограничьте права пользователей на выполнение ресурсоёмких операций (например, массовое проведение документов).

Для автоматизации мониторинга можно настроить оповещения о «зависших» сеансах. Пример скрипта для отправки уведомления в Telegram:

$Sessions = Get-1CSessions -InfobaseName "ИмяБазы" | Where-Object {$_.Duration -gt "01:00:00"}

if ($Sessions) {

$Message = "Обнаружены долгие сеансы: `n" + ($Sessions | Out-String)

Send-TelegramMessage -Token "ВашТокен" -ChatID 12345678 -Message $Message

}

💡

Регулярное обслуживание сервера (перезагрузка кластера раз в неделю, очистка временных файлов) снижает риск возникновения «зависших» сеансов на 70%.

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

Можно ли закрыть сеансы без прав администратора?

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

Что делать, если сеанс «завис» и не закрывается?

Если стандартные методы не помогают:

  1. Попробуйте завершить процесс ragent.exe через Диспетчер задач.
  2. Перезагрузите службу 1C:Enterprise 8.3 Server Agent.
  3. В крайнем случае перезагрузите сервер (только если это не повредит другим базам).
Как закрыть сеансы на удалённом сервере без RDP?

Используйте:

  • Команды rac через SSH или PowerShell Remoting.
  • 1С:EDT (Eclipse Development Tools) для удалённого подключения к конфигуратору.
  • API облачного провайдера (если сервер размещён в AWS, Azure и т. д.).
Почему после закрытия сеансов база работает медленно?

Это может быть связано с:

  • Незавершёнными транзакциями (проверьте логи SQL Server).
  • Фрагментацией индексов (выполните REINDEX).
  • Остаточными блокировками (используйте sp_who2 в SQL).

Рекомендуется выполнить тестирование и исправление базы через chdbfl.exe.

Можно ли настроить автоматическое закрытие сеансов по расписанию?

Да, для этого:

  1. Создайте PowerShell-скрипт (см. раздел 3).
  2. Добавьте его в Планировщик заданий Windows (например, на 3:00 ночи).
  3. Настройте уведомления о результатах выполнения.

Пример команды для планировщика:

schtasks /create /tn "Закрытие сеансов 1С" /tr "powershell.exe -File C:\scripts\close_sessions.ps1" /sc daily /st 03:00