Завершение сеансов 1С: консоль, rac и скрипты для администратора

· 9 мин

Содержание

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

Ниже — по шагам: как посмотреть, кто в базе, чем закрывать, как не пустить людей обратно и что делать с «призраками».

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

Какая у вас база?

1. Сначала посмотрите, кто подключён

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

Файловая база

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

  • 🖥 «Толстый клиент» или «Тонкий клиент» — живой человек;
  • 🌐 «Веб-клиент» — человек работает через браузер;
  • ⚙ «Фоновое задание» — регламентное задание, трогать без нужды не стоит;
  • 🔧 «Конфигуратор» — кто-то открыл базу для администрирования, возможно, вы сами.

Клиент-серверная база

В консоли администрирования серверов раскройте Центральные серверы → ваш сервер → Кластеры → ваш кластер → Информационные базы → ваша база. Там два нужных узла: Сеансы и Соединения.

Разница простая. Сеанс — это работа пользователя в базе, у него есть имя и лицензия. Соединение — технический канал клиентского приложения с сервером. Одно соединение может не иметь сеанса (например, пользователь сидит на окне ввода пароля), а закрыть нужно оба.

💡 Те же данные есть и в командной строке: rac session list --cluster=<идентификатор кластера>. Подробнее — в разделе про rac.

Как отличить лишний сеанс от нужного

Три признака помогают быстро отсеять технические сеансы:

  • Время начала. Сеанс, открытый вчера в 18:00 и до сих пор «живой», почти наверняка забыт на выключенном или заблокированном компьютере.
  • Имя компьютера. Если имя совпадает с сервером приложений или с машиной интеграции, это не человек.
  • Тип приложения. Фоновые задания и COM-соединения принадлежат обменам и расчётам: оборвёте — получите недозагруженный пакет данных.

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

2. Завершение сеансов через графический интерфейс

Для разовой задачи удобнее всего консоль.

  1. Откройте консоль администрирования серверов 1С и подключитесь к серверу.
  2. Перейдите к нужной базе и откройте узел Сеансы.
  3. Отсортируйте список по имени базы или по пользователю — в кластере обычно живёт несколько баз, не перепутайте.
  4. Выделите нужные сеансы (с зажатым Ctrl можно выбрать несколько) и нажмите Удалить — так консоль называет принудительное завершение.
  5. Подтвердите действие.
  6. Обновите список и убедитесь, что сеансы исчезли.

Если пользователь перед этим успел нажать «Сохранить», он ничего не потеряет. Если нет — потеряет. Поэтому сначала звоните или пишите в чат, потом удаляйте.

В файловой базе принудительно завершить чужой сеанс из списка активных пользователей нельзя: программа показывает, кто в базе, но выгнать человека не может. Закройте 1С на его компьютере, попросите его выйти или завершите процесс 1cv8.exe в диспетчере задач на той машине. Для терминального сервера процесс убивают в сеансе нужного пользователя, а не у всех подряд.

⚠️ Не завершайте процессы 1cv8.exe на сервере терминалов в диспетчере задач без фильтра по пользователю — вы закроете 1С у всех сразу.

3. Утилита rac и служба ras: управление кластером из консоли

Когда графики нет или нужен скрипт, берут rac — клиент администрирования. Он ходит на сервер администрирования, которым служит процесс ras. Оба лежат в каталоге bin установленной платформы.

Запуск ras

Запустите ras на сервере, указав порт и адрес агента кластера:

ras cluster --port=1545 localhost:1540

По умолчанию агент сервера слушает порт 1540, а для ras обычно используют 1545. Если у вас другие порты — подставьте свои. Для постоянной работы ras оформляют службой Windows или юнитом systemd, а не оставляют окно консоли открытым.

Основные команды rac

Команды всегда начинаются с адреса ras (если он не на этой же машине). Точный набор параметров ваша версия платформы покажет по rac help, а ниже — минимум, в котором можно быть уверенным:

rac cluster list
rac session list --cluster=<id_кластера>
rac session terminate --cluster=<id_кластера> --session=<id_сеанса>
  1. rac cluster list выводит идентификатор кластера (длинный UUID).
  2. rac session list показывает сеансы: идентификатор, пользователя, компьютер, приложение, время начала и базу.
  3. rac session terminate завершает один сеанс по его идентификатору.

Если в кластере заданы администраторы с паролями, команды понадобится запускать с параметрами аутентификации. Какие именно — смотрите rac help.

СпособКогда подходитРиск
Консоль администрированияРазово, единицы сеансовВыбрать не ту базу
rac вручнуюНет графики, удалённый серверОпечатка в UUID
Скрипт на PowerShellРегулярно, по расписаниюЗакрыть лишнее без фильтра
Блокировка входаРаботы в базе: обновление, загрузкаЗабыть снять

4. Автоматизация: сеансы 1С через PowerShell

Когда закрывать сеансы приходится каждый вечер перед резервным копированием, процедуру выносят в скрипт. Идея: прочитать вывод rac session list, отобрать сеансы нужной базы и завершить каждый.

Вывод rac — блоки «ключ : значение», разделённые пустой строкой. Разобрать его можно так:

$rac     = "C:\Program Files\1cv8\<версия>\bin\rac.exe"
$cluster = "<id_кластера>"
$baseId  = "<id_информационной_базы>"

$blocks = (& $rac session list --cluster=$cluster) -join "`n" -split "`n`n"

foreach ($b in $blocks) {
    if ($b -match "infobase\s*:\s*$baseId" -and $b -match "session\s*:\s*([0-9a-f-]{36})") {
        $id = $Matches[1]
        & $rac session terminate --cluster=$cluster --session=$id
        Write-Output "Завершён сеанс $id"
    }
}

Что здесь важно:

  • 🔍 Фильтр по идентификатору базы обязателен. Без него вы закроете сеансы всех баз кластера.
  • 📝 Пишите в лог, кто и когда закрыт, — потом пригодится при разборе жалоб.
  • ⏰ Запускайте скрипт планировщиком заданий с учётной записью, у которой есть право на запуск rac.exe.
  • 🚫 Исключайте нужные учётки: сеанс обмена или регламентного задания, который сейчас идёт, лучше дождаться.

Идентификатор базы берут из rac infobase summary list --cluster=<id_кластера>. Эту команду тоже стоит проверить по rac help для вашей версии.

Прежде чем отправлять скрипт в планировщик, прогоните его на тестовой базе. Строка rac session terminate необратима.

5. Блокировка новых подключений при регламентных работах

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

В консоли администрирования откройте свойства информационной базы. Там есть флажок включения блокировки начала сеансов, поля «Начало» и «Конец» периода блокировки, текст сообщения для пользователей и код разрешения.

Порядок такой:

  1. Включите блокировку и впишите сообщение: «Идут технические работы до 22:00».
  2. Задайте код разрешения, например короткое слово без пробелов. С ним сможете зайти сами, а остальных система не пустит.
  3. Завершите сеансы, как описано выше.
  4. Выполняйте работы. Запускать 1С с кодом разрешения нужно параметром командной строки /UC<код>.
  5. После окончания обязательно снимите блокировку.

То же через командную строку делает rac infobase update с параметрами блокировки сеансов, сообщения и кода разрешения. Точные имена ключей смотрите в rac help infobase: они зависят от версии платформы.

💡 Блокировка на период с конечным временем безопаснее бессрочной: если вы забудете её снять, система выпустит людей сама.

Здесь же полезна блокировка регламентных заданий. Иначе в момент обновления сработает фоновое задание и создаст новый сеанс.

Перед остановкой работы в базе
Выполнено: 0 / 5

6. «Висящие» сеансы: что делать, когда сеанс не закрывается

Бывает: нажали «Удалить», а сеанс остался в списке. Или исчез и тут же появился.

Разберите по порядку, от безопасного к радикальному.

Сеанс исчез и появился снова

Причина почти всегда в клиенте. Пользователь не закрыл 1С, а клиентское приложение само переподключилось. Или это сервис, который сразу открывает новый сеанс.

  • Проверьте, что включена блокировка начала сеансов.
  • Найдите владельца по имени компьютера и закройте 1С на нём.
  • Для сервисного пользователя остановите сам сервис.

Сеанс остался в списке «мёртвым»

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

Сеанс держит длинная операция

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

Если ничего не помогло

  1. Завершите рабочий процесс, в котором живёт сеанс (в консоли он отображается в узле рабочих процессов кластера). Это оборвёт все сеансы, обслуживаемые этим процессом — предупредите пользователей.
  2. Если и это не помогает, перезапустите службу сервера 1С. Делайте это только вне рабочего времени: отключатся все пользователи всех баз кластера.
  3. Для файловой базы закройте процесс 1cv8.exe на клиентском компьютере. Если машина недоступна, выключите её. После этого дайте минуту-другую, и блокировочный файл базы освободится.

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

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

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

8. Что проверить после работ

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

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