Принудительное отключение чужого сеанса Конфигуратора: серверная и файловая база

· 10 мин

Содержание

Выкинуть пользователя из Конфигуратора 1С проще всего в клиент-серверной базе: откройте консоль администрирования серверов 1С, найдите базу, перейдите в «Сеансы», выделите сеанс с приложением «Конфигуратор» и удалите его. В файловой базе консоли нет, поэтому сеанс снимают на уровне Windows: закрывают открытый файл 1Cv8.1CD на файловом сервере или завершают процесс 1cv8.exe на компьютере, где запущен Конфигуратор.

Какой способ выбрать, зависит от режима базы и от того, где «застрял» пользователь:

СитуацияСпособРиск
Серверная база, человек на месте или ушёл домойКонсоль кластера, удаление сеансаПотеря несохранённых правок в конфигурации
Серверная база, нужно делать это регулярноСкрипт на racТот же, плюс ошибка в фильтре заденет не те сеансы
Файловая база по сетиЗакрыть открытый файл на сервереВозможны ошибки в базе, нужна проверка
Сеанс на терминальном сервереЗавершить процесс 1cv8.exe или выйти из сеанса WindowsОбрываются все программы этого пользователя
Всё закрыто, а база «занята»Удалить 1Cv8.1CL (файловая)Безопасно только при нуле активных сеансов

Монопольный режим: что он делает и как узнать, кто держит базу

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

Типичные тексты, после которых начинают искать, как выкинуть пользователя:

  • 🔒 Невозможно установить монопольный режим — в базе есть чужие сеансы;
  • 🔒 Ошибка блокировки информационной базы для конфигурирования — конфигурацию уже открыл на редактирование другой Конфигуратор.

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

  1. В Конфигураторе откройте Администрирование → Активные пользователи.
  2. Посмотрите колонки «Приложение», «Компьютер», «Начало работы».
  3. Сеанс с приложением «Конфигуратор» и есть тот, что мешает.

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

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

Как отключить пользователя от Конфигуратора через консоль кластера

Способ для клиент-серверной базы. Консоль администрирования серверов 1С устанавливается вместе с платформой, если отмечен компонент администрирования. Ярлык обычно лежит в меню «Пуск» в папке 1С:Предприятие.

Удаление сеанса

  1. Откройте консоль и разверните узел сервера, затем Кластеры → <ваш кластер> → Информационные базы → <ваша база> → Сеансы.
  2. В списке найдите строку, где в колонке «Приложение» стоит «Конфигуратор». Сверьте пользователя и компьютер.
  3. Щёлкните строку правой кнопкой и выберите «Удалить».
  4. Обновите список. Сеанс должен исчезнуть, а у пользователя Конфигуратор сообщит о разрыве соединения.

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

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

Чтобы он не зашёл снова

Пока вы готовите обновление, пользователь может открыть Конфигуратор повторно. Защитите базу блокировкой:

  1. В консоли откройте свойства информационной базы.
  2. Отметьте «Блокировка начала сеансов включена», задайте время начала и конца, текст сообщения.
  3. Впишите «Код разрешения» — например, obnov77.
  4. Сами входите с параметром запуска /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 в папке базы. Отключить его можно двумя путями: закрыть файл на стороне сервера или завершить процесс на компьютере пользователя (об этом следующий раздел).

Закрыть файл на файловом сервере

На компьютере, где лежит папка базы:

  1. Откройте Управление компьютером → Общие папки → Открытые файлы.
  2. Найдите путь к 1Cv8.1CD и пользователя Windows, который его держит.
  3. Правой кнопкой — «Закрыть открытый файл».

То же из командной строки с правами администратора:

net file
net file <ID> /close

Первая команда выводит список открытых файлов с номерами, вторая закрывает файл по номеру.

Закрытие файла посреди записи может повредить базу. Делайте это, когда пользователь точно ничего не сохраняет. После принудительного закрытия запустите проверку утилитой chdbfl.exe из папки bin платформы — разумеется, когда в базе никого нет.

Файл 1Cv8.1CL

Рядом с 1Cv8.1CD лежит служебный файл блокировки 1Cv8.1CL. Пока база открыта, Windows не даст его удалить. Бывает, что все вышли, процессов 1cv8.exe нигде нет, а база по-прежнему не открывается монопольно. Тогда:

  1. Убедитесь, что к папке базы никто не подключён (net file пуст по этому пути).
  2. Переименуйте 1Cv8.1CL, например в 1Cv8.1CL.old.
  3. Откройте базу. Платформа создаст файл заново, старый можно удалить.

Если файл не переименовывается, значит, его кто-то держит — ищите этот сеанс, а не пытайтесь удалить файл сторонними утилитами-«разблокировщиками».

Завершение процесса 1cv8.exe в Диспетчере задач Windows

Подходит и для файловых баз, и для случая, когда Конфигуратор завис на рабочем месте или на терминальном сервере.

Сложность в том, что и толстый клиент, и Конфигуратор — это один и тот же 1cv8.exe. Тонкий клиент — отдельный процесс 1cv8c.exe. Отличить Конфигуратор помогает командная строка запуска: в ней есть слово DESIGNER.

Через Диспетчер задач

  1. Откройте Диспетчер задач, вкладку «Подробности».
  2. Правой кнопкой по заголовку колонок → «Выбрать столбцы» → отметьте «Командная строка» и «Имя пользователя».
  3. Найдите 1cv8.exe, у которого в командной строке есть DESIGNER, и проверьте пользователя.
  4. «Снять задачу».

Через 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. Тот же скрипт из раздела выше, поставленный в планировщик перед ночным регламентом, снимает забытые Конфигураторы без участия администратора.
Перед обновлением рабочей базы
Выполнено: 0 / 6

Частые вопросы

Узнает ли пользователь, что его отключили?
Да. Конфигуратор сообщит о потере соединения с базой или о завершении сеанса администратором. Несохранённые изменения конфигурации при этом теряются.
Можно ли отключить Конфигуратор, не имея прав администратора кластера?
Если в кластере заведены администраторы — нет, консоль и rac потребуют их логин и пароль. Если администраторы не заданы, удалить сеанс может любой, кто открыл консоль на машине с доступом к серверу.
Сломается ли база, если удалить сеанс Конфигуратора?
Если в нём не шла запись, база не пострадает: пропадут только несохранённые правки разработчика. Опасно прерывать обновление конфигурации базы данных и загрузку .dt.
Почему после удаления сеанс через минуту появляется снова?
Пользователь переподключился сам, или Конфигуратор запускает регламентный скрипт. Включите блокировку начала сеансов и выясните, кто и откуда входит, по колонке «Компьютер».
Как выкинуть только себя, если мой Конфигуратор завис?
В клиент-серверной базе удалите свой сеанс в консоли. В файловой — завершите свой 1cv8.exe с DESIGNER в командной строке, а затем проверьте, что файл 1Cv8.1CD больше не открыт.