Зависший пользователь держит базу: снимаем сеанс через консоль, rac и блокировку
Содержание
Принудительно завершить сеанс пользователя
в 1С быстрее всего в Консоли администрирования серверов: Кластеры → <кластер> → Информационные базы → <база> → Сеансы, правой кнопкой по нужной строке → Удалить. Без консоли то же делает утилита rac командой session terminate, а из самой программы — форма «Активные пользователи» в типовых конфигурациях.
Ситуация обычная: вечером нужно обновить конфигурацию , а один пользователь ушёл домой с открытой 1С, и база не переходит в монопольный режим. Или сеанс «повис» после обрыва связи и занимает лицензию. Способы есть и для клиент-серверной, и для файловой базы: от мягкого предупреждения до снятия процесса.
Принудительное завершение рвёт работу человека без сохранения. Незаписанный документ пропадёт, а если сеанс был внутри длинной транзакции (проведение партии документов, закрытие месяца), СУБД откатит её целиком. Сначала предупредите пользователя.
Сеанс, соединение, тип клиента: что именно вы завершаете
В клиент-серверной 1С важно различать два объекта в консоли.
- 🔹 Сеанс — логическая работа пользователя с базой: кто вошёл, под какой учётной записью, какую лицензию занял, какие данные держит.
- 🔹 Соединение — сетевая связь клиентского приложения с рабочим процессом сервера. Одному сеансу в разные моменты могут соответствовать разные соединения.
Если удалить только соединение, клиент часто переподключается, и сеанс продолжает жить. Чтобы человек действительно вылетел из базы, удаляйте именно сеанс, а не соединение.
В списке сеансов колонка «Приложение» показывает, откуда подключение. По ней видно, что можно трогать без раздумий, а что нет.
| Тип в колонке «Приложение» | Что это | Можно ли завершать |
|---|---|---|
| Тонкий клиент, толстый клиент | Обычная работа пользователя | Да, предупредив человека |
| Веб-клиент | Работа через браузер | Да |
| Конфигуратор | Разработчик или администратор в Конфигураторе | Только после согласования: можно потерять несохранённые изменения конфигурации |
| Фоновое задание | Регламентные и фоновые задания | Осторожно: прервётся обмен, загрузка курсов, расчёт |
| COM-соединение, веб-сервис, HTTP-сервис | Внешние программы, интеграции, сайт | Только понимая, чья это интеграция |
| Консоль кластера | Сама консоль администрирования | Не нужно |
Фоновые задания после удаления сеанса обычно запускаются заново по своему расписанию. Чтобы они не мешали обновлению, их не убивают по одному, а блокируют на время работ (об этом ниже).
Консоль администрирования серверов: удалить сеанс за минуту
Консоль ставится вместе с платформой (компонент «Администрирование сервера 1С:Предприятия»). В меню «Пуск» ищите ярлык «Администрирование серверов 1С Предприятия».
Шаг за шагом
- Откройте консоль. Если сервер ещё не добавлен, правой кнопкой по
Central 1C:Enterprise 8.3 servers→Создать → Центральный сервер 1С:Предприятия, укажите имя сервера и порт агента1540. - Раскройте
<сервер> → Кластеры → <кластер>. Если на кластере заданы администраторы, консоль запросит логин и пароль. - Перейдите в
Информационные базы → <нужная база> → Сеансы. Справа появится список с колонками «Пользователь», «Компьютер», «Приложение», «Начало сеанса», «Последняя активность». - Найдите строку по имени пользователя и компьютеру. Смотрите на «Последнюю активность»: зависший сеанс обычно не обновлялся десятки минут.
- Правой кнопкой →
Удалить. Подтвердите.
У пользователя появится сообщение о разрыве связи с сервером, программа закроется или предложит перезапуск.
Если удалить нужно всех сразу, выделите строки с Shift или Ctrl и удалите разом. Строки с типом «Консоль кластера» и свою собственную сессию Конфигуратора не трогайте.
Если консоль не открывается
Частая причина — не зарегистрирована библиотека оснастки после установки или обновления платформы. Запустите командную строку от имени администратора и выполните:
"C:\Program Files\1cv8\8.3.24.1548\bin\RegMSC.cmd"
Номер версии в пути замените на свою. Если файла RegMSC.cmd нет, зарегистрируйте библиотеку вручную той же версии, что и сервер:
regsvr32 "C:\Program Files\1cv8\8.3.24.1548\bin\radmin.dll"
Версия консоли должна совпадать с версией сервера. Консоль от 8.3.22 к кластеру 8.3.24 подключится с ошибкой или не подключится вовсе.
Завершение из самой программы: «Активные пользователи» и блокировка
Когда доступа к серверу нет, а права администратора в базе есть, работает встроенный механизм типовых конфигураций на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11, КА, ERP).
Список активных пользователей
В БП 3.0 и ЗУП 3.1 откройте Администрирование → Обслуживание и в группе «Служебные операции» выберите «Активные пользователи». В форме видно всех, кто сейчас в базе, с типом приложения и временем начала работы.
Выделите строку и нажмите «Завершить сеанс». В клиент-серверной базе программа сама обратится к кластеру. Если в кластере заданы администраторы, она спросит их логин и пароль: без них команда не сработает.
Форма «Активные пользователи» есть и в Конфигураторе (Администрирование → Активные пользователи), но там это только просмотр. Завершить чужой сеанс из Конфигуратора нельзя.
Блокировка работы пользователей
Это мягкий и правильный способ перед регламентными работами. Там же, в Администрирование → Обслуживание, найдите «Блокировка работы пользователей».
- Укажите время начала и окончания блокировки.
- Напишите сообщение: его увидят пользователи («Обновление базы с 19:00 до 20:00, сохраните документы»).
- При необходимости задайте код разрешения: с ним администратор войдёт в базу во время блокировки.
- Нажмите «Установить блокировку».
Пользователи заранее получат предупреждение, а к моменту начала программа завершит их сеансы сама. Для входа во время блокировки запускайте 1С с параметром /UC<код>, например /UC12345. Параметр добавляется в строку запуска в свойствах базы в окне запуска («Дополнительные параметры запуска»).
Командная строка: утилиты ras и rac
Когда серверов несколько, консоли нет под рукой или сервер на Linux, сеансы удобнее снимать из командной строки. Схема такая: ras — служба-посредник, которая подключается к агенту кластера, rac — клиент, через который вы отдаёте команды.
Запуск ras
Разово, для проверки, на сервере 1С:
"C:\Program Files\1cv8\8.3.24.1548\bin\ras.exe" cluster --port=1545 localhost:1540
Чтобы ras работал постоянно, зарегистрируйте его службой Windows:
sc create "1C:Enterprise 8.3 Remote Server" binPath= "\"C:\Program Files\1cv8\8.3.24.1548\bin\ras.exe\" cluster --service --port=1545 localhost:1540" start= auto DisplayName= "1C:Enterprise 8.3 Remote Server"
sc start "1C:Enterprise 8.3 Remote Server"
На Linux утилиты лежат в /opt/1cv8/x86_64/<версия>/, ras запускают с ключом --daemon.
Порядок команд rac
Сначала узнайте идентификатор кластера:
rac cluster list
Затем базы и их идентификаторы:
rac infobase summary list --cluster=<uuid-кластера>
Список сеансов конкретной базы:
rac session list --cluster=<uuid-кластера> --infobase=<uuid-базы>
В выводе у каждого сеанса есть поля session (идентификатор для удаления), user-name, host, app-id, started-at, last-active-at. Завершение:
rac session terminate --cluster=<uuid-кластера> --session=<uuid-сеанса>
Если на кластере заданы администраторы, к каждой команде добавьте --cluster-user=<логин> --cluster-pwd=<пароль>. Для удалённого сервера укажите в конце адрес ras, например srv1c:1545. Полный список параметров — в rac help session.
Снять все сеансы базы скриптом
Пример на PowerShell перед ночным обновлением. Он находит все сеансы базы и завершает их по очереди:
$rac = "C:\Program Files\1cv8\8.3.24.1548\bin\rac.exe"
$cluster = "<uuid-кластера>"
$ib = "<uuid-базы>"
$ids = & $rac session list --cluster=$cluster --infobase=$ib |
Select-String '^session\s+:' |
ForEach-Object { ($_.Line -split ':', 2)[1].Trim() }
foreach ($id in $ids) {
& $rac session terminate --cluster=$cluster --session=$id
}
Шаблон ^session\s+: ловит только строку с идентификатором сеанса и пропускает session-id (порядковый номер). Если нужно оставить, например, фоновые задания, отфильтруйте их по полю app-id перед удалением.
Монопольный режим и блокировки: когда сеансы мешают работе
Чаще всего сеансы снимают из-за монопольного режима. Он нужен для обновления структуры базы (Обновить конфигурацию базы данных), загрузки .dt, тестирования и исправления. Пока в базе есть хоть один чужой сеанс, платформа выдаёт ошибку вида Ошибка установки монопольного режима и перечисляет мешающих.
Надёжный порядок для клиент-серверной базы:
- За 10–15 минут поставьте блокировку работы пользователей с сообщением.
- В консоли кластера откройте свойства базы и включите «Блокировка регламентных заданий включена» — иначе фоновые задания будут стартовать снова.
- Там же можно включить «Блокировка начала сеансов включена», задать сообщение и код разрешения. Это блокировка на уровне кластера: она работает, даже если конфигурация не типовая.
- Удалите оставшиеся сеансы в консоли или через rac.
- После работ снимите обе блокировки. Забытая блокировка регламентных заданий — частая причина того, что обмены и загрузка курсов «сами перестали работать».
Сеанс держит блокировку данных
Бывает и обратная ситуация: монопольный режим не нужен, но один сеанс повис посреди записи и держит данные. Остальные получают ошибки ожидания блокировки или таймаут.
Найти виновника помогают поля в выводе rac session list: blocked-by-dbms и blocked-by-ls показывают номер сеанса, который блокирует текущий (на уровне СУБД и управляемых блокировок соответственно). В консоли кластера те же сведения выводятся колонками списка сеансов. Завершать нужно сеанс-блокировщик, а не тех, кто ждёт.
Файловая база: что делать без кластера
У файловой базы нет сервера и консоли, поэтому удалённо «удалить сеанс» нельзя. Варианты:
- 🔸 Блокировка работы пользователей из типовой конфигурации. Сеансы завершаются сами, как описано выше. Это основной способ.
- 🔸 Закрыть 1С на рабочем месте пользователя: через удалённый доступ или диспетчер задач, процессы
1cv8c.exe(тонкий клиент) и1cv8.exe(толстый клиент, Конфигуратор). - 🔸 Закрыть открытый файл на файловом сервере. В Windows:
Управление компьютером → Общие папки → Открытые файлы, найдите1Cv8.1CDи закройте его для нужного пользователя.
Закрытие 1Cv8.1CD или снятие процесса во время записи может повредить файловую базу. Делайте это, только если человек точно ничего не проводит, и после сделайте копию каталога базы. Если после такого вмешательства база не открывается, запустите «Тестирование и исправление» в Конфигураторе на копии.
Почему сеансы зависают и как сделать, чтобы это повторялось реже
Типичные причины «висящих» сеансов:
- 🔌 обрыв сети или VPN: клиент исчез, а сервер ещё какое-то время считает сеанс живым;
- 💤 спящий режим ноутбука с открытой 1С;
- 🖥 пользователь закрыл окно RDP крестиком, а не вышел из сеанса Windows, и 1С осталась работать на терминальном сервере;
- ⏳ долгий серверный вызов: тяжёлый отчёт или проведение, которое упёрлось в блокировку;
- 🔁 внешняя интеграция открывает COM-соединения и не закрывает их.
Что помогает:
- Параметры засыпания и завершения сеансов. В свойствах информационной базы в консоли кластера есть настройки времени засыпания пассивного сеанса и времени завершения спящего сеанса (в секундах). Заданные значения сами снимают брошенные сеансы и освобождают лицензии.
- Отключение сеансов RDP. На терминальном сервере настройте в групповой политике лимит для отключённых сеансов, чтобы через заданное время Windows завершала их вместе с 1С.
- Технологический журнал. Если зависания повторяются, включите сбор событий в файле
logcfg.xmlв каталогеconfплатформы. СобытияTLOCK,TTIMEOUTиTDEADLOCKпоказывают, кто кого ждал и сколько. Журнал быстро растёт: включайте его на время расследования и ограничивайте срок хранения. - Разбор интеграций. Если в списке копятся COM-соединения от одного компьютера, проблема в коде внешней программы, а не в 1С.
Права и аудит: кто может завершать сеансы и где это видно
По умолчанию у нового кластера администраторов нет. Это значит, что любой, кто дотянется до порта 1540 или 1545, может открыть консоль или rac и удалить любой сеанс, в том числе у главного бухгалтера посреди закрытия месяца.
Минимальные меры:
- 🔐 Добавьте администратора кластера: в консоли
<кластер> → Администраторы → Создать. Затем администратора центрального сервера:<сервер> → Администраторы. Пароли храните в менеджере паролей, а не в скриптах. - 🧱 Закройте порты
1540,1541,1545и диапазон рабочих процессов брандмауэром для всех, кроме клиентов 1С и машин администраторов. Порт1545(ras) пользователям вообще не нужен. - 👤 Право завершать сеансы из «Активных пользователей» выдавайте только профилю администратора.
Где искать следы. Завершение сеанса попадает в журнал регистрации базы: Администрирование → Обслуживание → Журнал регистрации, отбор по событию «Сеанс. Завершение» и по пользователю. Видно, когда сеанс закончился, но журнал регистрации не всегда покажет, кто именно его снял из консоли. Для такого аудита в технологическом журнале актуальных версий платформы есть событие ADMIN: оно фиксирует действия администратора кластера.
Договоритесь в компании о простом правиле: перед массовым завершением сеансов администратор пишет в общий чат и ставит блокировку с сообщением. Так меньше претензий за потерянный документ.
Частые вопросы
Освобождается ли лицензия сразу после удаления сеанса?
rac session list --cluster=<uuid-кластера> --licenses.