Отключение всех пользователей от базы 1С перед обновлением и обслуживанием

· 9 мин

Содержание

Способ зависит от варианта базы. В клиент-серверной базе пользователей выгоняют через консоль администрирования серверов 1С или утилитой rac. В файловой базе у сервера нет списка сеансов, поэтому работу завершают штатной обработкой внутри 1С или закрывают файл базы средствами Windows.

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

Вариант базыЧем выгнатьКогда подходит
Клиент-сервер, есть доступ к серверуКонсоль администрированияРазовая операция, нужен наглядный список
Клиент-сервер, нужна автоматизацияУтилита rac и скриптНочное обновление, резервная копия по расписанию
ФайловаяОбработка завершения работы в 1С, затем средства WindowsНебольшая база на общей папке или терминальном сервере
Сеанс зависКонсоль, затем процесс rphost или 1cv8Обычное завершение не сработало

Что сделать до того, как отключать людей

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

Перед началом:

  1. Предупредите пользователей не позже чем за 10–15 минут. Лучше сообщением в рабочем чате и через саму 1С.
  2. Определите время и причину: обновление конфигурации , загрузка .dt, свёртка, реструктуризация, перенос базы.
  3. Убедитесь, что вы входите под учётной записью с правом администрирования. Для консоли нужен ещё и администратор кластера, если его задавали.
  4. Проверьте, нет ли в базе длительных регламентных заданий и закрытия месяца, которые выполняются прямо сейчас.

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

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

Консоль администрирования: сеансы и соединения по кнопке

Консоль администрирования серверов 1С:Предприятия ставится вместе с платформой на сервер или на рабочее место администратора. Это оснастка MMC.

Запрещаем вход новым пользователям

Сначала закройте дверь:

  1. Откройте консоль и разверните Центральные серверы 1С:Предприятия → ваш сервер → Кластеры → нужный кластер → Информационные базы.
  2. Откройте свойства базы (правая кнопка → Свойства).
  3. Включите Блокировка начала сеансов включена.
  4. Задайте время начала и окончания блокировки, текст сообщения и, если нужно, код разрешения.
  5. Отметьте блокировку регламентных заданий, если они вам мешают.

Код разрешения позволяет вам самому войти в заблокированную базу: запускайте клиент с параметром /UC и вашим кодом. Остальные получат сообщение, которое вы написали.

Как написать сообщение, которое прочтут

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

  • причина одной фразой: «Идёт обновление конфигурации»;
  • время, когда база снова откроется: «Работа возобновится в 20:30»;
  • к кому обращаться, если база нужна срочно.

Короткое сообщение «Доступ закрыт» вызывает звонки в поддержку, длинное никто не дочитывает. Хватает двух строк.

Завершаем сеансы

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

  • Выделите один сеанс или несколько (Ctrl, Shift) и нажмите Удалить.
  • Чтобы убрать всех сразу, выделите весь список сочетанием Ctrl+A и удалите.
  • Откройте ветку Соединения: туда попадают подключения, у которых сеанса уже нет, но соединение с процессом осталось.

Своё же соединение с консолью выгонять не нужно, оно не отображается как сеанс базы.

Если консоли нет или она не подключается

Бывает, что оснастка не открывается: в MMC нет нужного компонента. Обычно помогает перерегистрация библиотеки:

regsvr32 "C:\Program Files\1cv8\8.3.XX.XXXX\bin\radmin.dll"

Командную строку запускайте от имени администратора, а версию в пути подставьте свою (папка платформы на сервере). Если подключиться к серверу не удаётся, проверьте, что служба сервера 1С запущена, а порт сервера (по умолчанию 1540) и порт менеджера кластера (1541) не закрыты фаерволом.

Какие сеансы увидите в списке

В ветке Сеансы встречаются разные приложения, и выгонять их нужно с разной осторожностью:

Приложение в спискеЧто этоКак поступить
Тонкий или веб-клиентОбычная работа пользователяЗавершать после предупреждения
КонфигураторРазработчик или администратор правит конфигурациюСначала связаться с ним: незаписанные изменения пропадут
Фоновое заданиеРегламентное задание, обмен, формирование отчётаДождаться конца или заблокировать задания
Сеанс COM-соединенияВнешняя программа или обмен через COMУточнить у владельца интеграции

Сеанс Конфигуратора держит хранилище и может мешать загрузке изменений, так что про него вспоминают чаще всего.

Утилита rac: то же самое из командной строки

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

Запуск сервера администрирования, если он не работает как служба:

ras cluster --port=1545

Дальше три шага.

1. Идентификатор кластера:

rac cluster list

В выводе найдите строку cluster: это UUID, он понадобится во всех следующих командах.

2. Идентификатор базы:

rac infobase summary list --cluster=<UUID_кластера>

3. Список сеансов и завершение:

rac session list --cluster=<UUID_кластера> --infobase=<UUID_базы>
rac session terminate --cluster=<UUID_кластера> --session=<UUID_сеанса>

Если на кластер установлен администратор, добавляйте --cluster-user и --cluster-pwd. Полный перечень параметров смотрите в справке: rac help session и rac help infobase.

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

Скрипт: выгнать всех одним запуском

Для ночного обновления или резервной копии удобнее PowerShell. Пример перебирает сеансы одной базы и завершает каждый:

$rac     = "C:\Program Files\1cv8\8.3.XX.XXXX\bin\rac.exe"
$cluster = "UUID_кластера"
$base    = "UUID_базы"

$text = & $rac session list --cluster=$cluster --infobase=$base
foreach ($line in $text) {
    if ($line -match '^session\s*:\s*(\S+)') {
        & $rac session terminate --cluster=$cluster --session=$($Matches[1])
    }
}

Скрипт читает только строки вида session : <UUID> и закрывает каждый найденный сеанс. Версию платформы в пути и оба UUID подставьте свои.

Что стоит сделать вокруг скрипта:

  • ✅ Запускайте его от учётной записи, у которой есть права на rac и на кластер.
  • ✅ Включайте блокировку входа раньше, чем запускаете цикл, иначе кто-нибудь успеет зайти повторно.
  • ✅ После цикла повторите rac session list: если список не пуст, остались зависшие сеансы.
  • ✅ Пишите вывод в журнал, чтобы утром было видно, что и когда завершилось.

Для планировщика задач Windows достаточно создать задание, запускающее powershell.exe -File путь\скрипт.ps1 в нужное время.

Перед обновлением удобно пройтись по короткому списку:

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

Файловая база: нет сервера, нет списка сеансов

В файловой базе роль сервера никто не выполняет. Каждый клиент открывает файл 1Cv8.1CD напрямую, поэтому «убить сеанс» как в кластере нельзя. Действуют по возрастанию жёсткости.

1. Средствами самой 1С

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

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

2. Через Windows

Когда сеанс не закрывается:

  • Если база лежит на общем сетевом ресурсе, откройте на файловом сервере Управление компьютером → Общие папки → Открытые файлы. Найдите 1Cv8.1CD и закройте открытые дескрипторы.
  • Если все работают на терминальном сервере, откройте Диспетчер задач → Пользователи, найдите процессы 1cv8.exe или 1cv8c.exe и завершите их.

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

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

Если сеанс не уходит

Иногда Удалить в консоли вроде бы срабатывает, а сеанс остаётся в списке. Причины обычно такие:

  • 🔹 Клиент завис на серверном вызове, и рабочий процесс не реагирует на команду.
  • 🔹 Пользователь работает через длительную обработку, которая держит транзакцию.
  • 🔹 Сеанс-«призрак» остался после обрыва связи, и сервер ждёт тайм-аут.

Порядок действий:

  1. Подождите 1–2 минуты и обновите список в консоли.
  2. Проверьте ветку Соединения: соединение без сеанса удаляется отдельно.
  3. Посмотрите блокировки (ветка Блокировки в консоли): возможно, сеанс стоит в ожидании чужой блокировки.
  4. Только после этого завершайте рабочий процесс.

Какой процесс обслуживает сеанс, видно в свойствах сеанса в консоли. Снимать процесс rphost через диспетчер задач можно в крайнем случае.

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

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

Что у вас с базой?

Как не выгонять людей посреди рабочего дня

Часть проблем снимается заранее:

  • Планируйте окно обслуживания: вечер или раннее утро, одно и то же время каждую неделю. Людям проще привыкнуть, чем получать неожиданное сообщение.
  • Включайте блокировку начала сеансов с текстом, где написано, когда база снова будет доступна. Фраза «технические работы» мало что говорит.
  • Настройте автоматическое завершение неактивных сеансов, если администрирование это допускает: пользователи, забывшие выйти, держат лицензии и блокируют обслуживание.
  • Выносите резервное копирование , тестирование и исправление, требующие монопольного доступа, в одно окно, чтобы не выгонять людей по три раза.
  • Регламентные задания останавливайте вместе с входом пользователей, иначе они займут базу сами.

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

Сколько ждать после предупреждения?
Практически хватает 10–15 минут. Для тех, кто работает с большими документами, лучше 30.
Можно ли выгнать только одного пользователя?
Да. В консоли выделите нужный сеанс в ветке Сеансы и нажмите Удалить, либо завершите его командой rac session terminate.
Почему пользователь снова зашёл после завершения сеанса?
Блокировка начала сеансов не была включена. Пока она выключена, любой может открыть базу повторно. Включайте её до завершения сеансов.
Как войти в базу самому, если вход заблокирован?
Запустите клиент с параметром /UC и кодом разрешения, который вы задали в блокировке.
Закрылся ли сеанс, если исчез из списка консоли?
Да, но проверьте ещё ветку Соединения: там могло остаться подключение без сеанса.
Теряются ли данные у тех, кого выгнали?
Теряется то, что не записано. Проведённые и записанные документы остаются в базе.