Завершение сеансов 1С: консоль, rac и скрипты для администратора
Содержание
Вечером нужно обновить конфигурацию , а в базе всё ещё висят три сеанса: двое ушли домой и не закрыли 1С, третий — служебная учётка обмена. Чтобы закрыть сеансы 1С, откройте консоль администрирования серверов (для клиент-серверной базы) или список активных пользователей в Конфигураторе (для файловой), выберите нужные сеансы и завершите их. Остальное — детали: порядок действий, автоматизация и случаи, когда сеанс не умирает.
Ниже — по шагам: как посмотреть, кто в базе, чем закрывать, как не пустить людей обратно и что делать с «призраками».
Принудительное завершение обрывает работу пользователя. Несохранённые данные в открытых формах пропадут. Предупредите людей заранее и выбирайте время, когда в базе минимум активности.
Srvr=), база клиент-серверная. Если указан путь к папке (File=) — файловая.1. Сначала посмотрите, кто подключён
Закрывать вслепую нельзя. Сначала выясните, какие сеансы живые, а какие технические: фоновые задания, обмен, веб-сервисы, интеграции.
Файловая база
Откройте Конфигуратор и выберите Администрирование → Активные пользователи. В списке видно имя пользователя, компьютер, приложение и время начала сеанса. Приложение подскажет, что за сеанс:
- 🖥 «Толстый клиент» или «Тонкий клиент» — живой человек;
- 🌐 «Веб-клиент» — человек работает через браузер;
- ⚙ «Фоновое задание» — регламентное задание, трогать без нужды не стоит;
- 🔧 «Конфигуратор» — кто-то открыл базу для администрирования, возможно, вы сами.
Клиент-серверная база
В консоли администрирования серверов раскройте Центральные серверы → ваш сервер → Кластеры → ваш кластер → Информационные базы → ваша база. Там два нужных узла: Сеансы и Соединения.
Разница простая. Сеанс — это работа пользователя в базе, у него есть имя и лицензия. Соединение — технический канал клиентского приложения с сервером. Одно соединение может не иметь сеанса (например, пользователь сидит на окне ввода пароля), а закрыть нужно оба.
💡 Те же данные есть и в командной строке: rac session list --cluster=<идентификатор кластера>. Подробнее — в разделе про rac.
Как отличить лишний сеанс от нужного
Три признака помогают быстро отсеять технические сеансы:
- Время начала. Сеанс, открытый вчера в 18:00 и до сих пор «живой», почти наверняка забыт на выключенном или заблокированном компьютере.
- Имя компьютера. Если имя совпадает с сервером приложений или с машиной интеграции, это не человек.
- Тип приложения. Фоновые задания и COM-соединения принадлежат обменам и расчётам: оборвёте — получите недозагруженный пакет данных.
Выпишите спорные сеансы и уточните у владельца. Пять минут переписки дешевле, чем повторная загрузка обмена.
2. Завершение сеансов через графический интерфейс
Для разовой задачи удобнее всего консоль.
- Откройте консоль администрирования серверов 1С и подключитесь к серверу.
- Перейдите к нужной базе и откройте узел
Сеансы. - Отсортируйте список по имени базы или по пользователю — в кластере обычно живёт несколько баз, не перепутайте.
- Выделите нужные сеансы (с зажатым Ctrl можно выбрать несколько) и нажмите
Удалить— так консоль называет принудительное завершение. - Подтвердите действие.
- Обновите список и убедитесь, что сеансы исчезли.
Если пользователь перед этим успел нажать «Сохранить», он ничего не потеряет. Если нет — потеряет. Поэтому сначала звоните или пишите в чат, потом удаляйте.
В файловой базе принудительно завершить чужой сеанс из списка активных пользователей нельзя: программа показывает, кто в базе, но выгнать человека не может. Закройте 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_сеанса>
rac cluster listвыводит идентификатор кластера (длинный UUID).rac session listпоказывает сеансы: идентификатор, пользователя, компьютер, приложение, время начала и базу.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. Блокировка новых подключений при регламентных работах
Закрыть сеансы мало: пока вы работаете, пользователи вернутся. Нужна блокировка начала сеансов.
В консоли администрирования откройте свойства информационной базы. Там есть флажок включения блокировки начала сеансов, поля «Начало» и «Конец» периода блокировки, текст сообщения для пользователей и код разрешения.
Порядок такой:
- Включите блокировку и впишите сообщение: «Идут технические работы до 22:00».
- Задайте код разрешения, например короткое слово без пробелов. С ним сможете зайти сами, а остальных система не пустит.
- Завершите сеансы, как описано выше.
- Выполняйте работы. Запускать 1С с кодом разрешения нужно параметром командной строки
/UC<код>. - После окончания обязательно снимите блокировку.
То же через командную строку делает rac infobase update с параметрами блокировки сеансов, сообщения и кода разрешения. Точные имена ключей смотрите в rac help infobase: они зависят от версии платформы.
💡 Блокировка на период с конечным временем безопаснее бессрочной: если вы забудете её снять, система выпустит людей сама.
Здесь же полезна блокировка регламентных заданий. Иначе в момент обновления сработает фоновое задание и создаст новый сеанс.
6. «Висящие» сеансы: что делать, когда сеанс не закрывается
Бывает: нажали «Удалить», а сеанс остался в списке. Или исчез и тут же появился.
Разберите по порядку, от безопасного к радикальному.
Сеанс исчез и появился снова
Причина почти всегда в клиенте. Пользователь не закрыл 1С, а клиентское приложение само переподключилось. Или это сервис, который сразу открывает новый сеанс.
- Проверьте, что включена блокировка начала сеансов.
- Найдите владельца по имени компьютера и закройте 1С на нём.
- Для сервисного пользователя остановите сам сервис.
Сеанс остался в списке «мёртвым»
Клиент уже выключен, а сеанс держится. Он освободится сам по таймауту сервера, обычно через несколько минут. Лицензия при этом остаётся занятой, пока запись не пропадёт. Если ждать нельзя, закройте соединение через узел Соединения и повторите завершение сеанса.
Сеанс держит длинная операция
Идёт перепроведение, закрытие месяца или тяжёлый отчёт. Сервер ждёт завершения операции, и сеанс закрывается не сразу. Посмотрите, сколько процессора и памяти занимает рабочий процесс этого сеанса, и решите: дождаться или оборвать. Обрыв проведения посреди операции оставит часть документов непроведёнными, зато база останется целостной.
Если ничего не помогло
- Завершите рабочий процесс, в котором живёт сеанс (в консоли он отображается в узле рабочих процессов кластера). Это оборвёт все сеансы, обслуживаемые этим процессом — предупредите пользователей.
- Если и это не помогает, перезапустите службу сервера 1С. Делайте это только вне рабочего времени: отключатся все пользователи всех баз кластера.
- Для файловой базы закройте процесс
1cv8.exeна клиентском компьютере. Если машина недоступна, выключите её. После этого дайте минуту-другую, и блокировочный файл базы освободится.
Не удаляйте служебные файлы блокировок вручную, пока в базе остались живые сеансы. Это грозит повреждением базы.
7. Частые вопросы
Потеряют ли пользователи данные при принудительном завершении?
Как закрыть сеансы 1С сразу у всех пользователей базы?
Нужны ли для rac права администратора?
Освободится ли лицензия после завершения сеанса?
Можно ли закрыть сеанс 1С из самой базы?
Что лучше для вечерних работ: блокировка или просто выгнать людей?
8. Что проверить после работ
Когда блокировка снята, а люди вернулись, проверьте три вещи. Откройте список сеансов и убедитесь, что сервисные учётки подключились сами. Посмотрите, не осталась ли блокировка регламентных заданий включённой. И спросите у пользователей, всё ли открывается. Обычно этого хватает.
Если вы закрываете сеансы часто, заведите в организации регламент: время технических окон, ответственного и текст сообщения для блокировки. Тогда вопросов «почему меня выкинуло» станет меньше.