Завершение чужих сеансов 1С перед обновлением и отладкой: консоль, rac и блокировка входа
Содержание
Чтобы выкинуть пользователя из 1С и спокойно работать в Конфигураторе, сначала запретите новые входы, а потом завершите текущие сеансы. В клиент-серверной базе это делается в консоли кластера: свойства базы → флажок «Блокировка начала сеансов включена» с кодом разрешения, затем в узле Сеансы — команда «Удалить» по каждому чужому сеансу. Сами вы заходите с параметром /UC<код>, и блокировка вас не держит.
Конфигуратор сам по себе пользователей не отключает: окно Администрирование → Активные пользователи только показывает, кто сидит в базе. Отключать приходится средствами сервера, командой rac или через механизм блокировки в самой конфигурации. Разберём все варианты для 1С 8.3, включая файловые базы и зависшие сеансы, которые не уходят с первого раза.
Когда без монопольного режима не обойтись
Монопольный режим нужен не для всего. Открыть Конфигуратор , править модули, смотреть отладчиком и даже сохранять конфигурацию можно при работающих пользователях. Выгонять людей придётся, когда вы:
- 🔄 обновляете конфигурацию базы данных и платформа меняет структуру таблиц;
- 💾 загружаете информационную базу из файла
.dt; - 🛠 запускаете «Тестирование и исправление»;
- 📦 обновляете типовую конфигурацию , если изменения нельзя применить динамически.
Динамическое обновление работает, когда структура хранения данных не меняется: правка кода, форм, макетов. Если вы добавили реквизит или новый объект, платформа потребует монопольный доступ. Тогда при команде «Обновить конфигурацию базы данных» появится сообщение, что установить монопольный режим не удалось.
В клиент-серверной базе свежие версии платформы в этом окне предлагают завершить мешающие сеансы прямо из Конфигуратора. Если такой кнопки у вас нет или права администратора кластера не настроены, используйте способы ниже.
Кроме пользователей, базу держат фоновые и регламентные задания, сеансы веб-сервисов и COM-соединения внешних программ. Их тоже придётся остановить, иначе после удаления «живых» людей монопольный режим всё равно не установится.
Шаг 1. Кто сейчас в базе
Сначала поймите, кого придётся отключать. Источников три:
| Где смотреть | Что видно | Для каких баз |
|---|---|---|
Конфигуратор: Администрирование → Активные пользователи | Пользователь, компьютер, приложение, время начала | Файловые и серверные |
Пользовательский режим: Администрирование → Поддержка и обслуживание → Активные пользователи (БП 3.0, ЗУП 3.1, УТ 11) | То же, плюс можно отправить сообщение | Файловые и серверные |
Консоль кластера, узел Сеансы базы | Номер сеанса, приложение, рабочий процесс, время вызова СУБД, захваченная память | Только серверные |
В колонке «Приложение» ищите не только «Тонкий клиент» и «Конфигуратор». «Фоновое задание», «COM-соединение», «Веб-сервис» и «Внешнее соединение» тоже мешают монопольному режиму.
Шаг 2. Запрет входа и отключение через консоль кластера
Консоль администрирования серверов 1С — главный инструмент для клиент-серверной базы. Порядок работы:
- Запустите «Администрирование серверов 1С Предприятия» и раскройте
Центральный сервер → Кластеры → Кластер → Информационные базы. - Откройте свойства нужной базы. Консоль спросит логин и пароль администратора самой информационной базы.
- Поставьте флажок «Блокировка начала сеансов включена».
- Заполните «Сообщение о блокировке» — его увидят те, кто попробует войти: «Обновление базы до 22:30».
- В поле «Код разрешения» впишите любую строку, например
upd2210. - Если нужно, задайте «Начало» и «Конец» блокировки. Без них она действует, пока вы не снимете флажок.
- Поставьте флажок «Блокировка регламентных заданий включена». Без него фоновые задания будут стартовать заново.
- Сохраните. Затем раскройте узел базы →
Сеансы, выделите чужие сеансы и выберите «Удалить» в контекстном меню.
Пользователь увидит сообщение об ошибке и будет отключён. Несохранённый документ он потеряет, поэтому предупредите людей заранее.
Сами входите в Конфигуратор с кодом разрешения. В свойствах базы в окне запуска добавьте в «Дополнительные параметры запуска» строку /UCupd2210 либо запустите из командной строки:
"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" DESIGNER /S"srv1c\buh" /N"Администратор" /P"пароль" /UCupd2210
Номер версии в пути подставьте свой: он должен совпадать с версией платформы на сервере.
Не забудьте снять оба флажка блокировки после работы — иначе утром никто не войдёт, а регламентные задания (обмены, загрузка курсов) не выполнятся.
Если консоль просит пароль администратора кластера
Если на кластере заведены администраторы, консоль запросит их учётные данные при открытии списка сеансов. Это не пароль пользователя 1С. Если пароль потерян, не пересоздавайте кластер: обратитесь к администратору сервера или восстановите каталог настроек кластера из резервной копии при остановленной службе.
Шаг 3. Завершение сеансов из командной строки через rac
Когда консоли под рукой нет (сервер на Linux, доступ только по SSH) или задачу нужно автоматизировать, используйте утилиту rac. Она работает через сервер администрирования ras, который должен быть запущен (по умолчанию слушает порт 1545).
Запуск ras в фоне на сервере:
ras cluster --daemon
Дальше последовательность такая:
:: 1. Узнать идентификатор кластера
rac cluster list
:: 2. Список баз кластера — нужен UUID базы
rac infobase summary list --cluster=<uuid_кластера>
:: 3. Список сеансов
rac session list --cluster=<uuid_кластера> --infobase=<uuid_базы>
:: 4. Завершить конкретный сеанс
rac session terminate --cluster=<uuid_кластера> --session=<uuid_сеанса>
Если на кластере есть администратор, к каждой команде добавьте --cluster-user и --cluster-pwd. Запрет входа включается командой rac infobase update с параметрами блокировки сеансов и регламентных заданий; ей нужны логин и пароль администратора базы. Точный набор ключей для вашей версии платформы проверьте командой rac help infobase.
Удобный приём — запрашивать у rac session list только нужные поля и фильтровать вывод: так видно, кто держит лицензию (rac session list --licenses) и какие сеансы висят дольше остальных.
rac и ras лежат в каталоге bin установленной платформы. Версия rac должна совпадать с версией сервера, иначе команды вернут ошибку несовместимости.
Шаг 4. Ищем, кто держит блокировку и транзакцию
Бывает, что все сеансы удалены, а монопольный режим по-прежнему не ставится. Или один пользователь «повесил» базу долгим проведением, и остальные ловят ошибку Конфликт блокировок при выполнении транзакции. Тут нужно найти виновника, а не выгонять всех подряд.
В консоли кластера:
- 🔒 узел базы →
Блокировкипоказывает, какие сеансы держат блокировки объектов и самой базы; - ⏱ в списке
Сеансысмотрите колонки «Время вызова СУБД (текущее)» и «Захвачено СУБД»: сеанс, у которого время вызова растёт минутами, обычно и держит транзакцию; - 🧵 колонка «Рабочий процесс» подскажет, на каком
rphostвисит сеанс.
Если и в консоли пусто, проверьте сторону СУБД. Для MS SQL Server блокирующий запрос покажет:
SELECT session_id, blocking_session_id, wait_type, wait_time, command
FROM sys.dm_exec_requests
WHERE blocking_session_id <> 0;
Для PostgreSQL — длинные транзакции:
SELECT pid, state, xact_start, now() - xact_start AS dlitelnost, query
FROM pg_stat_activity
WHERE xact_start IS NOT NULL
ORDER BY xact_start;
Найденное соединение СУБД сопоставьте с сеансом 1С по времени начала и рабочему процессу. Завершать соединение средствами СУБД в обход 1С не стоит: сеанс останется в кластере «зомби», а транзакция откатится непредсказуемо долго. Правильнее удалить сеанс в консоли и дождаться отката.
Файловая база: кого не видно в списке
У файловой базы нет кластера. Пользователя держит открытый файл 1Cv8.1CD. Если он пропал из «Активных пользователей», а база всё равно занята:
- На терминальном сервере найдите процесс
1cv8.exeили1cv8c.exeэтого пользователя в диспетчере задач на вкладке «Пользователи» и завершите его. - Если база лежит в общей папке, откройте на файловом сервере
compmgmt.msc → Общие папки → Открытые файлыи закройте открытый1Cv8.1CD.
Закрытие файла посреди записи может повредить базу. Делайте это, только когда пользователь точно ничего не проводит, и после этого запустите chdbfl.exe или тестирование.
Шаг 5. Последний рубеж: завершение процесса rphost
Если сеанс не удаляется из консоли и висит в статусе удаляемого десятки минут, остаётся завершить рабочий процесс rphost, на котором он работает.
Завершение rphost обрывает ВСЕ сеансы на этом процессе, не только зависший. Делайте это вне рабочего времени или после предупреждения людей.
Как найти нужный процесс:
- В консоли откройте
Рабочие процессыи посмотрите PID процесса, указанного у зависшего сеанса. - На сервере 1С в диспетчере задач (вкладка «Подробности») найдите
rphost.exeс этим PID и завершите его. В Linux —kill <PID>; если процесс не реагирует,kill -9 <PID>. - Менеджер кластера сам поднимет новый рабочий процесс. Проверьте, что зависший сеанс исчез из списка.
Перезапускать всю службу «Агент сервера 1С:Предприятия» нужно ещё реже: это отключит пользователей всех баз кластера. Прибегайте к этому, только если не отвечает сам менеджер кластера.
Чтобы рабочие процессы не накапливали проблем, в свойствах кластера есть «Интервал перезапуска», допустимый объём памяти и флажок «Принудительно завершать проблемные процессы». Плановый перезапуск ночью снимает часть «вечных» сеансов без ручного вмешательства.
Блокировка работы пользователей внутри программы и ночное расписание
В типовых конфигурациях на БСП (БП 3.0, ЗУП 3.1, УТ 11, КА, ERP) есть своя форма: Администрирование → Поддержка и обслуживание → Блокировка работы пользователей. Она работает и для файловых, и для серверных баз. Задаёте сообщение, время начала и окончания, код разрешения — и нажимаете «Установить блокировку». Пользователям за несколько минут показывается предупреждение, затем программа сама завершает их сеансы.
Для серверной базы форма может спросить пароль администратора кластера: блокировка ставится через сервер. Для файловой ничего дополнительного не нужно.
Тот же механизм вызывается из командной строки параметрами запуска БСП. Это основа ночного сценария обновления:
@echo off
set V8="C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe"
set BASE=/S"srv1c\buh"
set ADM=/N"Администратор" /P"пароль"
set CODE=upd2210
:: 1. Выгнать пользователей и запретить вход
%V8% ENTERPRISE %BASE% %ADM% /C"ЗавершитьРаботуПользователей" /UC%CODE% /DisableStartupMessages
:: 2. Обновить конфигурацию базы данных
%V8% DESIGNER %BASE% %ADM% /UC%CODE% /UpdateDBCfg /Out"C:\1c_logs\update.log"
:: 3. Снять блокировку
%V8% ENTERPRISE %BASE% %ADM% /C"РазрешитьРаботуПользователей" /UC%CODE% /DisableStartupMessages
Повесьте этот файл в «Планировщик заданий» Windows на 23:00, запуск от учётной записи, у которой есть доступ к каталогу платформы и к логу. Лог /Out смотрите утром: в нём видно, удалось ли установить монопольный режим.
Пароль администратора в bat-файле лежит открытым текстом. Ограничьте доступ к файлу правами NTFS или храните его на сервере, куда у пользователей нет входа.
Регламентные задания внутри самой базы на время работ тоже стоит придержать. В консоли это флажок блокировки регламентных заданий, в программе — Администрирование → Обслуживание → Регламентные операции → Регламентные и фоновые задания, где видно расписание каждого задания. Сдвиньте обмены и загрузки так, чтобы они не стартовали в окне обновления.
Частые вопросы
Можно ли отключить пользователя прямо из Конфигуратора?
rac или форму блокировки в программе. В серверной базе свежие версии платформы предлагают завершить сеансы при попытке обновить конфигурацию БД.