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

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

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

Завершение сеансов через интерфейс 1С Предприятие

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

После входа в систему перейдите в раздел администрирования. Путь может незначительно отличаться в зависимости от конфигурации, но логика едина. Обычно это меню Администрирование → Серверы 1С Предприятия или Администрирование → Пользователи и права → Активные пользователи. Здесь вы увидите список всех текущих подключений с детальной информацией: кто зашел, с какого компьютера, сколько времени длится сеанс и какие объекты заблокированы.

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

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

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

📊 Как часто вам приходится завершать сеансы пользователей?
Ежедневно
Раз в неделю
Редко, при ЧП
Никогда, у нас порядок

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

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

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

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

☑️ Действия в консоли администрирования

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

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

Файловый режим: монопольное использование и удаление Lock-файлов

В файловом варианте работы базы данных (когда база лежит в общей папке или на локальном диске) механизм блокировок реализован иначе. Здесь ключевую роль играют служебные файлы блокировок с расширением .lck. Если пользователь некорректно завершил работу (например, выдернул шнур питания или завис Windows), такой файл может остаться в папке базы, и система будет считать, что пользователь все еще работает.

Чтобы выкинуть пользователя в файловом режиме, первым делом попытайтесь запустить 1С в режиме монопольного использования. Для этого в окне запуска базы поставьте галочку Монопольный режим. Если база свободна, вы войдете в нее и сможете провести необходимые регламентные операции, например, тестирование и исправление, которое автоматически снимет старые блокировки.

Если вход в монопольном режиме невозможен из-за сообщения о том, что база занята, придется действовать вручную через файловую систему. Зайдите в каталог, где физически расположена база данных (файл 1Cv8.1CD или папка с файлами 1Cv8.1D). Найдите файлы с расширением .lck. Эти файлы содержат информацию о блокировках. Их можно удалить, но только если вы на 100% уверены, что активные пользователи в данный момент не проводят запись.

\\server\base\1Cv8.1CD.lck

\\server\base\1Cv8CImb.lck

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

Почему появляются файлы .lck?

Файлы блокировки создаются платформой 1С при каждом подключении к базе. В нормальном режиме они удаляются автоматически при корректном выходе пользователя. Если процесс 1C.exe завершается аварийно (краш системы, отключение электричества), файл не успевает удалиться и продолжает блокировать доступ для других, сигнализируя о "занятости" базы.

Радикальные меры: остановка служб и процессов

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

Для клиент-серверного варианта необходимо зайти на сервер под учетной записью администратора и открыть оснастку services.msc (Службы). Найдите службу с названием "Агент сервера 1С:Предприятия" (ragent). Остановка этой службы приведет к завершению всех рабочих процессов rphost и rmngr. Все пользователи будут разорваны мгновенно.

Альтернативный способ — использование Диспетчера задач. На вкладке "Подробности" найдите процессы rphost.exe. Это рабочие процессы, в которых крутятся сеансы пользователей. Завершение дерева процессов rphost освободит память и снимет блокировки. Однако агент сервера (ragent) при этом может продолжать работать, и пользователи смогут подключиться снова почти сразу, если причина зависания не устранена.

Процесс Назначение Последствия остановки
ragent.exe Агент сервера, управляет кластером Полная недоступность всех баз на кластере
rmngr.exe Менеджер кластера баз данных Невозможность подключения к конкретным базам
rphost.exe Рабочий процесс, исполняет код 1С Разрыв сеансов конкретных пользователей
1Cv8.exe Клиентское приложение (на ПК пользователя) Закрытие программы только у конкретного юзера

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

💡

Перед остановкой службы ragente отправьте сообщение в корпоративный чат с предупреждением о технических работах длительностью 2-3 минуты. Это снизит градус напряжения среди пользователей.

Прямое воздействие через SQL Server или PostgreSQL

Для опытных администраторов, работающих с SQL-версиями баз данных, существует возможность управления сеансами на уровне СУБД. Этот метод требует высокой квалификации, так как вы работаете напрямую с движком данных, минуя логику платформы 1С. Ошибки здесь могут привести к повреждению базы данных.

В MS SQL Server можно использовать системную хранимую процедуру sp_who2 для просмотра активных процессов и команду KILL для их завершения. Сначала узнайте ID сеанса (SPID), который соответствует зависшему пользователю 1С. Это можно сделать, сопоставив имя процесса в SQL с именем пользователя в 1С или временем начала соединения.

-- Просмотр активных процессов

sp_who2 'active'

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

KILL 54

В PostgreSQL ситуация аналогична: используйте представление pg_stat_activity для поиска зависших запросов и функцию pg_terminate_backend(pid) для разрыва соединения. Преимущество этого метода в том, что он позволяет убить конкретный тяжелый запрос, который блокирует таблицы, не затрагивая другие сеансы пользователя, если они не связаны с той же транзакцией.

⚠️ Внимание: Использование команды KILL в SQL прерывает транзакцию на уровне базы данных. Если в момент убийства процесса шла запись сложных объектов, может потребоваться восстановление из резервной копии или длительное восстановление базы при старте СУБД.

Используйте этот метод только если инструменты 1С (Консоль администрирования) не видят сеанс или не могут его завершить. Часто бывает, что сеанс в 1С уже считается завершенным, но на уровне SQL висит открытый транзакционный блок, который держит блокировки на таблицах. В таком случае "убийство" процесса в SQL — единственное решение.

Профилактика блокировок и настройка регламентных заданий

Лучший способ борьбы с зависшими пользователями — это профилактика. Платформа 1С предоставляет мощные инструменты для автоматического контроля длительности сеансов. Настройка регламентных заданий позволяет системе самостоятельно "убивать" слишком долгие подключения без участия администратора.

В типовой конфигурации (например, Бухгалтерия Предприятия или ЗУП) зайдите в раздел Администрирование → Обслуживание → Регламентные операции. Найдите задание "Завершение зависших сеансов". Активируйте его и настройте расписание, например, на запуск каждые 5 или 10 минут. Укажите лимит времени бездействия, после которого сеанс будет считаться зависшим.

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

💡

Автоматизация завершения зависших сеансов через регламентные задания снижает нагрузку на администратора на 90% и предотвращает накопление "мусорных" подключений в часы пик.

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

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

Безопасно ли удалять файлы .lck в работающей базе?

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

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

Возможно, завис не сам сеанс 1С, а процесс на уровне операционной системы или СУБД. Попробуйте перезапустить службу агента сервера 1С. Если это файловая база, проверьте, не открыт ли файл базы другим процессом (например, антивирусом или процессом индексации Windows).

Можно ли выкинуть пользователя, если я не знаю его пароль администратора?

Через интерфейс 1С — нет, нужны полные права. Однако через Консоль администрирования серверов 1С (для клиент-серверного варианта) или через остановку служб Windows вы можете сделать это, имея права локального администратора на сервере, независимо от прав внутри программы 1С.

Что делать, если зависла обновление конфигурации?

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

Как узнать, кто именно держит блокировку?

Используйте отчет "Активные пользователи" в режиме предприятия с правами администратора. Там есть колонка "Блокировки", которая показывает, какие объекты заблокированы данным сеансом. В консольном режиме можно использовать утилиту chdbfl.exe для файловых баз или скрипты SQL для серверных.