Принудительное отключение чужого сеанса Конфигуратора: серверная и файловая база
Содержание
Выкинуть пользователя из Конфигуратора 1С проще всего в клиент-серверной базе: откройте консоль администрирования серверов 1С, найдите базу, перейдите в «Сеансы», выделите сеанс с приложением «Конфигуратор» и удалите его. В файловой базе консоли нет, поэтому сеанс снимают на уровне Windows: закрывают открытый файл 1Cv8.1CD на файловом сервере или завершают процесс 1cv8.exe на компьютере, где запущен Конфигуратор.
Какой способ выбрать, зависит от режима базы и от того, где «застрял» пользователь:
| Ситуация | Способ | Риск |
|---|---|---|
| Серверная база, человек на месте или ушёл домой | Консоль кластера, удаление сеанса | Потеря несохранённых правок в конфигурации |
| Серверная база, нужно делать это регулярно | Скрипт на rac | Тот же, плюс ошибка в фильтре заденет не те сеансы |
| Файловая база по сети | Закрыть открытый файл на сервере | Возможны ошибки в базе, нужна проверка |
| Сеанс на терминальном сервере | Завершить процесс 1cv8.exe или выйти из сеанса Windows | Обрываются все программы этого пользователя |
| Всё закрыто, а база «занята» | Удалить 1Cv8.1CL (файловая) | Безопасно только при нуле активных сеансов |
Монопольный режим: что он делает и как узнать, кто держит базу
Монопольный режим сам никого не выгоняет. Конфигуратор запрашивает его, когда нужно обновить конфигурацию
базы данных с изменением структуры, загрузить .dt, выполнить тестирование и исправление. Если в базе есть другие сеансы, платформа просто отказывает и показывает, кто подключён.
Типичные тексты, после которых начинают искать, как выкинуть пользователя:
- 🔒
Невозможно установить монопольный режим— в базе есть чужие сеансы; - 🔒
Ошибка блокировки информационной базы для конфигурирования— конфигурацию уже открыл на редактирование другой Конфигуратор.
В сообщении обычно перечислены соединения: приложение, компьютер, пользователь. Это первая подсказка, к кому идти. Второй источник — список активных пользователей:
- В Конфигураторе откройте
Администрирование → Активные пользователи. - Посмотрите колонки «Приложение», «Компьютер», «Начало работы».
- Сеанс с приложением «Конфигуратор» и есть тот, что мешает.
Первым делом напишите или позвоните человеку. Если он сам закроет Конфигуратор и сохранит правки, вы ничего не потеряете. Принудительное отключение — когда достучаться нельзя: сотрудник в отпуске, компьютер завис, сеанс остался после обрыва связи.
Если «Конфигуратор» висит от имени вашего же пользователя, это почти всегда ваш прошлый сеанс, который не закрылся после сбоя. С ним поступают так же, как с чужим.
Как отключить пользователя от Конфигуратора через консоль кластера
Способ для клиент-серверной базы. Консоль администрирования серверов 1С устанавливается вместе с платформой, если отмечен компонент администрирования. Ярлык обычно лежит в меню «Пуск» в папке 1С:Предприятие.
Удаление сеанса
- Откройте консоль и разверните узел сервера, затем
Кластеры → <ваш кластер> → Информационные базы → <ваша база> → Сеансы. - В списке найдите строку, где в колонке «Приложение» стоит «Конфигуратор». Сверьте пользователя и компьютер.
- Щёлкните строку правой кнопкой и выберите «Удалить».
- Обновите список. Сеанс должен исчезнуть, а у пользователя Конфигуратор сообщит о разрыве соединения.
Если на кластере заведены администраторы, консоль спросит логин и пароль администратора кластера. Без них удалить чужой сеанс не получится.
Всё, что разработчик изменил в конфигурации и не сохранил, пропадёт. Не удаляйте сеанс, если по нему сейчас идёт обновление конфигурации базы данных или загрузка .dt: прерванная реструктуризация может оставить базу в неработоспособном состоянии. Сначала уточните, что делает человек, или дождитесь окончания операции.
Чтобы он не зашёл снова
Пока вы готовите обновление, пользователь может открыть Конфигуратор повторно. Защитите базу блокировкой:
- В консоли откройте свойства информационной базы.
- Отметьте «Блокировка начала сеансов включена», задайте время начала и конца, текст сообщения.
- Впишите «Код разрешения» — например,
obnov77. - Сами входите с параметром запуска
/UCobnov77(без пробела после/UC). Остальных платформа не пустит.
Блокировка не завершает уже открытые сеансы. Поэтому порядок такой: сначала включите блокировку, потом удалите сеансы.
В типовых конфигурациях на БСП есть своя «Блокировка работы пользователей» в разделе Администрирование → Обслуживание. Она аккуратно выводит пользователей из режима 1С:Предприятия, но не рассчитывайте, что она закроет Конфигуратор. После её включения проверьте список сеансов в консоли.
Как выкинуть сеанс Конфигуратора командой rac
Когда консоли под рукой нет или отключать нужно по расписанию перед ночным обновлением, используйте утилиту rac из папки bin платформы. Она работает через сервер администрирования RAS: служба ras должна быть запущена, порт по умолчанию 1545.
Последовательность команд:
rem 1. Узнать идентификатор кластера
rac cluster list
rem 2. Узнать идентификатор базы
rac infobase summary list --cluster=<uuid_кластера>
rem 3. Посмотреть сеансы базы
rac session list --cluster=<uuid_кластера> --infobase=<uuid_базы>
rem 4. Завершить нужный сеанс
rac session terminate --cluster=<uuid_кластера> --session=<uuid_сеанса>
Если в кластере есть администратор, добавьте к командам --cluster-user=<имя> --cluster-pwd=<пароль>. У сеанса Конфигуратора в выводе session list стоит app-id : Designer. Для сравнения: толстый клиент — 1CV8, тонкий — 1CV8C, фоновое задание — BackgroundJob.
Скрипт PowerShell, который завершает все сеансы Конфигуратора в кластере:
$rac = "C:\Program Files\1cv8\<версия>\bin\rac.exe"
$cluster = "<uuid_кластера>"
$raw = (& $rac session list --cluster=$cluster) -join "`n"
$blocks = $raw -split "`n\s*`n"
foreach ($b in $blocks) {
if ($b -match 'app-id\s*:\s*Designer' -and $b -match 'session\s*:\s*([0-9a-f-]{36})') {
$id = $Matches[1]
Write-Host "Завершаю сеанс $id"
& $rac session terminate --cluster=$cluster --session=$id
}
}
rac выводит каждый сеанс блоком строк «ключ : значение», блоки разделены пустой строкой. Скрипт режет вывод на блоки и в каждом ищет признак Конфигуратора. Строка session-id под регулярное выражение не попадает: после слова session у неё идёт дефис, а не двоеточие.
Прежде чем ставить скрипт в планировщик, прогоните его без строки terminate и посмотрите, какие идентификаторы он выводит. Чтобы не задеть другие базы кластера, добавьте к session list фильтр --infobase=<uuid_базы>.
Полный список параметров для вашей версии показывает rac help session.
Файловая база: открытые файлы и файл блокировки 1Cv8.1CL
В файловом режиме нет кластера и нет сеансов, которые можно удалить. Конфигуратор пользователя просто держит открытым файл 1Cv8.1CD в папке базы. Отключить его можно двумя путями: закрыть файл на стороне сервера или завершить процесс на компьютере пользователя (об этом следующий раздел).
Закрыть файл на файловом сервере
На компьютере, где лежит папка базы:
- Откройте
Управление компьютером → Общие папки → Открытые файлы. - Найдите путь к
1Cv8.1CDи пользователя Windows, который его держит. - Правой кнопкой — «Закрыть открытый файл».
То же из командной строки с правами администратора:
net file
net file <ID> /close
Первая команда выводит список открытых файлов с номерами, вторая закрывает файл по номеру.
Закрытие файла посреди записи может повредить базу. Делайте это, когда пользователь точно ничего не сохраняет. После принудительного закрытия запустите проверку утилитой chdbfl.exe из папки bin платформы — разумеется, когда в базе никого нет.
Файл 1Cv8.1CL
Рядом с 1Cv8.1CD лежит служебный файл блокировки 1Cv8.1CL. Пока база открыта, Windows не даст его удалить. Бывает, что все вышли, процессов 1cv8.exe нигде нет, а база по-прежнему не открывается монопольно. Тогда:
- Убедитесь, что к папке базы никто не подключён (
net fileпуст по этому пути). - Переименуйте
1Cv8.1CL, например в1Cv8.1CL.old. - Откройте базу. Платформа создаст файл заново, старый можно удалить.
Если файл не переименовывается, значит, его кто-то держит — ищите этот сеанс, а не пытайтесь удалить файл сторонними утилитами-«разблокировщиками».
Завершение процесса 1cv8.exe в Диспетчере задач Windows
Подходит и для файловых баз, и для случая, когда Конфигуратор завис на рабочем месте или на терминальном сервере.
Сложность в том, что и толстый клиент, и Конфигуратор — это один и тот же 1cv8.exe. Тонкий клиент — отдельный процесс 1cv8c.exe. Отличить Конфигуратор помогает командная строка запуска: в ней есть слово DESIGNER.
Через Диспетчер задач
- Откройте Диспетчер задач, вкладку «Подробности».
- Правой кнопкой по заголовку колонок → «Выбрать столбцы» → отметьте «Командная строка» и «Имя пользователя».
- Найдите
1cv8.exe, у которого в командной строке естьDESIGNER, и проверьте пользователя. - «Снять задачу».
Через PowerShell
Get-CimInstance Win32_Process -Filter "Name='1cv8.exe'" |
Where-Object { $_.CommandLine -match 'DESIGNER' } |
Select-Object ProcessId, CommandLine
Stop-Process -Id <ProcessId> -Force
На терминальном сервере есть вариант грубее: завершить весь сеанс Windows пользователя. query session покажет номера сеансов, logoff <номер> выполнит выход. У человека закроются все программы, не только 1С, — предупредите его.
Не завершайте процесс rphost.exe на сервере 1С, чтобы выкинуть одного разработчика. Рабочий процесс обслуживает сеансы многих пользователей, и они оборвутся все разом. Это крайняя мера, и делать её стоит в нерабочее время.
В клиент-серверной базе после снятия процесса на клиенте сеанс в кластере может ещё повисеть. Проверьте консоль и при необходимости удалите его там.
Почему сеанс Конфигуратора не закрывается сам
Висящий сеанс — не всегда забывчивость коллеги. Частые причины:
- 💻 Сбой компьютера. Пользователь перезагрузил зависшую машину, а сервер 1С какое-то время считает сеанс живым.
- 🌐 Обрыв сети или VPN. В клиент-серверном режиме сеанс и соединение — разные вещи: сеанс может остаться в кластере без соединения. В списке сеансов консоли такие часто отмечены как спящие.
- 🖥️ Отключённый, а не завершённый сеанс RDP. Человек закрыл окно удалённого рабочего стола крестиком. Его Windows-сеанс и Конфигуратор продолжают жить на терминальном сервере.
- ⏳ Долгая операция. Сравнение и объединение, проверка конфигурации, обновление из хранилища могут идти десятки минут. Со стороны это выглядит как зависание, хотя процесс работает.
- 📂 Файловая база на сетевом диске. После обрыва связи SMB-сервер может держать файл открытым от имени отвалившегося клиента, пока не истечёт таймаут.
Перед удалением сеанса посмотрите в консоли время начала и, если колонка доступна, активность за последние минуты. Сеанс, который потребляет процессорное время сервера, скорее всего, что-то делает — у такого лучше спросить владельца.
Как не доводить до принудительного отключения
Почти все случаи, когда приходится выкидывать человека из Конфигуратора, решаются порядком работы:
- 🧪 Разработка на копии. Программист работает в тестовой базе, а в рабочую переносит готовый
.cfили.cfeв согласованное окно. Тогда в рабочей базе Конфигуратор открывают только на время обновления. - 📦 Хранилище конфигурации. При групповой разработке объекты захватывают в хранилище, а не держат всю конфигурацию открытой на редактирование. Конфликт «кто-то уже правит конфигурацию» уходит.
- 🕗 Окно обслуживания. Обновления и реструктуризация — в заранее объявленное время. За 10–15 минут включается блокировка начала сеансов с понятным текстом.
- ⏱️ Лимиты RDP. В групповой политике терминального сервера задайте лимит времени для отключённых сеансов, например 2 часа. Брошенные Конфигураторы будут закрываться сами.
- 🗒️ Сценарий на rac. Тот же скрипт из раздела выше, поставленный в планировщик перед ночным регламентом, снимает забытые Конфигураторы без участия администратора.