Завершение работы в 1С на сервере: от кнопки «Выход» до rac

· 10 мин

Содержание

Чтобы правильно выйти из сервера 1С, сначала закройте саму программу (≡ → Файл → Выход или Alt+F4), а уже потом завершайте сеанс Windows командой «Выйти», а не крестиком окна удалённого рабочего стола. Если сеанс «завис» у другого пользователя, его снимает администратор в консоли кластера или утилитой rac.

Типичная боль: человек закрыл окно RDP, ушёл домой, а утром лицензий не хватает и обновление не ставится — «в базе работают пользователи». Ниже пять способов выйти из сервера 1С или выгнать оттуда сеанс: от безопасного к радикальному. Всё описанное относится к платформе 8.3 в клиент-серверном варианте; где отличается файловый вариант — сказано отдельно.

1. Как выйти из 1С на сервере обычному пользователю

Выход из сервера — это две разные вещи: закрыть сеанс 1С и закрыть сеанс Windows на терминальном сервере. Делать нужно оба шага и именно в таком порядке.

Шаг 1. Закройте 1С

  1. Сохраните и закройте открытые документы. Непроведённый документ программа предложит записать.
  2. Откройте главное меню (кнопка ≡ слева вверху) и выберите Файл → Выход. Аналог — Alt+F4 в главном окне.
  3. Дождитесь, пока окно закроется полностью. Если на экране вопрос «Завершить работу с программой?», ответьте «Да».

💡 Если программа при закрытии долго «думает» — не снимайте её через диспетчер задач. Скорее всего, она дописывает настройки или ждёт окончания длительной операции. Подождите 1–2 минуты.

Шаг 2. Выйдите из Windows, а не «отключитесь»

На терминальном сервере (RDP, RemoteApp) крестик в заголовке окна удалённого рабочего стола не завершает сеанс. Он только отключает вас: сеанс переходит в состояние «Отключён», а запущенная 1С продолжает работать, держит лицензию и блокирует базу.

ДействиеЧто происходит с 1СЛицензия
Крестик окна RDP1С остаётся запущеннойзанята
Пуск → учётная запись → Выход1С закрывается вместе с сеансомосвобождается
Команда logoff в «Выполнить»то же, что «Выход»освобождается
Закрыть 1С, потом крестик RDP1С закрыта, сеанс Windows висит1С-лицензия свободна

Самый надёжный вариант для пользователя: закрыть 1С, затем нажать Win+R, ввести logoff и Enter.

Команда logoff закрывает все программы в вашем сеансе без вопросов. Несохранённый файл в Excel или Word пропадёт. Сначала сохраните всё открытое.

Если работаете в RemoteApp

Когда 1С открыта как отдельное окно (RemoteApp), выход из программы обычно сам завершает удалённый сеанс. Но если в том же сеансе висит ещё одно приложение, например окно печати, сеанс останется. Закройте все окна, а если не помогло — попросите администратора выполнить logoff.

2. Как завершить сеанс 1С через консоль администрирования серверов

Это основной инструмент администратора. Консоль показывает все сеансы кластера и позволяет удалить любой из них.

Подготовка консоли

Если консоль не открывается или пишет об ошибке компонента, зарегистрируйте radmin.dll той же версии, что и сервер. Командная строка от имени администратора:

regsvr32 "C:\Program Files\1cv8\8.3.24.1691\bin\radmin.dll"

Номер версии в пути подставьте свой. Разрядность консоли и DLL должна совпадать.

Пошагово

  1. Запустите «Администрирование серверов 1С Предприятия».
  2. Раскройте Центральные серверы 1С:Предприятия → имя сервера → Кластеры → кластер.
  3. Если на кластере задан администратор, введите его логин и пароль.
  4. Откройте Информационные базы → нужная база → Сеансы.
  5. Найдите сеанс по колонкам «Пользователь», «Компьютер», «Приложение», «Начало сеанса».
  6. Правой кнопкой по сеансу → Удалить. Подтвердите.

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

Как не снести лишнее

В списке сеансов есть не только живые люди. Колонка «Приложение» подскажет, кто есть кто:

  • 🖥️ Тонкий клиент, Толстый клиент, Веб-клиент — пользователи;
  • 🛠️ Конфигуратор — кто-то правит конфигурацию или выгружает базу;
  • ⚙️ Фоновое задание — регламентные задания: обмены, загрузка курсов, расчёты;
  • 🔌 COM-соединение, Веб-сервис, HTTP-сервис — внешние интеграции.

Удаление сеанса Конфигуратора во время обновления структуры базы может оставить базу в незавершённом состоянии. Удаление фонового задания посреди обмена — обрыв пакета, который придётся повторять.

Перед удалением сеанса «Конфигуратор» позвоните тому, кто его открыл. Компьютер и пользователь видны в той же строке.

Если нужно закрыть всех

Выделите все сеансы базы (Ctrl+A в списке) и удалите разом. Но люди тут же зайдут снова. Поэтому сначала включите блокировку начала сеансов: свойства базы в консоли → флажок «Блокировка начала сеансов включена», поля «Сообщение» и «Код разрешения». Подробнее о блокировке — в разделе про автоматизацию.

3. Отключение сеансов 1С из командной строки

Командная строка нужна, когда консоли под рукой нет, или вы работаете с Linux-сервера, или хотите вписать команды в скрипт.

Утилита rac

rac лежит в папке bin платформы и работает через сервер администрирования ras. Сервис ras должен быть запущен (по умолчанию слушает порт 1545). Разовый запуск:

cd "C:\Program Files\1cv8\8.3.24.1691\bin"
ras cluster --daemon

Дальше три команды:

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

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

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

Если на кластере задан администратор, к командам 2 и 3 добавьте --cluster-user=<логин> --cluster-pwd=<пароль>. Список сеансов можно сузить до одной базы параметром --infobase=<uuid-базы>; идентификатор базы покажет rac infobase summary list --cluster=<uuid-кластера>.

В выводе session list ищите поля user-name, host и app-id — это пользователь, компьютер и тип клиента. Остальные параметры смотрите в rac help session.

Средства Windows для терминального сервера

Если проблема не в 1С, а в «отключённых» сеансах Windows, их удобнее закрывать стандартными командами (от имени администратора):

:: Кто сейчас на сервере и в каком состоянии
quser

:: Завершить сеанс Windows с ID 3 (1С в нём закроется)
logoff 3

Состояние Диск (Disc) в выводе quser — это как раз пользователь, который закрыл окно крестиком.

logoff и rac session terminate обрывают работу человека без предупреждения. Делайте это вне рабочего времени или после звонка пользователю.

4. Можно ли выкинуть пользователя из 1С через SQL

Коротко: нет, и пытаться не нужно. В клиент-серверном варианте сеансы 1С живут в менеджере кластера, а не в таблицах базы данных. В MS SQL или PostgreSQL вы увидите только соединения рабочих процессов rphost, а не конкретных пользователей.

Что будет, если убить соединение на стороне СУБД (KILL в MS SQL, pg_terminate_backend в PostgreSQL):

  • ❌ пользователь из 1С не выйдет — его сеанс останется в кластере;
  • ❌ рабочий процесс получит ошибку СУБД, и пострадать могут сразу несколько пользователей, обслуживаемых этим процессом;
  • ❌ текущая транзакция откатится, обмен или закрытие месяца придётся повторять.

Где SQL всё-таки уместен: посмотреть, какое соединение держит долгую блокировку, чтобы потом найти и завершить нужный сеанс уже в консоли 1С. То есть SQL — для диагностики, а завершение — средствами кластера.

💡 В файловом варианте базы кластера нет. Там сеансы снимаются закрытием процессов 1С на компьютерах пользователей, а файл 1Cv8tmp.1CL в каталоге базы руками удалять не нужно: при открытой базе он занят, а после закрытия всех сеансов освобождается сам.

5. Автоматический выход пользователей из 1С по расписанию

Ночные регламенты — резервная копия, обновление, тестирование базы — требуют, чтобы в базе никого не было. Вручную каждый вечер это не делается.

Блокировка средствами конфигурации

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

Тот же механизм вызывается из командной строки, что удобно для планировщика:

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

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

Скрипт PowerShell на rac

Если конфигурация не на БСП, завершайте сеансы скриптом. Пример снимает все сеансы одной базы, кроме фоновых заданий:

$rac  = "C:\Program Files\1cv8\8.3.24.1691\bin\rac.exe"
$auth = @("--cluster-user=admin", "--cluster-pwd=secret")
$base = "buh"

$cluster = ((& $rac cluster list) | Select-String '^cluster\s*:\s*(\S+)').Matches[0].Groups[1].Value

$ibLines = & $rac infobase summary list --cluster=$cluster @auth
$ibId = $null
for ($i = 0; $i -lt $ibLines.Count; $i++) {
    if ($ibLines[$i] -match '^infobase\s*:\s*(\S+)') { $cur = $Matches[1] }
    if ($ibLines[$i] -match '^name\s*:\s*(\S+)' -and $Matches[1] -eq $base) { $ibId = $cur }
}
if (-not $ibId) { Write-Output "База $base не найдена"; exit 1 }

$sesLines = & $rac session list --cluster=$cluster --infobase=$ibId @auth
foreach ($line in $sesLines) {
    if ($line -match '^session\s*:\s*(\S+)') { $sid = $Matches[1] }
    if ($line -match '^app-id\s*:\s*(\S+)' -and $Matches[1] -ne 'BackgroundJob') {
        & $rac session terminate --cluster=$cluster --session=$sid @auth
    }
}

Скрипт опирается на порядок полей в выводе rac: строка session идёт раньше app-id. Проверьте его один раз вручную на тестовой базе, прежде чем ставить в расписание.

Запуск через «Планировщик заданий» Windows: действие powershell.exe, аргументы -ExecutionPolicy Bypass -File C:\scripts\kick1c.ps1, учётная запись с правами администратора, триггер — ежедневно, например в 23:00. Пароль администратора кластера в скрипте храните в файле с ограниченным доступом.

Таймауты, которые чистят «забытые» сеансы

  • ⏱️ В свойствах базы в консоли кластера — «Время засыпания пассивного сеанса» и «Время завершения спящего сеанса». Сеанс, где никто ничего не делает, сначала засыпает и отдаёт клиентскую лицензию, а потом завершается.
  • ⏱️ В групповой политике Windows — Конфигурация компьютера → Административные шаблоны → Компоненты Windows → Службы удалённых рабочих столов → Узел сеансов удалённых рабочих столов → Ограничение сеансов по времени. Параметр для отключённых сеансов закрывает их через заданное время, например 2 часа.

6. Выход из облачного сервера 1С

В облаке способ выхода зависит от того, как вы подключаетесь.

Как работаетеКак выйти правильноЧего не делать
1С в браузере (веб-клиент, сервисы вроде 1С:Фреш)≡ → Файл → Выход или кнопка выхода в интерфейсе сервисапросто закрывать вкладку
Арендованный терминальный сервер (RDP)закрыть 1С, затем logoffзакрывать окно RDP крестиком
Тонкий клиент к облачному кластеруФайл → Выходснимать процесс в диспетчере задач

При закрытой вкладке браузера сеанс веб-клиента не исчезает мгновенно: он остаётся в кластере, пока не сработает таймаут. В облаке у вас нет доступа к консоли кластера, поэтому «зависший» сеанс снимает либо администратор приложения через «Активные пользователи» (Администрирование → Обслуживание), либо поддержка провайдера.

💡 Если провайдер тарифицирует по числу одновременных сеансов, привычка закрывать вкладку вместо выхода прямо стоит денег: забытые сеансы занимают места до таймаута.

7. Аварийная ситуация: база занята, никто не признаётся

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

Освобождаем базу перед регламентом
Выполнено: 0 / 8

Если сеанс удалён, но снова появляется в списке, — это не призрак. Либо пользователь переподключился (блокировка не включена), либо его клиент сам восстанавливает соединение, либо это регламентное задание. Проверьте колонку «Приложение» и время начала сеанса.

Если сеанс не удаляется вообще, а рабочий процесс завис, крайняя мера — перезапуск службы «Агент сервера 1С:Предприятия 8.3».

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

8. Ошибки при завершении сеансов

  • 🔴 Удаляют сеанс посреди проведения документа. Транзакция откатывается, документ остаётся непроведённым. Человек может этого не заметить. После принудительного выхода попросите пользователя проверить последние документы.
  • 🔴 Снимают процесс 1cv8c.exe в диспетчере задач на сервере. Сеанс в кластере останется ещё на какое-то время, пока сервер не поймёт, что клиент пропал. Лицензия всё это время занята.
  • 🔴 Удаляют сеансы, не включив блокировку. Через минуту в базе снова 10 человек.
  • 🔴 Забывают снять блокировку. Утром никто не может войти, а сообщение блокировки висит с вечера. Ставьте в блокировке время окончания.
  • 🔴 Хранят пароль администратора кластера прямо в общем .bat на рабочем столе. Любой, кто откроет файл, получит полный доступ к кластеру.

9. Частые вопросы о выходе из сервера 1С

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