Пользователь не выходит из базы, а нужно обновляться: все способы отключить сеансы 1С
Содержание
Принудительно завершить сеанс пользователя
в 1С 8.3 проще всего так: в клиент-серверной базе — через консоль администрирования серверов (узел Сеансы → правой кнопкой по сеансу → Удалить) или командой rac session terminate; в файловой базе — закрыть процесс 1cv8.exe/1cv8c.exe у пользователя или сбросить открытый файл 1Cv8.1CD на сетевой папке. Если пользователей много, надёжнее включить блокировку сеансов: программа сама предупредит всех и закроет базу к назначенному времени.
Типичная ситуация: вечер, нужно накатить обновление, а в списке активных пользователей висит бухгалтер, который ушёл домой с открытым отчётом. Конфигуратор отказывается обновлять структуру, дозвониться до человека нельзя. Способов выкинуть пользователя из 1С несколько, от мягкого к жёсткому.
Подготовка: кого отключаем и что потеряет пользователь
Сеанс, завершённый принудительно, обрывается сразу. Всё, что пользователь не записал, пропадает: открытый документ, набранные строки, несохранённые настройки отчёта. Проведённые и записанные данные остаются в базе.
Перед отключением проверьте три вещи:
- 👤 Кто именно в базе. В Конфигураторе:
Администрирование → Активные пользователи. Здесь видно имя, компьютер, время начала и приложение (тонкий клиент, Конфигуратор, фоновое задание). Завершить сеанс из этого окна нельзя — только посмотреть. - 🕐 Не идёт ли длительная операция. Закрытие месяца , загрузка из банка, обмен с другой базой. Обрыв посреди обмена может оставить данные в недогруженном виде, и обмен придётся повторять.
- ⚙️ Нужен ли вообще монопольный режим. Он требуется для обновления структуры базы, загрузки
.dt, тестирования и исправления. Для изменения прав или перезапуска регламентного задания выгонять всех не обязательно.
Если есть хотя бы 10–15 минут, предупредите людей заранее: блокировка из следующего раздела сама покажет им сообщение и закроет программу по таймеру.
Как завершить сеанс пользователя в самой 1С: монитор и блокировка
В типовых конфигурациях на Библиотеке стандартных подсистем (БП 3.0, ЗУП 3.1, УТ 11, КА, ERP) есть два штатных инструмента. Оба открываются из раздела Администрирование, обычно через группу Обслуживание.
Список активных пользователей с командой завершения
Форма «Активные пользователи» в режиме 1С:Предприятие показывает те же сеансы, что и Конфигуратор, но позволяет их завершать:
- Откройте
Администрирование → Обслуживаниеи найдите ссылку «Активные пользователи». - Выделите строку нужного сеанса.
- Выберите в командной панели «Завершить сеанс».
- Для клиент-серверной базы программа спросит логин и пароль администратора кластера, если он задан. Без этого пароля сеанс не завершится.
Файловую базу этот способ не обслуживает: там нет кластера, которому можно отдать команду. Для файлового варианта переходите к разделу про сетевые папки и RDP.
Блокировка работы пользователей
Это самый вежливый способ выгнать из 1С всех сразу. Программа блокирует новые входы и разлогинивает текущих по расписанию.
- В
Администрирование → Обслуживаниеоткройте «Блокировка работы пользователей». - Заполните сообщение: «Обновление базы, вход откроется в 21:00».
- Укажите время начала и окончания блокировки.
- Задайте код разблокировки — например,
UPDATE2. - Нажмите «Установить блокировку».
За несколько минут до начала блокировки пользователи увидят предупреждение. В момент начала их сеансы закроются, новые входы будут отклонены.
Сами вы заходите с параметром запуска /UC, указав код без пробела:
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /S"srv1c\buh" /UCUPDATE2
Для Конфигуратора параметр тот же: добавьте /UCUPDATE2 в строку дополнительных параметров запуска базы в окне выбора баз.
Если клиент пользователя завис или компьютер ушёл в сон, программа его не закроет: команда на завершение выполняется на стороне клиента. Такие «призраки» добиваются через консоль кластера или rac.
Как выкинуть пользователя из 1С через консоль кластера серверов
Для клиент-серверной базы это основной инструмент администратора. Консоль работает через агент сервера (порт 1540), поэтому её можно открыть с любой машины, где установлен сервер или компоненты администрирования.
- Запустите «Администрирование серверов 1С Предприятия».
- Раскройте
Центральные серверы 1С:Предприятия → <ваш сервер> → Кластеры → <кластер> → Информационные базы → <база> → Сеансы. - Справа — список сеансов: пользователь, компьютер, приложение, время начала и последней активности.
- Выделите один или несколько сеансов (Shift, Ctrl), нажмите правой кнопкой →
Удалить. - Подтвердите. У пользователя появится сообщение о разрыве соединения.
Если кластер защищён, консоль запросит логин и пароль администратора кластера при раскрытии узла.
Запрет новых входов из консоли
Удалённый пользователь может тут же зайти снова. Чтобы этого не случилось, откройте свойства информационной базы (правой кнопкой по базе → Свойства) и заполните:
| Поле | Что указать |
|---|---|
| Блокировка начала сеансов включена | Флажок |
| Начало / Конец | Интервал работ, например 20:00–21:00 |
| Сообщение о блокировке | Текст, который увидит пользователь при входе |
| Код разрешения | Код для входа с ключом /UC |
Это та же блокировка, что ставит программа из раздела «Администрирование», только на уровне кластера. Она работает и тогда, когда сама конфигурация не открывается.
Сеансы с приложением «Фоновое задание» лучше не удалять вслепую. Сначала отключите регламентные задания (флажок «Блокировка регламентных заданий включена» в тех же свойствах базы), затем удалите оставшиеся фоновые сеансы.
Принудительное завершение сеансов командой rac: скрипт на все сеансы базы
Когда базу нужно закрывать по расписанию, например перед ночным бэкапом, консоль неудобна. Её заменяет утилита командной строки rac в связке с сервером администрирования ras.
ras должен быть запущен — как служба или вручную. По умолчанию он слушает порт 1545:
"C:\Program Files\1cv8\<версия>\bin\ras.exe" cluster --port=1545 localhost:1540
Дальше по шагам.
Шаг 1. Получаем список сеансов
Сначала узнайте идентификатор кластера, затем выведите сеансы:
rac cluster list
rac session list --cluster=<uuid-кластера>
Каждый сеанс выводится блоком строк. Нам нужны поля session (идентификатор), infobase, user-name, host и app-id. Если кластер защищён, добавляйте к командам --cluster-user=<логин> --cluster-pwd=<пароль>.
Шаг 2. Извлекаем ID сеансов нужной базы
Чтобы не задеть соседние базы, ограничьте список одной информационной базой. Её идентификатор берётся из rac infobase summary list --cluster=<uuid> — по полю name. Потом передайте его в --infobase=<uuid-базы> команды session list.
Шаг 3. Завершаем каждый сеанс
Команда завершения одного сеанса:
rac session terminate --cluster=<uuid-кластера> --session=<uuid-сеанса>
Собранный скрипт для Linux (rac и ras на одной машине, база называется buh):
#!/bin/bash
# Завершает все сеансы базы buh, кроме сеансов Конфигуратора
RAC="/opt/1cv8/x86_64/<версия>/rac"
BASE="buh"
AUTH="--cluster-user=admin --cluster-pwd=secret" # убрать, если кластер без администратора
CL=$($RAC cluster list | awk '$1=="cluster"{print $3; exit}')
IB=$($RAC infobase summary list --cluster=$CL $AUTH \
| awk -v n="$BASE" '$1=="infobase"{id=$3} $1=="name" && $3==n{print id}')
$RAC session list --cluster=$CL --infobase=$IB $AUTH \
| awk '$1=="session"{s=$3} $1=="app-id" && $3!="Designer"{print s}' \
| while read S; do
echo "Завершаю сеанс $S"
$RAC session terminate --cluster=$CL --session=$S $AUTH
done
Как это работает:
- 🔎 первый
awkберёт первый кластер из списка; - 🗂️ второй находит идентификатор базы по имени;
- ✂️ третий собирает сеансы базы и пропускает Конфигуратор (
app-id=Designer), чтобы скрипт не выбил администратора; - 🔁 цикл завершает сеансы по одному.
На Windows логика та же. rac.exe лежит в каталоге bin установленной версии платформы, а разбор вывода удобно сделать в PowerShell через Select-String. Пароль администратора кластера не храните в скрипте открытым текстом на общей папке.
Если rac отвечает ошибкой подключения, проверьте, что ras запущен и порт 1545 открыт. Синтаксис и список параметров для вашей версии выводит rac help session.
Как выгнать пользователя из файловой базы: RDP, диспетчер задач, открытые файлы
У файловой базы нет сервера, который ведёт сеансы. Пользователь «в базе», пока его процесс 1С держит открытым файл 1Cv8.1CD. Значит, отключать нужно процесс или файл.
База на терминальном сервере
Если все работают через удалённый рабочий стол, всё решается на одном сервере:
- Откройте диспетчер задач → вкладка «Пользователи».
- Раскройте пользователя и найдите процесс 1С («1С:Предприятие»).
- Правой кнопкой → «Снять задачу». Или по пользователю целиком → «Выйти», если сеанс Windows ему больше не нужен.
То же из командной строки:
query session
logoff 3
taskkill /F /IM 1cv8c.exe /FI "USERNAME eq ivanova"
query session показывает номер сеанса Windows, logoff закрывает его целиком. Последняя команда снимает только тонкий клиент у одного пользователя. Толстый клиент и Конфигуратор работают процессом 1cv8.exe.
База в сетевой папке
Если база лежит на файловом сервере, а 1С запускается на компьютерах сотрудников, процесс у пользователя вам недоступен. Зато сервер видит, кто держит файл:
- На файловом сервере откройте
Управление компьютером → Общие папки → Открытые файлы. - Найдите строку с путём к
1Cv8.1CDи имя пользователя. - Правой кнопкой → «Закрыть открытый файл».
Командная строка на том же сервере:
net file | findstr /I 1Cv8.1CD
net file 15 /close
Где 15 — идентификатор из первой колонки вывода net file.
Закрытие файла посреди записи может повредить файловую базу. Делайте это, только когда пользователь точно не проводит документы, и после свежей резервной копии. Если после такого отключения база не открывается, запустите «Тестирование и исправление» в Конфигураторе.
Что можно и чего нельзя на уровне СУБД: MS SQL и PostgreSQL
На уровне SQL сеанса 1С не существует. Рабочий процесс сервера 1С держит пул соединений с СУБД, и одно соединение обслуживает разных пользователей по очереди. Поэтому KILL на MS SQL или pg_terminate_backend на PostgreSQL пользователя не отключит.
Что произойдёт на деле:
- ❌ оборвётся соединение рабочего процесса, и транзакция, которая шла в нём, откатится;
- ❌ пользователь получит ошибку СУБД, а его сеанс 1С останется в кластере;
- ❌ при неудачном выборе соединения ошибку получат и другие люди.
Когда SQL всё-таки уместен: долгая транзакция держит блокировку, и найти её через консоль 1С не получается. В MS SQL смотрите sys.dm_exec_requests по колонке blocking_session_id. В PostgreSQL — представление pg_stat_activity и функцию pg_blocking_pids(). Даже в этом случае сначала попробуйте завершить сеанс 1С, который запустил операцию.
Перевод базы MS SQL в однопользовательский режим (ALTER DATABASE ... SET SINGLE_USER WITH ROLLBACK IMMEDIATE) для обновления 1С не нужен и вреден. Кластер 1С перестанет подключаться к базе, а монопольный режим 1С от этого не появится.
Крайние меры: перезапуск рабочего процесса и службы 1С
Если сеанс не удаляется из консоли, висит со статусом активного и не реагирует, остаётся перезапуск.
| Действие | Что оборвётся | Когда допустимо |
|---|---|---|
Завершить один rphost в консоли (узел «Рабочие процессы») | Все сеансы на этом процессе, в том числе других баз | Нерабочее время, если процессов несколько |
| Перезапуск службы агента сервера 1С | Все сеансы всех баз кластера | Окно обслуживания, после предупреждения |
| Перезагрузка сервера | Всё, включая СУБД на этой машине | Только если служба не останавливается |
На Windows служба называется «Агент сервера 1С:Предприятия 8.3» с указанием разрядности. Перезапуск — через services.msc. На Linux имя юнита зависит от версии платформы: найдите его командой systemctl list-units | grep -i 1c и перезапустите через systemctl restart.
Перезапуск службы выкидывает всех пользователей всех баз сервера без предупреждения. Делайте это вне рабочего времени и только после неудачных попыток через консоль и rac.
Конфигуратор сам предлагает завершить сеансы
В актуальных версиях платформы при обновлении конфигурации базы данных с активными пользователями Конфигуратор не просто выдаёт ошибку монопольного режима. Он показывает список сеансов и кнопку «Завершить сеансы и повторить». Для клиент-серверной базы это быстрее, чем открывать консоль, но пользователи потеряют несохранённые данные так же, как при удалении из консоли.
Веб-клиент, мобильные приложения и зависшие сеансы
Сеанс веб-клиента живёт на сервере 1С, а не в браузере. Если сотрудник просто закрыл вкладку, сеанс какое-то время остаётся в списке. Удаляется он так же, как обычный: консоль кластера, rac или форма активных пользователей.
Мобильный клиент работает как тонкий клиент: его сеанс тоже виден в консоли и удаляется оттуда. Автономное мобильное приложение с базой на телефоне сеанса на сервере не держит — оно подключается только на время синхронизации.
Почему сеансы «зависают» и как настроить тайм-ауты
Если ноутбук потерял сеть, сеанс переходит в спящий режим: в консоли у него стоит признак спящего сеанса. Спящий сеанс ждёт возвращения клиента и через заданное время завершается сам.
Интервалы задаются в Конфигураторе: Администрирование → Параметры информационной базы. Нужные поля:
- 💤 время засыпания пассивного сеанса — через сколько секунд без связи сеанс засыпает;
- ⏹️ время завершения спящего сеанса — через сколько секунд спящий сеанс закрывается окончательно.
Уменьшите второе значение, если зависшие сеансы мешают ночным регламентам и обновлениям. Слишком короткий интервал навредит тем, у кого нестабильный интернет: они будут терять работу при каждом обрыве связи.
Для файловой базы тайм-аутов нет. Защита от «забытых» сеансов там организационная: блокировка работы пользователей перед регламентом и закрытие 1С при выходе из терминального сеанса.