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

· 9 мин

Содержание

Правильно выйти из 1С 8.3 — значит закрыть программу через главное меню: Файл → Выход или сочетанием Alt+F4. Тогда платформа сохраняет настройки пользователя, завершает сеанс на сервере и сразу освобождает лицензию. Если человек просто выключил компьютер или программа «упала», сеанс остаётся висеть, держит лицензию и мешает обновлению. Его закрывают администратор в консоли кластера, утилитой rac или через блокировку информационной базы.

Способ выбирают по ситуации. Один пользователь вышел сам — хватает штатного выхода. Нужно выгнать одного-двух зависших — консоль кластера. Нужно освободить базу на ночь под обновление — блокировка начала сеансов. Регулярно, по расписанию — скрипт на rac. В файловой базе серверных инструментов нет, там свои приёмы.

Штатный выход из программы 1С пользователем

Самый безопасный вариант — закрыть все открытые документы и выйти через меню. Порядок такой:

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

Вопрос «Завершить работу с программой?» включается и отключается в Главное меню → Сервис → Параметры, флажок «Запрашивать подтверждение при закрытии программы». Новичкам его лучше оставить: он спасает от случайного закрытия по крестику.

💡 Если на экране висит длительная операция — закрытие месяца , загрузка из банка, формирование тяжёлого отчёта — дождитесь её окончания. Прерванная запись документа откатится целиком, но повторять операцию придётся заново.

Чем плох выход «через выключение компьютера»:

  • 🔒 сеанс на сервере живёт ещё какое-то время и держит лицензию — следующий пользователь может получить ошибку о нехватке лицензий;
  • ⚙️ при обновлении конфигурации администратор увидит «лишнего» пользователя и не сможет получить монопольный доступ;
  • 📝 не сохраняются последние изменения настроек: ширина колонок, отборы, избранное.

Кто сейчас в базе: смотрим активные сеансы

Прежде чем кого-то отключать, посмотрите, кто реально работает. Сделать это можно тремя способами.

Из самой программы. Главное меню → Функции для технического специалиста → Стандартные → Активные пользователи. Список показывает пользователя, компьютер, приложение (тонкий клиент, Конфигуратор, фоновое задание) и время начала. Если пункта «Функции для технического специалиста» нет, его включают в Сервис → Параметры.

Из Конфигуратора. Меню Администрирование → Активные пользователи — тот же список.

В консоли кластера (только клиент-серверная база ). Запустите оснастку «Администрирование серверов 1С:Предприятия» и раскройте дерево:

Central 1C:Enterprise 8.3 servers
  └─ <имя сервера>
      └─ Кластеры
          └─ <кластер>
              └─ Информационные базы
                  └─ <имя базы>
                      ├─ Сеансы
                      └─ Соединения

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

Где смотретьФайловая базаКлиент-серверная базаМожно завершить сеанс
Активные пользователи в программедаданет, только просмотр
Конфигуратордаданет
Консоль кластера—дада
Утилита rac—дада

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

Завершить сеанс 1С в консоли и через утилиту rac

В консоли кластера

  1. Откройте узел «Сеансы» нужной базы.
  2. Выделите сеанс (можно несколько, с Ctrl).
  3. Правой кнопкой — Удалить, подтвердите.

У пользователя появится сообщение о разрыве соединения, незаписанные данные пропадут. Перед удалением сеанса предупредите человека, если он ещё работает.

Сеансы фоновых и регламентных заданий удалять бессмысленно: планировщик запустит их снова. Чтобы их остановить, нужна блокировка регламентных заданий — о ней ниже.

Через rac из командной строки

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

ras cluster --port=1545

Дальше последовательность такая:

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

:: 2. Узнать идентификатор базы
rac infobase summary list --cluster=<cluster-uuid>

:: 3. Список сеансов этой базы
rac session list --cluster=<cluster-uuid> --infobase=<infobase-uuid>

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

Если на кластере заведён администратор, добавляйте к каждой команде --cluster-user=<имя> --cluster-pwd=<пароль>. Для подключения к удалённому серверу укажите адрес в конце: rac cluster list srv-1c:1545.

В выводе rac session list для каждого сеанса есть поля user-name, host, app-id, started-at, last-active-at. По ним удобно искать зависшие: app-id показывает, тонкий это клиент, Конфигуратор или фоновое задание. Список сеансов вместе с занятыми лицензиями выводит rac session list --licenses.

💡 Полный список параметров для вашей версии сервера — в справке: rac help session и rac help infobase. Набор ключей между версиями платформы немного меняется.

Блокировка входа в базу перед обновлением и регламентом

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

Через свойства базы в консоли кластера

Откройте свойства информационной базы (правая кнопка на базе → Свойства) и заполните:

  • ✅ «Блокировка начала сеансов включена» — главный флажок;
  • 🕒 «Начало» и «Конец» — интервал блокировки; можно задать заранее, например с 22:00 до 02:00;
  • 💬 «Сообщение» — текст, который увидит пользователь при попытке входа;
  • 🔑 «Код разрешения» — пароль для входа администратора в заблокированную базу;
  • ⏸ «Блокировка регламентных заданий включена» — останавливает обмены, загрузку курсов и прочие фоновые задания.

Включённая блокировка не выкидывает тех, кто уже работает. Их сеансы удаляют отдельно — в консоли или через rac.

То же самое через rac

rac infobase update --cluster=<cluster-uuid> --infobase=<infobase-uuid> ^
  --infobase-user=Администратор --infobase-pwd=<пароль> ^
  --sessions-deny=on --scheduled-jobs-deny=on ^
  --denied-message="Идёт обновление базы, вход откроется в 02:00" ^
  --permission-code=7319

После работ блокировку снимают той же командой с --sessions-deny=off --scheduled-jobs-deny=off. Пользователь и пароль здесь — учётная запись самой информационной базы с правами администратора, а не администратора кластера.

Как войти в заблокированную базу

Администратор указывает код разрешения в параметре запуска /UC:

"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /S"srv-1c\buh" /UC7319

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

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

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

Эту же блокировку можно поставить и снять параметрами запуска: /C"ЗавершитьРаботуПользователей" и /C"РазрешитьРаботуПользователей". Так её включают из скриптов ночного обслуживания.

Выход и отключение пользователей в файловой базе

Файловая база — это каталог с файлом 1Cv8.1CD. Кластера и консоли здесь нет, поэтому rac бесполезен. Сеанс живёт, пока на чьём-то компьютере запущен процесс 1С, открывший этот файл.

Что делать, если пользователь ушёл, а база занята:

  1. Попросите его закрыть программу штатно. Если компьютер доступен удалённо — сделайте это сами через Файл → Выход.
  2. Если база на Бухгалтерии 3.0 или ЗУП 3.1 — включите «Блокировку работы пользователей» из раздела Администрирование → Обслуживание. Программа закроется у всех через заданное время.
  3. Если сеанс завис (процесс остался после сбоя), на компьютере пользователя завершите процесс 1cv8c.exe (тонкий клиент) или 1cv8.exe (толстый клиент, Конфигуратор) в диспетчере задач.
  4. Если компьютер недоступен, а база лежит в общей папке Windows, откройте на файловом сервере compmgmt.msc → Общие папки → Открытые файлы, найдите 1Cv8.1CD и закройте его у нужного пользователя.

Шаги 3 и 4 — аварийные. Пользователь потеряет незаписанные данные. Если в этот момент шла запись в базу, есть риск повредить файл. Делайте так, только когда штатный выход невозможен, и при наличии свежей копии базы.

Типичное сообщение при попытке обновить занятую файловую базу — Ошибка блокировки информационной базы для конфигурирования. Оно значит, что кто-то ещё открыл базу: ищите его в «Активных пользователях» Конфигуратора. Сеансы фоновых заданий в файловой базе тоже возможны, если у кого-то открыт клиент: регламентные задания выполняются внутри клиентского сеанса.

Удалять какие-либо служебные файлы из каталога базы, чтобы «снять блокировку», не нужно. Блокировку держит процесс, а не файл: закройте процесс — и база освободится.

Автоматическое завершение неактивных сеансов

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

Параметры спящих сеансов в свойствах базы

В свойствах информационной базы в консоли кластера есть поля «Время засыпания пассивного сеанса» и «Время завершения спящего сеанса» (в секундах). Они касаются сеансов, у которых клиент потерял связь с сервером: сеанс сначала «засыпает» и освобождает ресурсы, а через заданное время завершается. Для пользователей, которые просто оставили программу открытой, эти настройки не сработают — связь у них есть.

Отключить терминальный сеанс Windows

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

Скрипт на rac по расписанию

Самый гибкий вариант — ночной скрипт в планировщике заданий Windows. Пример на PowerShell завершает все сеансы тонкого клиента в выбранной базе, которые не были активны больше 4 часов:

$rac = "C:\Program Files\1cv8\8.3.25.1374\bin\rac.exe"
$cluster = "<cluster-uuid>"
$infobase = "<infobase-uuid>"
$limit = (Get-Date).AddHours(-4)

$raw = & $rac session list --cluster=$cluster --infobase=$infobase
$blocks = ($raw -join "`n") -split "`n\s*`n"

foreach ($b in $blocks) {
    $id   = if ($b -match 'session\s*:\s*(\S+)')        { $Matches[1] }
    $app  = if ($b -match 'app-id\s*:\s*(\S+)')         { $Matches[1] }
    $last = if ($b -match 'last-active-at\s*:\s*(\S+)') { [datetime]$Matches[1] }
    if ($id -and $app -eq '1CV8C' -and $last -and $last -lt $limit) {
        & $rac session terminate --cluster=$cluster --session=$id
        Write-Output "Завершён сеанс $id, последняя активность $last"
    }
}

Путь к rac.exe замените на свой каталог платформы. Перед боевым запуском закомментируйте строку terminate и посмотрите, какие сеансы скрипт выбирает. Конфигуратор (Designer) и фоновые задания (BackgroundJob) в примере не трогаются.

Ставьте такой скрипт на ночь, когда в базе никто не работает . Днём он выкинет бухгалтера, который ушёл на обед с открытым документом.

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

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

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