Пользователь не выходит из базы, а нужно обновляться: все способы отключить сеансы 1С

· 11 мин

Содержание

Принудительно завершить сеанс пользователя в 1С 8.3 проще всего так: в клиент-серверной базе — через консоль администрирования серверов (узел Сеансы → правой кнопкой по сеансу → Удалить) или командой rac session terminate; в файловой базе — закрыть процесс 1cv8.exe/1cv8c.exe у пользователя или сбросить открытый файл 1Cv8.1CD на сетевой папке. Если пользователей много, надёжнее включить блокировку сеансов: программа сама предупредит всех и закроет базу к назначенному времени.

Типичная ситуация: вечер, нужно накатить обновление, а в списке активных пользователей висит бухгалтер, который ушёл домой с открытым отчётом. Конфигуратор отказывается обновлять структуру, дозвониться до человека нельзя. Способов выкинуть пользователя из 1С несколько, от мягкого к жёсткому.

Подготовка: кого отключаем и что потеряет пользователь

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

Перед отключением проверьте три вещи:

  • 👤 Кто именно в базе. В Конфигураторе: Администрирование → Активные пользователи. Здесь видно имя, компьютер, время начала и приложение (тонкий клиент, Конфигуратор, фоновое задание). Завершить сеанс из этого окна нельзя — только посмотреть.
  • 🕐 Не идёт ли длительная операция. Закрытие месяца , загрузка из банка, обмен с другой базой. Обрыв посреди обмена может оставить данные в недогруженном виде, и обмен придётся повторять.
  • ⚙️ Нужен ли вообще монопольный режим. Он требуется для обновления структуры базы, загрузки .dt, тестирования и исправления. Для изменения прав или перезапуска регламентного задания выгонять всех не обязательно.

Если есть хотя бы 10–15 минут, предупредите людей заранее: блокировка из следующего раздела сама покажет им сообщение и закроет программу по таймеру.

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

В типовых конфигурациях на Библиотеке стандартных подсистем (БП 3.0, ЗУП 3.1, УТ 11, КА, ERP) есть два штатных инструмента. Оба открываются из раздела Администрирование, обычно через группу Обслуживание.

Список активных пользователей с командой завершения

Форма «Активные пользователи» в режиме 1С:Предприятие показывает те же сеансы, что и Конфигуратор, но позволяет их завершать:

  1. Откройте Администрирование → Обслуживание и найдите ссылку «Активные пользователи».
  2. Выделите строку нужного сеанса.
  3. Выберите в командной панели «Завершить сеанс».
  4. Для клиент-серверной базы программа спросит логин и пароль администратора кластера, если он задан. Без этого пароля сеанс не завершится.

Файловую базу этот способ не обслуживает: там нет кластера, которому можно отдать команду. Для файлового варианта переходите к разделу про сетевые папки и RDP.

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

Это самый вежливый способ выгнать из 1С всех сразу. Программа блокирует новые входы и разлогинивает текущих по расписанию.

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

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

Сами вы заходите с параметром запуска /UC, указав код без пробела:

"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /S"srv1c\buh" /UCUPDATE2

Для Конфигуратора параметр тот же: добавьте /UCUPDATE2 в строку дополнительных параметров запуска базы в окне выбора баз.

Если клиент пользователя завис или компьютер ушёл в сон, программа его не закроет: команда на завершение выполняется на стороне клиента. Такие «призраки» добиваются через консоль кластера или rac.

Как выкинуть пользователя из 1С через консоль кластера серверов

Для клиент-серверной базы это основной инструмент администратора. Консоль работает через агент сервера (порт 1540), поэтому её можно открыть с любой машины, где установлен сервер или компоненты администрирования.

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

Если кластер защищён, консоль запросит логин и пароль администратора кластера при раскрытии узла.

Запрет новых входов из консоли

Удалённый пользователь может тут же зайти снова. Чтобы этого не случилось, откройте свойства информационной базы (правой кнопкой по базе → Свойства) и заполните:

ПолеЧто указать
Блокировка начала сеансов включенаФлажок
Начало / КонецИнтервал работ, например 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. Откройте диспетчер задач → вкладка «Пользователи».
  2. Раскройте пользователя и найдите процесс 1С («1С:Предприятие»).
  3. Правой кнопкой → «Снять задачу». Или по пользователю целиком → «Выйти», если сеанс Windows ему больше не нужен.

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

query session
logoff 3
taskkill /F /IM 1cv8c.exe /FI "USERNAME eq ivanova"

query session показывает номер сеанса Windows, logoff закрывает его целиком. Последняя команда снимает только тонкий клиент у одного пользователя. Толстый клиент и Конфигуратор работают процессом 1cv8.exe.

База в сетевой папке

Если база лежит на файловом сервере, а 1С запускается на компьютерах сотрудников, процесс у пользователя вам недоступен. Зато сервер видит, кто держит файл:

  1. На файловом сервере откройте Управление компьютером → Общие папки → Открытые файлы.
  2. Найдите строку с путём к 1Cv8.1CD и имя пользователя.
  3. Правой кнопкой → «Закрыть открытый файл».

Командная строка на том же сервере:

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С при выходе из терминального сеанса.

Перед ночным обновлением базы
Выполнено: 0 / 5

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

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