Пользователи не выходят из базы: шесть способов выгнать всех и не сломать данные

· 9 мин

Содержание

В клиент-серверной базе 1С 8.3 сеанс пользователя закрывают в консоли администрирования серверов: Кластер → Информационные базы → <база> → Сеансы, правый клик по строке → Удалить. В файловой базе консоли нет. Там сеансы закрывают блокировкой из самой программы (Администрирование → Обслуживание → Блокировка работы пользователей) или, в крайнем случае, завершением процесса на компьютере пользователя.

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

С чего начать: кто сейчас в базе и что он делает

Прежде чем выгонять людей, посмотрите, кто реально подключён. Часто «висящий» сеанс — это фоновое задание или забытый ночью Конфигуратор у программиста.

Список активных пользователей. В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) он есть в разделе Администрирование → Обслуживание. Универсальный путь для любой конфигурации — Главное меню (☰) → Все функции → Стандартные → Активные пользователи. Если пункта «Все функции» нет, включите его: Главное меню → Сервис и настройки → Параметры → Отображать команду «Все функции».

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

  • 🔹 Сеанс. Начало — вход в базу;
  • 🔹 Сеанс. Завершение — штатный выход;
  • 🔹 Сеанс. Аутентификация — проверка пароля, полезна при подозрении на чужой вход.

Сеанс, у которого есть «Начало», но нет «Завершения» уже несколько часов, — первый кандидат на принудительное закрытие. По колонке «Компьютер» видно, куда звонить, чтобы человек сам вышел без потерь.

В списке активных пользователей смотрите на колонку «Приложение». «Конфигуратор» и «Фоновое задание» — не люди. Фоновые задания закрывайте последними, иначе оборвётся обмен или загрузка банка посередине.

Удаление сеансов в консоли администрирования серверов 1С

Это основной способ для клиент-серверной базы. Консоль ставится вместе с платформой как компонент «Администрирование сервера 1С:Предприятия».

Если консоль не открывается

Консоль работает через библиотеку radmin.dll. После установки новой версии платформы её нужно зарегистрировать от имени администратора, иначе консоль выдаёт ошибку при открытии:

regsvr32 "C:\Program Files\1cv8\8.3.24.1548\bin\radmin.dll"

Номер версии в пути подставьте свой. Он должен совпадать с версией сервера, к которому подключаетесь.

Пошагово

  1. Запустите «Администрирование серверов 1С Предприятия».
  2. Раскройте Центральные серверы 1С:Предприятия 8.3 → <имя сервера> → Кластеры → <кластер>.
  3. Если кластер защищён паролем, консоль запросит логин и пароль администратора кластера.
  4. Откройте Информационные базы → <нужная база> → Сеансы. Для этой базы консоль спросит логин и пароль администратора информационной базы.
  5. Выделите один или несколько сеансов (Ctrl или Shift) и выберите в контекстном меню Удалить.

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

Удалённый сеанс в режиме тонкого клиента пытается переподключиться. Если человек нажмёт «Перезапустить», он снова окажется в базе. Чтобы этого не произошло, сначала включите блокировку начала сеансов (о ней ниже), а потом удаляйте.

То же самое из командной строки: rac

Для скриптов и ночных регламентов удобнее утилита rac. Ей нужна запущенная служба ras (сервер администрирования, по умолчанию порт 1545):

ras cluster --port=1545 localhost:1540

Дальше последовательность такая:

rac cluster list
rac infobase summary list --cluster=<uuid кластера>
rac session list --cluster=<uuid кластера> --infobase=<uuid базы>
rac session terminate --cluster=<uuid кластера> --session=<uuid сеанса>

Если кластер защищён, к каждой команде добавьте --cluster-user=<логин> --cluster-pwd=<пароль>. Полный список параметров вашей версии показывает rac help session.

Блокировка работы пользователей прямо из программы

Это самый «вежливый» способ и единственный штатный для файловой базы. В конфигурациях на БСП он находится в Администрирование → Обслуживание → Блокировка работы пользователей.

Что настраивается в форме:

ПолеЗачем
Флажок запрета работыВключает блокировку
Начало и окончаниеПериод, на который база закрыта
СообщениеТекст, который увидят пользователи, например «Обновление до 21:00»
Код разрешенияПароль-ключ для входа администратора при включённой блокировке

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

Сами войти в заблокированную базу вы сможете с параметром запуска /UC<код разрешения>. Например, если код — upd2024, в строку запуска добавьте /UCupd2024.

Для клиент-серверной базы форма блокировки попросит пароль администратора кластера: она закрывает сеансы через сервер. В файловой базе каждый клиент закрывается сам, получив сигнал о блокировке. Если клиент «завис» и сигнал не обрабатывает, придётся переходить к способам ниже.

Пакетный запуск для регламентов: в БСП есть параметры /C"ЗавершитьРаботуПользователей" и /C"РазрешитьРаботуПользователей". Их используют в bat-файлах ночного обновления вместе с /UC.

Блокировка начала сеансов на уровне кластера

В клиент-серверной базе то же можно сделать без входа в программу. В консоли откройте свойства информационной базы и включите Блокировка начала сеансов включена. Укажите время начала и окончания, сообщение и код разрешения. Удобно, если сама конфигурация не открывается или в ней нет БСП.

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

Монопольный режим: когда без него нельзя

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

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

  1. Включите блокировку из предыдущего раздела.
  2. Дождитесь, пока сеансы закроются, или удалите оставшиеся через консоль.
  3. Проверьте, что в списке сеансов нет фоновых заданий и «зависших» сеансов от вашего же Конфигуратора, запущенного ранее.
  4. Только после этого повторите операцию в Конфигураторе.

Если монопольный режим не ставится, а в консоли сеансов нет, проверьте «Соединения» той же базы. Соединение без сеанса бывает у внешних систем через COM или веб-сервис.

Освобождение лицензий в менеджере HASP

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

Сетевые ключи HASP обслуживает Sentinel License Manager. Его веб-панель открывается на компьютере с ключом по адресу:

http://localhost:1947

В разделе Sessions видно, какие компьютеры держат лицензию. Сессию можно отключить кнопкой Disconnect.

Что важно понимать про этот способ:

  • 🔸 Отключение в панели HASP освобождает место в ключе, но не закрывает базу у пользователя мгновенно. Клиент обнаружит потерю лицензии при очередной проверке и выдаст ошибку о ключе защиты.
  • 🔸 В клиент-серверном варианте лицензии клиентов получает сервер 1С. Сессию в HASP тогда держит сервер, а не компьютер пользователя, и отключать её бессмысленно: сначала закройте сеанс в консоли.
  • 🔸 Программные (не аппаратные) лицензии через эту панель не освобождаются. Их отдаёт закрытый сеанс.

Какие лицензии заняты в кластере, покажет команда:

rac session list --cluster=<uuid кластера> --licenses

Аварийное завершение процессов в Windows

Это крайняя мера. Используйте её, если сеанс не удаляется из консоли, а клиент на компьютере пользователя не отвечает.

Файловая база

Здесь каждый пользователь сам открывает файл 1Cv8.1CD по сети. Варианты:

  1. На компьютере или терминальном сервере пользователя завершите процесс клиента. Тонкий клиент — 1cv8c.exe, толстый клиент и Конфигуратор — 1cv8.exe:
taskkill /IM 1cv8c.exe /F /FI "USERNAME eq ivanova"

Фильтр по пользователю обязателен на терминальном сервере. Без него вы закроете 1С у всех.

  1. На сервере с сетевой папкой закройте открытый файл базы. Через интерфейс: Управление компьютером → Общие папки → Открытые файлы, найти 1Cv8.1CD, закрыть. Через PowerShell:
Get-SmbOpenFile | Where-Object Path -like "*1Cv8.1CD" | Close-SmbOpenFile -Force

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

Клиент-серверная база

На сервере 1С сеансы живут внутри рабочих процессов rphost.exe. Один процесс обслуживает сразу многих пользователей, часто разных баз. Снять rphost в диспетчере задач — значит оборвать сеансы всех, кто в нём работал.

Порядок от мягкого к жёсткому:

ДействиеКогда применятьКого затронет
Удалить сеанс в консолиОбычная ситуацияОдного пользователя
Выключить рабочий процесс в консоли (свойства процесса)Сеанс «завис» и не удаляетсяВсех в этом процессе, кластер запустит новый
Завершить rphost.exe в диспетчереКонсоль не отвечаетВсех в этом процессе
Перезапустить службу «Агент сервера 1С:Предприятия 8.3»Не помогло ничегоВсех пользователей всех баз сервера

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

Закрытие сеансов из внешней обработки через COM

Встроенный язык 1С не умеет завершить чужой сеанс напрямую. Метод ПолучитьСеансыИнформационнойБазы() только показывает их. Для завершения нужен административный интерфейс сервера: COM-объект V83.COMConnector (Windows) или вызов rac из кода.

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

&НаСервере
Процедура ЗавершитьСеансыНаСервере(ИмяСервера, ИмяБазы, АдминКластера, ПарольКластера, Исключение)

	Коннектор = Новый COMОбъект("V83.COMConnector");
	Агент = Коннектор.ConnectAgent("tcp://" + ИмяСервера + ":1540");

	Кластеры = Агент.GetClusters();
	Для Каждого Кластер Из Кластеры Цикл

		Агент.Authenticate(Кластер, АдминКластера, ПарольКластера);
		Базы = Агент.GetInfoBases(Кластер);

		Для Каждого База Из Базы Цикл
			Если НРег(База.Name) <> НРег(ИмяБазы) Тогда
				Продолжить;
			КонецЕсли;

			Сеансы = Агент.GetInfoBaseSessions(Кластер, База);
			Для Каждого Сеанс Из Сеансы Цикл
				Если Сеанс.UserName = Исключение Тогда
					Продолжить;
				КонецЕсли;
				Сообщить("Завершаю: " + Сеанс.UserName + ", " + Сеанс.AppID);
				Агент.TerminateSession(Кластер, Сеанс);
			КонецЦикла;
		КонецЦикла;

	КонецЦикла;

КонецПроцедуры

Что нужно для работы:

  • 🔹 На сервере 1С должен быть зарегистрирован comcntr.dll той же версии, что и платформа.
  • 🔹 Код выполняется на сервере, значит, у учётной записи службы 1С должен быть доступ к агенту кластера.
  • 🔹 В Исключение передайте своё имя пользователя, иначе обработка закроет и ваш сеанс.

Если нужно закрывать только «зависшие» сеансы, добавьте проверку по свойству Сеанс.LastActiveAt и сравнивайте его с текущей датой. Сеанс без активности дольше часа — хороший кандидат.

Порядок действий перед вечерним обновлением

Типичная ситуация: в 19:00 нужно обновить Бухгалтерию с изменением структуры, а в базе ещё 12 сеансов. Рабочая последовательность для клиент-серверной базы выглядит так:

  1. 18:30 — включите блокировку работы пользователей с сообщением «В 19:00 база закрывается на обновление». Люди успеют дописать документы.
  2. 18:55 — в свойствах базы в консоли включите блокировку регламентных заданий.
  3. 19:00 — проверьте список сеансов. Оставшиеся удалите в консоли или командой rac session terminate.
  4. 19:05 — сделайте резервную копию и запускайте Конфигуратор с параметром /UC<код разрешения>.
  5. После обновления — снимите обе блокировки и проверьте, что пользователи входят.

Для файловой базы шаги 2 и 3 заменяются проверкой открытых файлов на сервере с сетевой папкой: в списке не должно остаться 1Cv8.1CD, открытого с чужих компьютеров.

Перед тем как выгонять пользователей
Выполнено: 0 / 5

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

Потеряются ли проведённые документы при принудительном закрытии сеанса?
Нет. Записанные и проведённые документы уже в базе. Пропадёт только то, что пользователь ввёл в открытой форме и не успел записать.
Почему после удаления в консоли сеанс появляется снова через минуту?
Тонкий клиент переподключается сам, а регламентные задания создают новые фоновые сеансы. Включите блокировку начала сеансов и блокировку регламентных заданий в свойствах базы.
Можно ли закрыть сеансы в файловой базе без доступа к компьютерам пользователей?
Да, блокировкой работы пользователей из программы. Если клиент завис и не реагирует, остаётся закрыть открытый файл 1Cv8.1CD на сервере с сетевой папкой.
Сколько ждать после включения блокировки, прежде чем удалять сеансы вручную?
Дайте программе отработать предупреждение — обычно несколько минут. Оставшиеся после этого сеансы удаляйте в консоли.
Нужен ли пароль администратора кластера, чтобы закрыть сеансы?
Если администратор кластера задан — да, и в консоли, и в rac, и в обработке. Если пароль утерян, восстановите файл настроек кластера из резервной копии или обратитесь к администратору сервера.