Принудительное завершение сеанса пользователя в 1С 8.3: от списка активных до консоли кластера
Содержание
Чтобы закрыть пользователя в 1С 8.3 из самой программы, откройте Администрирование → Обслуживание → Активные пользователи, выделите нужный сеанс и нажмите «Завершить сеанс». Это работает в типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) и требует права администратора системы. Если база клиент-серверная, тот же результат дают консоль кластера серверов и утилита rac.
С файловой базой сложнее: сервера, который мог бы оборвать чужой сеанс, там нет. Принудительное закрытие сводится к блокировке входа и завершению процесса 1С на компьютере пользователя. Ниже разобраны все варианты по порядку: от мягкого к жёсткому.
Как найти сеанс пользователя, которого нужно закрыть
Сначала поймите, кого именно отключать. Один человек может держать сразу несколько сеансов: тонкий клиент, Конфигуратор, обработку по COM-соединению.
Где смотреть список подключений:
- 👥 В режиме «Предприятие» — форма «Активные пользователи» в разделе
Администрирование → Обслуживание. Видны пользователь, компьютер, приложение, время начала и номер сеанса. - 🛠 В Конфигураторе — меню
Администрирование → Активные пользователи. Только просмотр, закрыть сеанс отсюда нельзя. - 🖥 В консоли кластера — ветка
Информационные базы → <база> → Сеансы. Самая полная картина: здесь есть и фоновые задания, и COM-соединения, и сеансы с ошибками.
Как отличить «живой» сеанс от зависшего
Ориентируйтесь на колонки в консоли кластера:
| Признак | Что означает |
|---|---|
| Приложение «Тонкий клиент», «Толстый клиент», «Веб-клиент» | Обычная работа человека |
| Приложение «Конфигуратор» | Кто-то открыл базу в режиме разработки |
| Приложение «Фоновое задание» | Регламентное или фоновое задание |
| Приложение «COM-соединение» | Внешняя обработка, обмен, интеграция |
| Время начала — несколько суток назад | Кандидат в «забытые» сеансы |
| Нет соединения у сеанса | Клиент оборвался, сеанс висит на сервере |
Номер сеанса — единственный надёжный идентификатор. Имя пользователя часто повторяется, особенно если сотрудники работают под общей учётной записью.
Перед закрытием напишите человеку или позвоните. Если он проводит документ или формирует отчёт, обрыв приведёт к потере несохранённых изменений.
Закрыть пользователя в 1С через форму «Активные пользователи»
Это самый безопасный путь. Платформа корректно завершает сеанс, лицензия освобождается.
Пошагово
- Войдите в базу под пользователем с правом «Администрирование» (обычно профиль «Администратор»).
- Откройте
Администрирование → Обслуживание → Активные пользователи. - Найдите строку с нужным пользователем. Сверьте компьютер и время начала.
- Нажмите «Завершить сеанс» в командной панели формы.
- Для клиент-серверной базы программа запросит логин и пароль администратора кластера, если он задан.
- Обновите список и убедитесь, что строка исчезла.
Пользователь увидит сообщение о том, что сеанс завершён администратором, и программа у него закроется.
Ограничения этого способа
- 🔒 Без прав администратора системы команды завершения в форме не будет.
- 📁 В файловой базе принудительное завершение чужого сеанса из этой формы работает не всегда: сеанс закроется, только если клиент пользователя сам отработает команду. Подробнее — в разделе про файловый вариант.
- 🧩 В нетиповой или сильно доработанной конфигурации формы может не быть. Тогда переходите к консоли кластера.
Закрывая собственный сеанс, вы просто выйдете из программы. Проверяйте номер сеанса: текущий отмечен в списке.
Блокировка входа в 1С на время регламентных работ
Закрыть пользователя — полдела. Через минуту он может зайти снова. Перед обновлением конфигурации, загрузкой .dt или тестированием и исправлением нужно не пустить в базу никого, кроме администратора.
Через программу (БСП)
- Откройте
Администрирование → Обслуживаниеи найдите ссылку «Блокировка работы пользователей». - Заполните сообщение, которое увидят пользователи: «Обновление базы, вход откроется в 14:00».
- Укажите время начала и окончания блокировки.
- Задайте код разрешения — любую строку, например
upd77. - Нажмите «Установить блокировку».
После наступления времени начала программа предупреждает пользователей и завершает их сеансы. Новые входы запрещены.
Сами вы заходите в заблокированную базу с параметром запуска /UC. Его добавляют в поле «Дополнительные параметры запуска» в настройках базы в окне запуска или в ярлык:
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /S"srv1c\buh" /UCupd77
Для Конфигуратора параметр тот же:
"C:\Program Files\1cv8\common\1cestart.exe" DESIGNER /S"srv1c\buh" /UCupd77
Блокировку снимайте той же формой — кнопкой «Снять блокировку». Если забыть, утром бухгалтерия не попадёт в базу.
Регламентные задания тоже нужно остановить
Фоновые задания (обмены, загрузка курсов, полнотекстовый поиск) создают свои сеансы. Их не закрывает блокировка пользователей. В клиент-серверной базе включите в свойствах базы флажок «Блокировка регламентных заданий включена» — об этом ниже.
Без остановки регламентных заданий обновление может упасть на середине из-за сеанса обмена, который стартует по расписанию.
Принудительное отключение пользователя через консоль кластера 1С
Консоль кластера серверов — главный инструмент администратора клиент-серверной базы. Она закрывает любые сеансы, включая зависшие и фоновые, и не зависит от конфигурации.
Удаление сеанса
- Запустите «Администрирование серверов 1С Предприятия» на сервере или на машине администратора.
- Раскройте
Центральные серверы 1С:Предприятия → <сервер> → Кластеры → <кластер> → Информационные базы → <база> → Сеансы. - Выделите сеанс пользователя. Можно выделить несколько.
- Правой кнопкой мыши — «Удалить».
- Подтвердите действие.
Сеанс исчезнет из списка, лицензия освободится сразу.
Блокировка начала сеансов в консоли
В свойствах информационной базы (правая кнопка на базе → «Свойства») есть блок параметров блокировки:
- ✅ «Блокировка начала сеансов включена»;
- 🕒 начало и конец блокировки;
- 💬 сообщение для пользователей;
- 🔑 код разрешения — тот же, что передаётся через
/UC; - ⏸ «Блокировка регламентных заданий включена».
Для изменения свойств консоль запросит логин и пароль администратора информационной базы, а не только кластера.
Флажок блокировки в консоли не закрывает уже открытые сеансы. Он только запрещает новые. Действующие сеансы удалите вручную, как описано выше.
Если консоль не открывается
Типичная причина — оснастка не зарегистрирована после установки или обновления платформы. Регистрация выполняется из командной строки от имени администратора:
regsvr32 "C:\Program Files\1cv8\8.3.24.1548\bin\radmin.dll"
Номер версии в пути подставьте свой. После этого откройте файл консоли 1CV8 Servers.msc заново.
Утилита rac: то же из командной строки
Если оснастки нет или нужна автоматизация, используйте rac вместе с запущенной службой ras. Последовательность такая:
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 infobase.
Как закрыть пользователя в файловой базе 1С
В файловом варианте нет менеджера кластера. Каждый клиент работает с файлом 1Cv8.1CD напрямую. Поэтому «удалить сеанс» извне нельзя — можно только закрыть программу у пользователя.
Порядок действий, от мягкого к жёсткому:
- Блокировка работы пользователей (БСП). Клиенты периодически проверяют её и сами завершают работу. Срабатывает, если программа у пользователя не зависла.
- Закрытие программы на рабочем месте. Попросите сотрудника выйти или подключитесь к его компьютеру удалённо.
- Завершение процесса. На компьютере пользователя или терминальном сервере снимите процесс
1cv8c.exe(тонкий клиент) или1cv8.exe(толстый клиент и Конфигуратор). - Закрытие открытого файла на сервере. Если база лежит в общей папке Windows, откройте на файловом сервере
compmgmt.msc → Общие папки → Открытые файлы. Найдите1Cv8.1CDу нужного пользователя и закройте файл.
Команда для терминального сервера, если известен ID процесса:
tasklist /FI "IMAGENAME eq 1cv8c.exe" /V
taskkill /PID 4812 /F
Снятие процесса и закрытие файла — аварийные меры. Пользователь потеряет несохранённые данные, а если в этот момент шла запись, база может потребовать тестирования и исправления. Делайте это, только когда сотрудник недоступен, и предупредите всех, кто работает на этом терминальном сервере.
На терминальном сервере удобнее завершить не процесс, а весь сеанс Windows пользователя через «Диспетчер задач → Пользователи». Но это закроет и другие его программы.
Когда файловую базу пора переводить на сервер
Если вы закрываете пользователей вручную каждую неделю, это сигнал. Файловый вариант рассчитан на небольшую команду. При 10–15 одновременных пользователях и регулярных обновлениях клиент-серверный вариант снимает большую часть проблем: появляется консоль, удаление сеансов и блокировка без беготни по кабинетам.
Автоматическое завершение сеансов: обработки и скрипты
Ручное отключение неудобно, когда обновление идёт ночью. Есть три рабочих подхода.
| Способ | Где работает | Плюсы | Минусы |
|---|---|---|---|
Пакетный файл с rac | Клиент-сервер | Не нужна 1С на машине запуска, легко ставится в планировщик | Нужна служба ras |
| Внешняя обработка через COMConnector | Клиент-сервер | Логика на языке 1С, можно фильтровать по пользователю | Регистрация comcntr.dll, разрядность должна совпадать |
| Блокировка БСП с отложенным стартом | Оба варианта | Без кода, с предупреждением пользователей | Зависший клиент не закроется |
Внешняя обработка через COMConnector
Ниже пример, который завершает все сеансы указанной базы, кроме фоновых заданий. Код выполняется на клиенте под Windows, где зарегистрирован comcntr.dll той же версии, что и сервер.
Процедура ЗавершитьСеансыБазы(ИмяСервера, ИмяБазы, АдминКластера, ПарольКластера) Экспорт
Коннектор = Новый COMОбъект("V83.COMConnector");
Агент = Коннектор.ConnectAgent("tcp://" + ИмяСервера + ":1540");
Кластеры = Агент.GetClusters();
Для Каждого Кластер Из Кластеры Цикл
Агент.Authenticate(Кластер, АдминКластера, ПарольКластера);
Базы = Агент.GetInfoBases(Кластер);
Для Каждого База Из Базы Цикл
Если НРег(База.Name) <> НРег(ИмяБазы) Тогда
Продолжить;
КонецЕсли;
Сеансы = Агент.GetInfoBaseSessions(Кластер, База);
Для Каждого Сеанс Из Сеансы Цикл
Если Сеанс.AppID = "BackgroundJob" Тогда
Продолжить;
КонецЕсли;
Сообщить("Завершаю сеанс " + Формат(Сеанс.SessionID, "ЧГ=0")
+ ": " + Сеанс.UserName + " (" + Сеанс.Host + ")");
Агент.TerminateSession(Кластер, Сеанс);
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
Чтобы оставить свой сеанс, добавьте проверку Сеанс.SessionID против НомерСеансаИнформационнойБазы().
Если Новый COMОбъект("V83.COMConnector") падает с ошибкой создания объекта, зарегистрируйте компоненту командой regsvr32 "C:\Program Files\1cv8\<версия>\bin\comcntr.dll" от имени администратора. Разрядность 1С и зарегистрированной библиотеки должна совпадать.
Ночной сценарий для планировщика
Типовая схема автоматического обновления выглядит так:
- В 22:50 включить блокировку начала сеансов и регламентных заданий.
- В 23:00 завершить все оставшиеся сеансы базы.
- Выгрузить резервную копию и запустить обновление в пакетном режиме Конфигуратора с
/UC. - Снять блокировку после успешного завершения.
Что делать, если сеанс не закрывается
Бывает, что сеанс удалили, а он снова появляется в списке или висит с прежним номером.
Перезагрузка службы «Агент сервера 1С:Предприятия» — крайняя мера. Она закрывает все сеансы всех баз кластера одновременно. Применяйте её только когда остальные способы не сработали и только в согласованное окно.
Частые вопросы
Освобождается ли лицензия после принудительного закрытия сеанса?
Можно ли закрыть только одного пользователя, а не всех?
Узнает ли пользователь, что его отключили?
Чем блокировка в консоли отличается от блокировки в программе?
/UC.Нужен ли монопольный режим, чтобы просто поработать в Конфигураторе?
.dt, тестирования и исправления. Для просмотра конфигурации или выгрузки файла закрывать пользователей не обязательно.