Завершаем чужой сеанс в базе 1С: файловый и серверный вариант

· 9 мин

Содержание

Выгнать пользователя из 1С можно тремя путями: удалить его сеанс в консоли кластера серверов (клиент-серверная база), установить блокировку работы пользователей в самой программе или закрыть процесс и сетевой файл на уровне Windows (файловая база). Для серверной базы правильный путь — консоль или утилита rac: сеанс завершается принудительно за секунды. В файловой базе нет менеджера сеансов, поэтому там работают блокировка и закрытие файла 1Cv8.1CD на сервере, где лежит папка с базой.

Какой способ выбрать, зависит от трёх вещей: вариант базы, есть ли у вас права администратора кластера и нужно ли не пустить человека обратно. Удалить сеанс мало, если пользователь через минуту зайдёт снова.

СпособВариант базыЧто нужноРиск
Удаление сеанса в консоли кластераКлиент-серверныйПрава администратора кластераНизкий: теряются только несохранённые данные этого пользователя
rac session terminateКлиент-серверныйЗапущенный ras, права администратора кластераТот же
Блокировка работы пользователей (БСП)ОбаПолные права в базеНизкий, пользователи получают предупреждение
Блокировка начала сеансов в консолиКлиент-серверныйПрава администратора кластераНизкий
net file … /close, снятие процессаФайловыйАдмин сервера или ПКСредний: возможна порча данных при записи
Перезапуск службы агента сервераКлиент-серверныйАдмин сервераВысокий: обрываются все сеансы всех баз

Кто сейчас в базе: проверка сеансов перед отключением

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

Где посмотреть список:

  • 🖥️ В режиме 1С:Предприятие — в разделе Администрирование → Обслуживание откройте ссылку «Активные пользователи». В старых релизах БП 3.0 раздел назывался «Поддержка и обслуживание».
  • 🛠️ В Конфигураторе — меню Администрирование → Активные пользователи. Показывает список, но завершать сеансы отсюда нельзя.
  • 🗄️ В консоли кластера — Кластер → Информационные базы → <база> → Сеансы. Самый полный список: пользователь, компьютер, приложение, время начала, рабочий процесс.

Колонка «Приложение» подскажет, кого трогать можно:

ЗначениеЧто этоМожно ли завершать
1CV8CТонкий клиентДа, предупредив пользователя
1CV8Толстый клиентДа
WebClientВеб-клиентДа
DesignerКонфигураторОсторожно: пропадут несохранённые правки конфигурации
BackgroundJobФоновое или регламентное заданиеЛучше дождаться окончания или заблокировать задания
COMConnectionВнешнее подключение (обмен, интеграция)Сначала выясните, какая программа подключилась

Принудительное завершение сеанса Конфигуратора уничтожает все несохранённые изменения конфигурации. Перед этим позвоните разработчику.

Как выгнать пользователя из файловой базы 1С

У файловой базы нет сервера, который управляет сеансами. Каждый клиент сам открывает файл 1Cv8.1CD по сети. Поэтому «удалить сеанс» здесь в прямом смысле нельзя. Есть три рабочих приёма, от мягкого к жёсткому.

Способ 1. Блокировка работы пользователей средствами программы

В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11 и другие) есть встроенный механизм:

  1. Откройте Администрирование → Обслуживание, ссылку «Блокировка работы пользователей».
  2. Напишите сообщение, которое увидят пользователи: например, «Обновление базы, вернёмся в 13:30».
  3. Укажите время начала и окончания блокировки.
  4. Задайте код разрешения — с ним вы сами сможете зайти в заблокированную базу.
  5. Нажмите кнопку установки блокировки.

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

Чтобы войти при действующей блокировке, добавьте код к параметрам запуска:

"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F"D:\Bases\Buh" /N"Администратор" /P"пароль" /UC1234

Где 1234 — ваш код разрешения.

Тот же механизм можно запустить без интерфейса: параметр /C"ЗавершитьРаботуПользователей" включает блокировку и выгоняет всех, а /C"РазрешитьРаботуПользователей" снимает её. Удобно для ночных скриптов обновления.

Способ 2. Закрыть сетевой файл базы на сервере

Если у пользователя зависла программа или он ушёл домой с открытой 1С, блокировка БСП может не сработать: зависший клиент не выполняет проверку и не закрывается. Тогда идём на компьютер, где лежит папка с базой.

Через графический интерфейс:

  1. Откройте Управление компьютером → Общие папки → Открытые файлы.
  2. Найдите строки с путём к 1Cv8.1CD. В колонке «Пользователь» видно, чья это сессия.
  3. Правой кнопкой — «Закрыть открытый файл».

Через командную строку (от имени администратора):

net file
net file 47 /close

Первая команда выводит список открытых файлов с номерами, вторая закрывает файл с номером 47. Номер берёте из списка.

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

Способ 3. Терминальный сервер

Если 1С запускается на терминальном сервере, откройте Диспетчер задач на нём, вкладку «Пользователи». Там видно сеансы Windows. Выберите процесс 1cv8c.exe или 1cv8.exe нужного пользователя и снимите задачу. Отключать сеанс Windows целиком (выход из системы) — крайняя мера: закроются все его программы, не только 1С.

Отключение сеансов в клиент-серверной базе через консоль кластера

Для серверного варианта есть штатный инструмент — консоль «Администрирование серверов 1С:Предприятия». Она ставится вместе с сервером 1С и открывается как оснастка MMC.

Порядок:

  1. Запустите консоль. Если она пустая, добавьте центральный сервер: имя хоста и порт агента 1540.
  2. Разверните Кластеры → <кластер> → Информационные базы → <нужная база> → Сеансы.
  3. Найдите пользователя по колонкам «Пользователь» и «Компьютер».
  4. Правой кнопкой по сеансу — «Удалить». Подтвердите.

Сеанс завершится сразу. Пользователь увидит сообщение о разрыве соединения. Транзакция, которая шла в этот момент, откатится целиком, поэтому повреждения данных не будет — пропадёт только то, что человек не успел записать.

Если консоль не открывается и пишет про незарегистрированный компонент, перерегистрируйте библиотеку консоли от имени администратора: regsvr32 "C:\Program Files\1cv8\8.3.xx.xxxx\bin\radmin.dll". Номер версии должен совпадать с версией сервера.

Узел «Соединения» рядом с «Сеансами» показывает физические подключения к рабочим процессам. Для того чтобы выгнать пользователя, работайте именно с сеансами: удаление сеанса закрывает и связанные соединения.

Утилита rac: завершить сеанс пользователя из командной строки

Когда нет доступа к MMC (Linux-сервер, удалённая работа, скрипт), используйте rac. Она работает через сервер администрирования ras, который должен быть запущен. По умолчанию ras слушает порт 1545.

:: 1. Узнать идентификатор кластера
rac cluster list localhost:1545

:: 2. Список сеансов кластера
rac session list --cluster=<uuid-кластера> localhost:1545

:: 3. Завершить сеанс
rac session terminate --cluster=<uuid-кластера> --session=<uuid-сеанса> localhost:1545

Если на кластере задан администратор, добавьте к командам --cluster-user=<имя> --cluster-pwd=<пароль>.

В выводе session list ищите поля user-name, host и app-id — по ним понятно, чей это сеанс. Для параметров, в которых сомневаетесь, смотрите встроенную справку rac help session.

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

Самая частая ошибка: администратор удаляет сеанс, а через минуту пользователь заходит снова. Или в базу «просыпается» регламентное задание и мешает обновлению. Удаление сеанса нужно сочетать с блокировкой.

Блокировка в свойствах информационной базы

В консоли кластера откройте свойства базы (правой кнопкой по базе → «Свойства»). Там есть:

  • 🔒 Блокировка начала сеансов включена — новые сеансы не создаются.
  • 🕐 Начало и конец — интервал блокировки.
  • 💬 Сообщение — текст, который увидит пользователь при попытке входа.
  • 🔑 Код разрешения — с ним можно войти, используя параметр /UC.
  • ⏸️ Блокировка регламентных заданий включена — регламентные задания не стартуют.

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

Порядок для обновления выглядит так: включили обе блокировки → удалили оставшиеся сеансы → выполнили работы → сняли блокировки.

Фоновые задания

Фоновые сеансы видны в списке с приложением BackgroundJob. Если удалить такой сеанс, задание прервётся. Для обмена данными это значит, что пакет придётся выгружать заново.

Лучше сначала включить блокировку регламентных заданий и дождаться, пока текущие задания завершатся сами. Список выполняемых заданий есть в программе: в разделе Администрирование → Обслуживание найдите ссылку на регламентные и фоновые операции.

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

Какая у вас ситуация?

Аварийные методы: когда сеанс не удаляется

Иногда сеанс висит в консоли и после удаления появляется снова, либо консоль сама не отвечает. Обычно виноват завис рабочего процесса rphost — например, на долгом запросе или блокировке в СУБД.

Шаги от мягкого к жёсткому:

  1. Подождите 1–2 минуты после удаления. Сеанс с долгим серверным вызовом завершается, только когда вызов прервётся.
  2. Прервите текущий серверный вызов. У rac session есть отдельная команда для прерывания вызова; точный синтаксис посмотрите в rac help session.
  3. Посмотрите рабочий процесс. В консоли в узле «Рабочие процессы» видно, какой rphost обслуживает сеанс, его PID и загрузку.
  4. Завершите процесс rphost в Диспетчере задач по PID.
  5. Перезапустите службу «Агент сервера 1С:Предприятия 8.3».

Шаги 4 и 5 обрывают сеансы всех пользователей, которых обслуживал этот процесс, а перезапуск службы — всех пользователей всех баз на сервере. Делайте это только в нерабочее время или после рассылки предупреждения. Транзакции откатятся, но несохранённые документы у людей пропадут.

На уровне СУБД (KILL в MS SQL, pg_terminate_backend в PostgreSQL) сеансы 1С не завершают. Сервер 1С не узнает об этом, сеанс в консоли останется, а пользователь получит ошибку СУБД. Этот путь оставьте администратору СУБД для разбора блокировок.

Профилактика: чтобы выгонять приходилось реже

Большинство «вечных» сеансов — это забытые открытые окна и зависшие клиенты. Часть из них сервер может закрывать сам.

В свойствах информационной базы (клиент-серверный вариант):

  • ⏲️ «Время засыпания пассивного сеанса» — через сколько секунд бездействия сеанс засыпает и перестаёт держать ресурсы сервера.
  • ⏲️ «Время завершения спящего сеанса» — через сколько секунд спящий сеанс завершается совсем. Значение 0 — не завершать никогда.

В свойствах кластера:

  • ♻️ Интервал перезапуска рабочих процессов и допустимый объём памяти — процессы с утечками будут перезапускаться плавно, без обрыва сеансов.
  • 🧯 «Принудительно завершать проблемные процессы» — сервер сам снимет процесс, который превысил лимиты.

Организационно:

  • 📢 О плановых работах сообщайте заранее и включайте блокировку с текстом, а не удаляйте сеансы молча.
  • 🔑 Код разрешения храните у двух человек: если один заболел, второй сможет зайти в заблокированную базу.
  • 🕒 Обновления ставьте скриптом ночью: блокировка через /C"ЗавершитьРаботуПользователей", обновление, снятие блокировки.

Частые вопросы

Освобождается ли лицензия после удаления сеанса?
Да. Лицензия занята, пока существует сеанс. После его завершения в консоли она возвращается в пул и доступна следующему пользователю.
Пропадёт ли документ, который пользователь редактировал?
Если документ был записан, он сохранится. Изменения, внесённые после последней записи, пропадут. Начатая транзакция откатится полностью, половина документа в базе не останется.
Можно ли выгнать пользователя, не имея прав администратора кластера?
Нет, удаление чужого сеанса требует прав администратора кластера, если он задан. Без них остаётся блокировка работы пользователей средствами программы, для которой нужны полные права в базе.
Почему после удаления сеанса пользователь снова в списке?
Он заново запустил программу, либо это не его рабочий сеанс, а фоновое задание от его имени. Включите блокировку начала сеансов и проверьте колонку «Приложение».
Как предупредить человека перед отключением?
Встроенного чата у платформы нет. Самый простой путь — блокировка с текстом сообщения и временем начала через 5–10 минут: пользователь увидит предупреждение и успеет записать документ.