Выгоняем всех из базы 1С: от мягкой блокировки до kill сеанса

· 9 мин

Содержание

Быстрее всего отключить всех пользователей от базы 1С штатной блокировкой: Администрирование → Обслуживание → ссылка «Блокировка работы пользователей» → флажок установки блокировки, сообщение, код разрешения → «Записать». Через пару минут программа предупредит людей и закроет их сеансы. В клиент-серверной базе то же самое делают в консоли администрирования серверов: в свойствах базы включают «Блокировка начала сеансов включена», а оставшиеся сеансы удаляют вручную.

Способы ниже идут от безопасного к радикальному. Начинайте с первого: он не теряет несохранённые документы и не бьёт по соседним базам. Процессы ОС и соединения СУБД — только когда штатные средства не справились.

Что проверить до того, как отключать пользователей

Пять минут подготовки решают, какой способ вам вообще доступен.

  • 🗂 Тип базы. В окне запуска выделите базу: под списком видна строка подключения. File="D:\Base\..." — файловая база, Srvr="..."; Ref="..." — клиент-серверная.
  • 🔑 Права. Для блокировки из конфигурации нужна роль «Полные права» или «Администратор системы». Для консоли кластера — доступ к серверу и, если задан, пароль администратора кластера.
  • 👥 Кто сейчас в базе. Список открывается в самой конфигурации: Администрирование → Обслуживание → «Активные пользователи». Там видно имя, компьютер, приложение и время начала сеанса.
  • 📣 Предупреждение людям. Напишите в общий чат за 15–30 минут. Блокировка закроет сеанс, но документ, который человек набирал полчаса и не записал, пропадёт.

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

Какая у вас база и что нужно?

Блокировка работы пользователей средствами конфигурации

В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11, КА, ERP) есть встроенная форма блокировки. Она работает и в файловом, и в клиент-серверном варианте.

Как включить блокировку

  1. Откройте Администрирование → Обслуживание.
  2. Нажмите ссылку «Блокировка работы пользователей».
  3. Задайте время начала и окончания. Окончание можно не заполнять — тогда блокировка снимется только вручную.
  4. Впишите сообщение: «Обновление базы с 19:00 до 20:00. Сохраните документы».
  5. Придумайте код разрешения, например upd77. По нему вы сами войдёте в заблокированную базу.
  6. Включите блокировку и запишите форму.

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

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

Код разрешения передают параметром запуска /UC. В окне запуска выберите базу → «Изменить» → на последнем шаге в поле дополнительных параметров укажите:

/UCupd77

Так же код добавляют в командную строку пакетного запуска:

"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /S"srv01\buh" /N"Админ" /P"пароль" /UCupd77

Запуск блокировки из командной строки

Конфигурации на БСП понимают параметры /C:

  • /C"ЗавершитьРаботуПользователей" — ставит блокировку и выгоняет всех;
  • /C"РазрешитьРаботуПользователей" — снимает блокировку.

Запускать нужно от имени администратора базы, вместе с /UC и тем же кодом.

Блокировку не снимает перезапуск компьютера или сервера. Если после работ люди видят «Работа с информационной базой временно заблокирована» — значит, вы забыли выключить флажок или закрыли форму без записи.

Как завершить сеансы пользователей в консоли кластера 1С

Для клиент-серверной базы это основной инструмент. Консоль ставится вместе с сервером 1С, ярлык «Администрирование серверов 1С Предприятия».

Удаление сеансов

  1. В дереве раскройте Central 1C:Enterprise 8.3 servers → имя сервера → Кластеры → кластер → Информационные базы → ваша база → Сеансы.
  2. Справа появятся все подключения к базе: пользователь, компьютер, приложение, время начала.
  3. Выделите сеансы (Shift или Ctrl) → правая кнопка → «Удалить».
  4. Обновите список (F5). Пользователь увидит сообщение о завершении сеанса администратором.

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

Блокировка начала сеансов

Удалить сеансы мало: через минуту люди снова зайдут. Поэтому сначала закрывают вход.

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

Код разрешения работает так же: вход с /UC<код>.

Если консоль не открывает кластер

  • 🔒 Консоль спрашивает администратора кластера — это не пользователь 1С, а учётная запись, созданная в ветке «Администраторы» кластера.
  • 🧩 Консоль не запускается вообще («Класс не зарегистрирован») — заново зарегистрируйте radmin.dll от имени администратора Windows: regsvr32 "C:\Program Files\1cv8\8.3.xx.xxxx\bin\radmin.dll", где номер — версия установленной платформы.
  • 🔢 Версия консоли должна совпадать с версией сервера. Консоль 8.3.22 к серверу 8.3.24 не подключится.

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

У файловой базы нет кластера и консоли. Есть только блокировка из конфигурации и средства Windows.

Если блокировка БСП не помогла, обычно у кого-то завис клиент: окно 1С висит, и проверку блокировки оно не выполняет. Действуйте по шагам.

Найти, кто держит базу

Файловая база — это файл 1Cv8.1CD в папке базы. Пока его открывает хоть один процесс 1С, монопольный доступ не получить.

  1. На компьютере или сервере, где лежит папка с базой, откройте Управление компьютером → Общие папки → Открытые файлы.
  2. Отсортируйте по пути и найдите 1Cv8.1CD. В колонке «Пользователь» — учётная запись Windows, в колонке рядом — компьютер.
  3. То же в PowerShell от администратора:
Get-SmbOpenFile | Where-Object Path -like "*1Cv8.1CD" | Select-Object ClientComputerName, ClientUserName, Path

Закрыть подключение

Лучший вариант — попросить человека закрыть 1С или перезагрузить его компьютер. Если он недоступен, закройте открытый файл с сервера:

Get-SmbOpenFile | Where-Object Path -like "*1Cv8.1CD" | Close-SmbOpenFile -Force

На терминальном сервере (RDP) зависший сеанс 1С завершают через «Диспетчер задач → Пользователи»: выделить пользователя → «Выйти».

Сделайте копию папки базы, прежде чем закрывать файл силой. Принудительный разрыв посреди записи может повредить файловую базу. После такой операции проверьте её утилитой chdbfl.exe из каталога bin платформы.

Скрипт rac: отключить всех пользователей по расписанию

Если обновления идут по ночам, руками это не делают. Консольная утилита rac работает через сервер администрирования ras, который должен быть запущен (по умолчанию порт 1545).

Запуск ras вручную на сервере 1С:

"C:\Program Files\1cv8\8.3.xx.xxxx\bin\ras.exe" cluster --port=1545 localhost:1540

Для постоянной работы его регистрируют службой Windows.

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

ЗадачаКоманда
Узнать ID кластераrac cluster list
Узнать ID базыrac infobase summary list --cluster=<ID>
Список сеансовrac session list --cluster=<ID> --infobase=<ID базы>
Завершить сеансrac session terminate --cluster=<ID> --session=<ID сеанса>
Закрыть вход в базуrac infobase update ... --sessions-deny=on

Если у кластера задан администратор, к каждой команде добавьте --cluster-user и --cluster-pwd. Остальные параметры проверьте в rac help session и rac help infobase — набор зависит от версии платформы.

Пример скрипта для Linux

#!/bin/bash
RAC="/opt/1cv8/x86_64/8.3.xx.xxxx/rac"
CL="идентификатор_кластера"
IB="идентификатор_базы"

# 1. Запретить новые сеансы и регламентные задания
$RAC infobase update --cluster=$CL --infobase=$IB \
  --infobase-user="Админ" --infobase-pwd="пароль" \
  --sessions-deny=on --scheduled-jobs-deny=on \
  --denied-message="Обновление базы" --permission-code="upd77"

# 2. Завершить все текущие сеансы базы
for S in $($RAC session list --cluster=$CL --infobase=$IB | awk '/^session /{print $NF}'); do
  $RAC session terminate --cluster=$CL --session=$S
done

После обновления блокировку снимают той же командой infobase update с --sessions-deny=off --scheduled-jobs-deny=off.

Между шагом 1 и 2 дайте паузу 1–2 минуты. Иначе фоновое задание, стартовавшее в последний момент, успеет открыть новый сеанс.

Крайние меры: процессы ОС и соединения СУБД

Сюда идут, когда сеанс удалён в консоли, а база всё равно «занята». Каждая мера ниже рвёт работу не одного человека, а сразу многих.

Соединения рабочего процесса

В консоли кластера у базы есть ветка «Соединения». Иногда сеанса уже нет, а соединение висит. Удалите его там же через правую кнопку. Это всё ещё безопасный шаг.

Процессы на сервере

Что завершаемЧто оборвётсяКогда допустимо
1cv8.exe, 1cv8c.exe на терминальном сервереВсе базы этого пользователяПользователь недоступен, окно зависло
rphost.exeВсе сеансы всех баз, обслуживаемых этим процессомНерабочее время, сеанс не удаляется
Служба «Агент сервера 1С:Предприятия 8.3»Все сеансы всех баз кластераНерабочее время, ничего другое не помогло

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

taskkill /IM 1cv8.exe /F без фильтра по пользователю убьёт 1С у всех на терминальном сервере. Лучше снять конкретный процесс в «Диспетчере задач» на вкладке «Подробности», ориентируясь на колонку «Имя пользователя».

Сеансы в СУБД

Рабочие процессы 1С держат соединения с SQL Server или PostgreSQL. Обрывать их на стороне СУБД имеет смысл только при зависшей транзакции или блокировке таблиц, которую не снять из 1С.

MS SQL Server — найти соединения с базой:

SELECT session_id, host_name, program_name, login_time
FROM sys.dm_exec_sessions
WHERE database_id = DB_ID('buh');
-- затем для конкретного сеанса:
-- KILL 57;

PostgreSQL — завершить все соединения с базой, кроме своего:

SELECT pg_terminate_backend(pid)
FROM pg_stat_activity
WHERE datname = 'buh' AND pid <> pg_backend_pid();

Обрыв соединения в СУБД откатывает незавершённую транзакцию, но не завершает сеанс 1С: рабочий процесс переподключится. Поэтому сначала закройте вход в базу в консоли кластера, а СУБД трогайте последней.

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

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

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

Где уместна блокировка, а где хватит обычного предупреждения:

  • 🔧 Обновление конфигурации с изменением структуры, загрузка .dt, тестирование и исправление — монопольный доступ обязателен, блокировку ставят всегда.
  • 📊 Закрытие месяца, перепроведение документов — монопольный режим не нужен, но блокировка защищает от правок «задним числом» во время расчёта.
  • 🔄 Обновление без изменения структуры БД — платформа иногда применяет его и при работающих пользователях. Не рассчитывайте на это: заранее не угадать, затронет ли релиз структуру.

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

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

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