Зависший сеанс мешает обновлению: отключаем пользователей 1С от мягкого способа к жёсткому

· 9 мин

Содержание

Принудительно выкинуть пользователя из 1С проще всего из самой программы: Администрирование → Обслуживание → Активные пользователи, выделить строку и нажать «Завершить сеанс». Если база клиент-серверная, тот же сеанс удаляется в Консоли администрирования серверов: ветка базы → «Сеансы» → правой кнопкой → «Удалить».

Остальные способы нужны, когда эти не сработали: файловая база на общей папке, зависший рабочий процесс, сеанс, который не исчезает из списка. Ниже они идут от безопасного к радикальному. Чем ниже по списку, тем выше риск потерять несохранённые данные.

С чего начать: режим базы и выбор способа

Сначала поймите, где лежит база. От этого зависит, какие инструменты вообще доступны.

  • 📁 Файловая — в строке подключения путь к папке (File="D:\Bases\Buh"). Сервера 1С нет, консоли кластера нет.
  • 🖥️ Клиент-серверная — строка вида Srvr="srv1c";Ref="buh". Есть кластер, консоль, утилита rac и СУБД.

Узнать режим можно в окне запуска: выделите базу, внизу показана строка подключения. Внутри программы — через меню «Справка → О программе».

СпособРежим базыКогда применятьРиск
«Активные пользователи» → «Завершить сеанс»обаодин-два зависших сеансанизкий
Блокировка работы пользователейобанужно выгнать всех к обновлениюнизкий
Консоль кластера, удаление сеансаклиент-сервериз 1С не получилосьсредний
rac session terminateклиент-серверскрипты, ночные регламентысредний
Закрытие открытых файлов, снятие процессовфайловыйбаза на общей папке «держится»высокий
Перезапуск службы, снятие rphostклиент-серверкластер не отвечаетвысокий, падают все базы
Обрыв соединений в СУБДклиент-сервертолько диагностика и крайний случайвысокий

Любое принудительное завершение обрывает работу человека. Документ, который он не записал, пропадёт. Если есть минута, позвоните или напишите пользователю и попросите выйти самостоятельно.

Как завершить сеанс пользователя из самой 1С

Этот путь работает в типовых конфигурациях на БСП: Бухгалтерия 3.0, ЗУП 3.1, УТ 11, КА, ERP. Нужны права администратора в базе.

Выкинуть одного пользователя

  1. Откройте Администрирование → Обслуживание.
  2. Перейдите по ссылке «Активные пользователи». Откроется список сеансов: пользователь, компьютер, приложение, время начала.
  3. Выделите нужную строку. Можно выделить несколько, удерживая Ctrl.
  4. Нажмите «Завершить сеанс».

В клиент-серверной базе программа может спросить имя и пароль администратора кластера. Это не пользователь базы, а учётная запись в Консоли администрирования серверов. Если администраторы кластера не заданы, поля оставляют пустыми.

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

Выгнать из 1С всех пользователей сразу

Когда нужно освободить базу целиком, например под обновление, удобнее блокировка:

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

Пользователи получат предупреждение, а затем программа завершит их сеансы. Новые входы будут запрещены до конца периода. Чтобы войти администратору, в окне запуска добавьте к параметрам запуска /UCobnov7 (поле «Дополнительные параметры запуска» в настройках базы).

Тот же механизм можно вызвать без интерфейса, параметром запуска:

"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /S"srv1c\buh" /N"Администратор" /P"пароль" /C"ЗавершитьРаботуПользователей" /UC"obnov7"

Снять блокировку после работ — параметр /C"РазрешитьРаботуПользователей" с тем же кодом /UC.

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

Что у вас случилось?

Принудительное отключение пользователей через Консоль администрирования серверов

Консоль нужна, если в базе нет БСП, сама 1С не открывается или сеанс не удаляется из формы «Активные пользователи».

Удалить сеанс в консоли

  1. Запустите «Администрирование серверов 1С Предприятия» на сервере или на машине администратора.
  2. Раскройте: Central 1C:Enterprise 8.3 servers → <сервер> → Кластеры → <кластер> → Информационные базы → <база> → Сеансы.
  3. Найдите пользователя по колонкам «Пользователь», «Компьютер», «Приложение».
  4. Правая кнопка → «Удалить». Можно выделить несколько сеансов.

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

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

Запретить новые входы на время работ

Удаление сеанса не мешает человеку сразу зайти снова. Чтобы этого не было, откройте свойства базы в консоли и заполните:

  • ✅ «Блокировка начала сеансов включена»;
  • 🕒 начало и окончание блокировки;
  • 💬 сообщение о блокировке;
  • 🔑 код разрешения — тот же принцип, что и /UC;
  • ⛔ «Блокировка регламентных заданий включена» — чтобы фоновые задания не стартовали заново.

После этого удаляйте сеансы: новые не появятся до конца периода.

Завершение сеансов из командной строки: rac

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

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

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

rem 3. Завершить конкретный сеанс
rac session terminate --cluster=<uuid-кластера> --session=<uuid-сеанса>

Если у кластера заданы администраторы, к командам добавляются --cluster-user и --cluster-pwd. Остальные параметры и фильтры смотрите в справке rac help session.

Файловая база: монопольный режим и файл блокировки

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

Шаг 1. Мягко: блокировка из 1С

Включите блокировку работы пользователей, как описано выше. Это единственный способ, который корректно закрывает чужие сеансы в файловом режиме.

Шаг 2. Найти, кто держит базу

Если блокировка не сработала (у пользователя завис клиент или выключен монитор с открытой модальной формой):

  • 🖥️ Терминальный сервер. Откройте Диспетчер задач → вкладка «Пользователи» или «Подробности». Найдите процессы 1cv8.exe и 1cv8c.exe нужного пользователя и снимите их.
  • 📂 База на общей папке. На компьютере, где лежит папка, откройте compmgmt.msc → «Общие папки» → «Открытые файлы». Найдите 1Cv8.1CD и закройте файл для конкретного пользователя.

Закрытие файла и снятие процесса — это обрыв на середине записи. Перед этим сделайте копию папки базы, если она ещё не открыта монопольно и копирование возможно.

Шаг 3. Файл блокировки

Рядом с 1Cv8.1CD лежит файл 1Cv8.1CL. Он отмечает, что база используется. Когда клиент падает аварийно, файл может остаться, и 1С сообщает, что база занята.

Удалять 1Cv8.1CL можно только когда точно никого нет: ни процессов 1cv8, ни открытых файлов в общей папке. Если файл не удаляется, значит его ещё держит живой процесс, вернитесь к шагу 2.

💡 Монопольный режим нужен не всегда. Он требуется для обновления структуры базы, загрузки .dt, тестирования и исправления. Обычный вход в Конфигуратор для просмотра базу не захватывает.

Радикальные меры: перезапуск службы и снятие процессов

Это вариант для клиент-серверной базы, когда консоль не отвечает или сеанс «застрял» и не удаляется.

Снять рабочий процесс rphost

Сеансы обслуживают рабочие процессы rphost.exe. В консоли кластера откройте ветку «Рабочие процессы» и посмотрите, сколько их и какой занимает больше памяти. В «Соединениях» нужной базы видно, через какой процесс работает проблемный сеанс.

Снятие процесса в Диспетчере задач оборвёт все сеансы, которые он обслуживает, включая другие базы. Кластер поднимет новый процесс автоматически.

Перезапустить службу агента

  1. Откройте services.msc.
  2. Найдите службу «Агент сервера 1С:Предприятия 8.3» (в названии может стоять разрядность и версия).
  3. Нажмите «Перезапустить».

На Linux то же делается через systemctl restart для юнита сервера 1С вашей версии.

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

Если после перезапуска сеансы «призраки» возвращаются в список, администраторы чистят кэш кластера (папки snccntx* внутри каталога reg_1541). Это делается только при остановленной службе и с копией каталога. Файлы с настройками кластера и списком баз при этом не трогают.

Отключение пользователей на уровне SQL Server или PostgreSQL

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

MS SQL Server

Посмотреть, кто сейчас подключён к базе и кто кого блокирует:

SELECT s.session_id, s.host_name, s.program_name, s.login_name,
       r.blocking_session_id, r.wait_type, r.start_time
FROM sys.dm_exec_sessions s
LEFT JOIN sys.dm_exec_requests r ON r.session_id = s.session_id
WHERE s.database_id = DB_ID(N'buh');

Оборвать одно соединение — KILL 57; (номер из колонки session_id). Незавершённая транзакция откатится, в 1С пользователь увидит ошибку.

PostgreSQL

SELECT pid, usename, client_addr, state, query_start
FROM pg_stat_activity
WHERE datname = 'buh';

-- оборвать одно соединение
SELECT pg_terminate_backend(12345);

Команды вроде ALTER DATABASE ... SET SINGLE_USER WITH ROLLBACK IMMEDIATE рвут все соединения кластера 1С с базой. Сам кластер при этом считает сеансы живыми. Правильнее сначала завершить сеансы в консоли и включить блокировку, а СУБД трогать только для обслуживания самой базы данных.

Как не выгонять пользователей вручную каждый раз

Большинство «зависших» сеансов — люди, которые ушли домой с открытой программой. Это решается настройками.

Настроить один раз
Выполнено: 0 / 5

Пара пояснений к пунктам:

  • 😴 Спящие сеансы. Пассивный сеанс через заданное время «засыпает» и перестаёт держать лицензию. Если человек не вернулся, сеанс завершается по второму таймауту. Значения подбирайте под режим работы офиса: слишком короткий таймаут раздражает бухгалтеров, которые надолго ушли в другую программу.
  • 🗓️ Регламентные задания. Обмен с сайтом или банком в 3 часа ночи откроет фоновый сеанс прямо во время обновления. Блокируйте их на время работ или сдвигайте расписание.
  • 📜 Скрипт обслуживания. Связка «блокировка → ожидание → обновление → снятие блокировки» в .bat с параметрами /C и /UC убирает ручную работу и ночные звонки.

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

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