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

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

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

Механизм монопольного режима в 1С

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

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

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

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

💡

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

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

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

Чтобы выгнать пользователей через консоль, выполните следующие шаги:

  • 🖥️ Запустите консоль администрирования (обычно находится в меню Пуск в папке 1С Предприятие).
  • 📂 Раскройте дерево кластера серверов и найдите нужную информационную базу.
  • 👥 Перейдите в раздел Сеансы (Sessions). Здесь отобразится список всех активных подключений.
  • ❌ Выделите ненужные сеансы, нажмите правую кнопку мыши и выберите Завершить.

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

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

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

Программное завершение через внешние обработки

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

Пример алгоритма такой обработки выглядит следующим образом:

Сеансы = СеансыИнформационнойБазы();

Для Каждого Сеанс Из Сеансы Цикл

Если Сеанс.ЭтоСеансТекущегоПользователя() Тогда

Продолжить;

КонецЕсли;

СеансыИнформационнойБазы().Завершить(Сеанс);

КонецЦикла;

Такой подход дает возможность реализовать сложную логику отбора. Например, можно выгнать только тех пользователей, которые работают более 2 часов, или только тех, кто запустил конкретную форму. Это делает метод программным и гибким инструментом в руках опытного разработчика.

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

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

Нюансы работы с таблицей сеансов

Таблица сеансов обновляется не мгновенно. Между моментом фактического выхода пользователя и исчезновением записи из таблицы может пройти от 10 до 60 секунд в зависимости от настроек кластера.

Работа с блокировками на уровне СУБД

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

Для решения таких проблем необходимо использовать инструменты самой СУБД. В MS SQL Server это может быть команда KILL, в PostgreSQL — функция pg_terminate_backend. Перед применением этих методов критически важно идентифицировать правильный PID процесса (Process ID).

Таблица ниже демонстрирует примерный план действий при работе с блокировками в MS SQL:

Этап Действие Риск
1 Выявление блокирующего процесса через sp_who2 Минимальный
2 Проверка выполняемого запроса через DBCC INPUTBUFFER Минимальный
3 Попытка завершения через консоль 1С Средний
4 Принудительный KILL процесса в SQL Высокий (откат транзакции)

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

💡

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

Автоматизация вытеснения пользователей по расписанию

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

Существует несколько подходов к автоматизации:

  • 🤖 Использование ключей запуска 1С с параметрами монопольного режима.
  • ⏰ Настройка регламентного задания в самой 1С, которое проверяет время и завершает сеансы.
  • 🛠️ Применение утилит командной строки кластера серверов (ras) для снятия сессий.

При использовании утилиты ras (1C:Enterprise 8 Remote Administration Server), администратор может отправить команду на кластер без входа в графический интерфейс. Это особенно удобно для серверов без графической оболочки (Core-версии Windows или Linux).

Пример команды для завершения всех сеансов конкретной базы через ras выглядит сложно, но эффективен в скриптах:

ras cluster list --cluster=UUID_кластера

ras session clear --cluster=UUID_кластера --base=UUID_базы

⚠️ Внимание: Интерфейс командной строки (CLI) утилиты ras может меняться в разных версиях платформы 1С. Проверяйте синтаксис команд в документации к вашей конкретной версии сервера.

Автоматизация требует тщательного тестирования. Убедитесь, что скрипт не сработает в рабочее время из-за сбоя часов на сервере или ошибки в логике условия запуска.

☑️ Подготовка к автоматическому сбросу

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

Частые ошибки и способы их устранения

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

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

Еще одна ошибка — попытка выгнать пользователей, удаляя файлы блокировок (.lck) в файловом варианте базы вручную. Удаление файлов .lck при активной работе пользователей гарантированно приведет к повреждению базы данных и невозможности её дальнейшего открытия. Никогда не применяйте этот метод "варварского" освобождения.

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

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

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

Что будет с документом, если выгнать пользователя в момент записи?

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

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

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

Влияет ли завершение сеанса на лицензирование 1С?

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

Можно ли запретить пользователю заходить в базу, пока идет обновление?

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