Завершаем чужой сеанс в базе 1С: файловый и серверный вариант
Содержание
Выгнать пользователя из
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 и другие) есть встроенный механизм:
- Откройте
Администрирование → Обслуживание, ссылку «Блокировка работы пользователей». - Напишите сообщение, которое увидят пользователи: например, «Обновление базы, вернёмся в 13:30».
- Укажите время начала и окончания блокировки.
- Задайте код разрешения — с ним вы сами сможете зайти в заблокированную базу.
- Нажмите кнопку установки блокировки.
Пользователи получат предупреждение, а через несколько минут программа у них закроется. Это корректный выход: клиент сам завершает работу, данные не бьются.
Чтобы войти при действующей блокировке, добавьте код к параметрам запуска:
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F"D:\Bases\Buh" /N"Администратор" /P"пароль" /UC1234
Где 1234 — ваш код разрешения.
Тот же механизм можно запустить без интерфейса: параметр /C"ЗавершитьРаботуПользователей" включает блокировку и выгоняет всех, а /C"РазрешитьРаботуПользователей" снимает её. Удобно для ночных скриптов обновления.
Способ 2. Закрыть сетевой файл базы на сервере
Если у пользователя зависла программа или он ушёл домой с открытой 1С, блокировка БСП может не сработать: зависший клиент не выполняет проверку и не закрывается. Тогда идём на компьютер, где лежит папка с базой.
Через графический интерфейс:
- Откройте
Управление компьютером → Общие папки → Открытые файлы. - Найдите строки с путём к
1Cv8.1CD. В колонке «Пользователь» видно, чья это сессия. - Правой кнопкой — «Закрыть открытый файл».
Через командную строку (от имени администратора):
net file
net file 47 /close
Первая команда выводит список открытых файлов с номерами, вторая закрывает файл с номером 47. Номер берёте из списка.
Если пользователь в момент закрытия записывал документ, база может получить повреждение. Делайте это, когда человек точно не работает, и после операции запустите тестирование и исправление.
Способ 3. Терминальный сервер
Если 1С запускается на терминальном сервере, откройте Диспетчер задач на нём, вкладку «Пользователи». Там видно сеансы Windows. Выберите процесс 1cv8c.exe или 1cv8.exe нужного пользователя и снимите задачу. Отключать сеанс Windows целиком (выход из системы) — крайняя мера: закроются все его программы, не только 1С.
Отключение сеансов в клиент-серверной базе через консоль кластера
Для серверного варианта есть штатный инструмент — консоль «Администрирование серверов 1С:Предприятия». Она ставится вместе с сервером 1С и открывается как оснастка MMC.
Порядок:
- Запустите консоль. Если она пустая, добавьте центральный сервер: имя хоста и порт агента
1540. - Разверните
Кластеры → <кластер> → Информационные базы → <нужная база> → Сеансы. - Найдите пользователя по колонкам «Пользователь» и «Компьютер».
- Правой кнопкой по сеансу — «Удалить». Подтвердите.
Сеанс завершится сразу. Пользователь увидит сообщение о разрыве соединения. Транзакция, которая шла в этот момент, откатится целиком, поэтому повреждения данных не будет — пропадёт только то, что человек не успел записать.
Если консоль не открывается и пишет про незарегистрированный компонент, перерегистрируйте библиотеку консоли от имени администратора: 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–2 минуты после удаления. Сеанс с долгим серверным вызовом завершается, только когда вызов прервётся.
- Прервите текущий серверный вызов. У
rac sessionесть отдельная команда для прерывания вызова; точный синтаксис посмотрите вrac help session. - Посмотрите рабочий процесс. В консоли в узле «Рабочие процессы» видно, какой
rphostобслуживает сеанс, его PID и загрузку. - Завершите процесс
rphostв Диспетчере задач по PID. - Перезапустите службу «Агент сервера 1С:Предприятия 8.3».
Шаги 4 и 5 обрывают сеансы всех пользователей, которых обслуживал этот процесс, а перезапуск службы — всех пользователей всех баз на сервере. Делайте это только в нерабочее время или после рассылки предупреждения. Транзакции откатятся, но несохранённые документы у людей пропадут.
На уровне СУБД (KILL в MS SQL, pg_terminate_backend в PostgreSQL) сеансы 1С не завершают. Сервер 1С не узнает об этом, сеанс в консоли останется, а пользователь получит ошибку СУБД. Этот путь оставьте администратору СУБД для разбора блокировок.
Профилактика: чтобы выгонять приходилось реже
Большинство «вечных» сеансов — это забытые открытые окна и зависшие клиенты. Часть из них сервер может закрывать сам.
В свойствах информационной базы (клиент-серверный вариант):
- ⏲️ «Время засыпания пассивного сеанса» — через сколько секунд бездействия сеанс засыпает и перестаёт держать ресурсы сервера.
- ⏲️ «Время завершения спящего сеанса» — через сколько секунд спящий сеанс завершается совсем. Значение
0— не завершать никогда.
В свойствах кластера:
- ♻️ Интервал перезапуска рабочих процессов и допустимый объём памяти — процессы с утечками будут перезапускаться плавно, без обрыва сеансов.
- 🧯 «Принудительно завершать проблемные процессы» — сервер сам снимет процесс, который превысил лимиты.
Организационно:
- 📢 О плановых работах сообщайте заранее и включайте блокировку с текстом, а не удаляйте сеансы молча.
- 🔑 Код разрешения храните у двух человек: если один заболел, второй сможет зайти в заблокированную базу.
- 🕒 Обновления ставьте скриптом ночью: блокировка через
/C"ЗавершитьРаботуПользователей", обновление, снятие блокировки.