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

Вопрос о том, как принудительно завершить работу других пользователей, является критическим при выполнении технических работ. "Выкинуть" пользователя можно несколькими способами: через интерфейс администратора кластера, средствами SQL или непосредственно через механизмы самой платформы. Понимание этих процессов позволяет избежать простоев и конфликтов блокировок.

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

Понятие монопольного режима и блокировок

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

Если вы попытаетесь запустить Конфигуратор без монопольного режима, система предложит вам работать в обычном режиме, где изменение структуры базы данных невозможно. Платформа 1С:Предприятие использует механизмы блокировок (locks) для защиты целостности данных от одновременной записи.

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

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

Механизм блокировок в 1С работает на уровне транзакций СУБД и внутренних объектов платформы. Понимание разницы между сеансом (логическим подключением) и процессом (физическим выполнением кода) важно для правильной диагностики проблем.

💡

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

Завершение сеансов через Консоль администрирования

Наиболее цивилизованный и рекомендуемый способ управления пользователями — использование Консоли администрирования серверов 1С. Этот инструмент позволяет видеть все активные соединения в реальном времени и управлять ими централизованно.

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

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

  • 🔍 Идентификатор сеанса — уникальный номер, присваиваемый при подключении.
  • 💻 Хост-компьютер — IP-адрес или имя машины, с которой выполнено подключение.
  • ⏱️ Время активности — длительность текущего сеанса, помогает выявить "зависших" пользователей.
  • 📄 Приложение — режим запуска (1С:Предприятие, Конфигуратор, Фоновое задание).

Если стандартное завершение не срабатывает и сеанс остается в списке со статусом "Завершается", возможно, процесс на стороне клиента или сервера завис. В этом случае может потребоваться перезапуск службы сервера 1С, но это крайняя мера, влияющая на всех пользователей кластера.

📊 Как вы чаще всего завершаете сеансы 1С?
Через консоль администрирования
Перезапуском службы
rphost
Через SQL-запрос
Жду пока сами выйдут

Использование утилиты rac для командной строки

Для автоматизации процессов или работы на серверах без графического интерфейса (Core-версии Windows или Linux) идеально подходит консольная утилита rac (Remote Administration Console). Она входит в состав дистрибутива сервера 1С и позволяет выполнять те же действия, что и графическая консоль.

Синтаксис команды для завершения сеансов достаточно прост, но требует точного указания адреса кластера и порта. Сначала необходимо получить список активных сеансов, чтобы определить их идентификаторы (session-id).

rac session list --cluster=192.168.1.10:1541

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

rac session terminate --cluster=192.168.1.10:1541 --session=

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

⚠️ Внимание: Утилита rac чувствительна к правам доступа. Убедитесь, что пользователь, от имени которого запускается скрипт, имеет права администратора кластера 1С.

Важно отметить, что параметры кластера (порт и адрес) могут отличаться от стандартных в вашей инфраструктуре. Всегда сверяйте их с настройками службы 1С:Предприятие 8.3 Сервер в оснастке services.msc или конфигурационных файлах.

Секрет быстрой работы rac

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

Анализ таблиц блокировок и зависших транзакций

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

В платформе 1С существует встроенный механизм анализа блокировок. В конфигураторе (если удалось зайти) или в режиме предприятия с правами администратора можно использовать обработку "Монитор блокировок". Однако, если вход заблокирован, придется использовать SQL-запросы.

Для MS SQL Server можно выполнить запрос к системным таблицам, чтобы найти процессы, блокирующие ресурсы 1С. Это позволяет увидеть не только сессию 1С, но и конкретный запрос, который выполняется в данный момент.

Тип блокировки Уровень риска Возможная причина Метод решения
Табличная (Table Lock) Высокий Массовое обновление, отчет Ожидание завершения или KILL
Страничная (Page Lock) Средний Интенсивная запись Оптимизация индексов
Строчная (Row Lock) Низкий Редактирование документа Закрытие формы пользователем
Схемная (Schema Lock) Критический Изменение структуры БД Только монопольный режим

Если вы обнаружили процесс, который висит слишком долго и блокирует работу других, его можно завершить командой KILL в среде SQL Management Studio. Однако делать это нужно с крайней осторожностью, так как откат большой транзакции может занять значительное время.

💡

Блокировки на уровне СУБД часто являются следствием неоптимизированных запросов, а не просто "зависшего" пользователя. Анализ планов выполнения запросов поможет предотвратить проблему в будущем.

Принудительное завершение процессов rphost

В случаях, когда мягкие методы не работают и сеанс не исчезает из списка, приходится прибегать к "тяжелой артиллерии" — завершению рабочих процессов rphost.exe. Каждый клиентский сеанс обслуживается отдельным процессом rphost на сервере 1С.

Найти нужный процесс можно через Диспетчер задач Windows или утилиту top в Linux. Однако, так как процессов может быть много, ориентироваться нужно на идентификатор процесса (PID), который часто можно сопоставить с ID сеанса через консоль администрирования или логи сервера.

Завершение процесса rphost приводит к немедленному разрыву соединения с клиентом. Платформа 1С автоматически перезапустит рабочий процесс при следующей попытке подключения пользователя, но текущий сеанс будет уничтожен без возможности восстановления состояния.

  • 🛑 Диспетчер задач: найдите процесс rphost.exe, проверьте потребление памяти (обычно зависший процесс ест мало или много ресурсов нехарактерным образом).
  • 🔨 Команда taskkill: используйте taskkill /F /PID <номер_процесса> для принудительного убийства процесса через командную строку.
  • 🔄 Перезапуск службы: остановка службы 1С:Предприятие 8.3 Сервер убьет все процессы rphost и ragent.

Этот метод является самым грубым и должен использоваться только в экстренных ситуациях, когда другие способы исчерпаны. Частое использование этого метода может указывать на проблемы со стабильностью сервера или сетевого оборудования.

⚠️ Внимание: Убийство процесса rphost не откатывает транзакции на уровне СУБД мгновенно. База данных может потребовать время на восстановление согласованности после аварийного завершения процесса.

Настройка регламентных работ и расписания

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

Используйте встроенный планировщик заданий 1С или средства операционной системы для автоматизации. Скрипт обновления может сначала проверять наличие активных сеансов и, при их обнаружении, отправлять уведомления пользователям или ждать окончания рабочего дня.

Также рекомендуется настроить параметры кластера серверов так, чтобы неактивные сеансы завершались автоматически. В свойствах информационной базы в консоли администрирования есть параметры Время жизни неактивного сеанса. Установка значения, например, в 60 минут, позволит автоматически очищать базу от "забытых" подключений.

☑️ Подготовка к монопольным работам

Выполнено: 0 / 5

Часто задаваемые вопросы (FAQ)

Можно ли выкинуть пользователя, если я сам зашел в базу в обычном режиме?

Нет, для завершения чужих сеансов и получения монопольного доступа вы должны иметь права администратора базы данных. Если вы зашли в обычном режиме, используйте обработку "Администрирование" -> "Активные пользователи" (если она доступна и настроена), но надежнее использовать внешнюю консоль администрирования серверов.

Почему после завершения сеанса блокировка не снимается?

Это означает, что транзакция осталась открытой на уровне СУБД. Сессия 1С разорвана, но процесс в SQL Server или PostgreSQL все еще держит блокировку. Необходимо найти соответствующий SPID (в MS SQL) и завершить его средствами базы данных.

Влияет ли завершение сеанса на фоновые задания?

Да, если фоновое задание выполнялось в контексте этого сеанса, оно будет прервано. Данные, обработанные до момента прерывания, могут быть не сохранены, если транзакция не была зафиксирована. Всегда проверяйте вкладку "Фоновые задания" перед массовым сбросом сеансов.

Как узнать, кто именно мешает зайти в монопольном режиме?

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