Принудительно отключаем зависший сеанс от файловой базы 1С

· 9 мин

Содержание

Чтобы выкинуть пользователя из файловой базы 1С, закройте его процесс 1cv8c.exe или 1cv8.exe на том компьютере, где он работает. Если до компьютера не добраться, закройте открытый файл 1Cv8.1CD на сервере с общей папкой: Управление компьютером → Общие папки → Открытые файлы. Консоли кластера и кнопки «Завершить сеанс» у файлового варианта нет.

Типичная ситуация: вечером нужно обновить конфигурацию , Конфигуратор требует монопольный режим, а в списке активных пользователей висит бухгалтер, который ушёл домой и оставил 1С открытой. Или сеанс остался «призраком» после сбоя сети. Способы идут от мягкого к жёсткому: сначала просим сеансы закрыться, потом снимаем процесс, и только в крайнем случае обрываем файл на сервере.

Почему в файловой базе нет кнопки «отключить пользователя»

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

Отсюда три вывода:

  • 🖥️ завершить сеанс можно только там, где запущен процесс 1С: на ПК пользователя или на терминальном сервере;
  • 📂 второй рычаг — сервер, где лежит папка с базой: там видно, кто держит файл, и это подключение можно оборвать;
  • 🔒 типовые конфигурации умеют попросить сеансы закрыться самостоятельно, но зависшая программа на просьбу не ответит.

Как узнать, кто сидит в базе

Перед отключением выясните, кого и где отключать.

  1. В Конфигураторе: Администрирование → Активные пользователи. Видно имя пользователя 1С, компьютер, время начала сеанса и режим (Предприятие, Конфигуратор, COM-соединение).
  2. В режиме Предприятия: Все функции → Стандартные → Активные пользователи. Если пункта «Все функции» нет в меню, включите его в параметрах: меню с тремя полосками → Сервис → Параметры → Отображать команду «Все функции».
  3. В БП 3.0 и ЗУП 3.1 тот же список есть в разделе Администрирование → Обслуживание (в старых релизах — «Поддержка и обслуживание»).

Колонка «Компьютер» — главная. По ней понятно, куда идти: на рабочую станцию бухгалтера или на терминальный сервер.

Блокировка работы пользователей и вход «с чёрного хода»

Это самый мягкий способ. Типовые конфигурации на БСП (Бухгалтерия, ЗУП, УТ, КА, ERP) умеют сами разослать предупреждение и закрыть сеансы .

  1. Откройте Администрирование → Обслуживание → Блокировка работы пользователей.
  2. Заполните сообщение для пользователей: «Обновление базы с 19:00, сохраните документы».
  3. Укажите время начала и окончания блокировки.
  4. Задайте код разрешения, например 7731. Он понадобится, чтобы зайти в заблокированную базу самому.
  5. Нажмите кнопку установки блокировки и завершения работы пользователей.

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

Как зайти в заблокированную базу

Пока блокировка действует, обычный вход запрещён. Администратор заходит с ключом /UC и кодом разрешения. Это и есть режим «скрытого администратора»: база закрыта для всех, кроме того, кто знает код.

"C:\Program Files\1cv8\common\1cestart.exe" DESIGNER /F"D:\Bases\Buh" /N"Администратор" /UC"7731"

Код можно дописать и в дополнительные параметры запуска в окне выбора базы: кнопка Изменить → последняя страница мастера → поле дополнительных параметров.

Блокировка не выгоняет зависшие сеансы. Если программа на ПК пользователя «не отвечает», она не получит команду на выход. Такие сеансы снимают способами из следующих разделов.

Как принудительно завершить сеанс пользователя 1С на его компьютере или терминале

Самый надёжный способ — закрыть процесс 1С. Перед этим предупредите человека, если можно: несохранённый документ пропадёт.

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

На рабочей станции пользователя:

  1. Откройте диспетчер задач (Ctrl+Shift+Esc).
  2. На вкладке «Подробности» найдите 1cv8c.exe (тонкий клиент) или 1cv8.exe (толстый клиент и Конфигуратор).
  3. Правой кнопкой → Снять задачу.

На терминальном сервере удобнее вкладка «Пользователи». Там видно, кто из сотрудников подключён. Правой кнопкой по пользователю → Выйти закроет весь его сеанс Windows вместе с 1С. Пункт Отключить только разорвёт RDP, а 1С продолжит держать базу.

Через командную строку

Если 1С работает на терминальном сервере, процессы удобно искать по пользователю Windows:

:: кто запустил 1С и под каким пользователем
tasklist /V /FI "IMAGENAME eq 1cv8c.exe"

:: закрыть 1С только у одного пользователя
taskkill /F /IM 1cv8c.exe /FI "USERNAME eq petrova"

:: выйти из сеанса Windows целиком: сначала узнать ID, потом выйти
quser
logoff 3

На удалённом компьютере в домене процесс завершают ключом /S:

taskkill /S BUH-PC02 /IM 1cv8c.exe /F

Не путайте 1cv8c.exe и 1cv8.exe. Если завершить все 1cv8.exe на сервере, вы закроете и собственный Конфигуратор.

Отключение пользователя от базы со стороны сервера с общей папкой

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

Через оснастку «Управление компьютером»

  1. На сервере, где лежит база, выполните compmgmt.msc.
  2. Перейдите в Общие папки → Открытые файлы.
  3. Найдите строки с путём к 1Cv8.1CD и 1Cv8.1CL. В колонке «Кем открыт» — учётная запись, в колонке рядом — компьютер.
  4. Правой кнопкой по строке → Закрыть открытый файл.

Через PowerShell

# кто держит файлы базы
Get-SmbOpenFile | Where-Object Path -like "*\Buh\1Cv8*" |
  Select-Object FileId, ClientUserName, ClientComputerName, Path

# закрыть все подключения конкретного компьютера к базе
Get-SmbOpenFile | Where-Object { $_.Path -like "*\Buh\1Cv8*" -and $_.ClientComputerName -eq "192.168.1.25" } |
  Close-SmbOpenFile -Force

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

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

Файл блокировки 1Cv8.1CL: когда его можно удалить

В папке файловой базы, кроме самой базы 1Cv8.1CD, лежат:

Файл или папкаЧто этоМожно ли удалить
1Cv8.1CDСами данные и конфигурацияНет, никогда
1Cv8.1CLФайл блокировок: кто сейчас работает с базойДа, когда никто не подключён
1Cv8LogЖурнал регистрацииМожно сократить, см. ниже

Вместо .lck из старых советов в файловой базе 8.3 роль файла блокировки играет 1Cv8.1CL. Платформа создаёт его при первом подключении и обновляет, пока сеансы открыты.

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

  1. Убедитесь, что 1С закрыта у всех, включая службы и обработки по расписанию.
  2. Скопируйте папку базы целиком в резервную копию.
  3. Удалите 1Cv8.1CL.
  4. Запустите базу. Платформа создаст файл заново.

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

Монопольный режим: для чего нужно выгонять всех

Чаще всего пользователей выгоняют ради монопольного режима. Он нужен не всегда, а только для операций, которые меняют структуру базы:

  • 🔧 обновление конфигурации базы данных после изменения или обновления конфигурации;
  • 📥 загрузка информационной базы из .dt;
  • 🩺 «Тестирование и исправление информационной базы»;

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

Если монопольный режим не устанавливается, Конфигуратор сообщает, что работают другие сеансы, и перечисляет их. Учитывайте и невидимых «пользователей»:

  • 📎 COM-соединения от внешних программ (сайт, обмены, отчёты в Excel);
  • ⏰ регламентные задания в файловой базе выполняются в одном из клиентских сеансов, поэтому отдельного процесса у них нет;
  • 🌐 веб-публикация: если файловая база опубликована через Apache или IIS, её держит процесс веб-сервера. Перезапустите его службу.

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

Журнал регистрации и кэш после аварийного выхода

Принудительное отключение иногда оставляет следы. Первый — раздутый или повреждённый журнал регистрации в папке 1Cv8Log. В нём бывает два формата: старый (файлы .lgf и .lgp) и SQLite (файл 1Cv8.lgd).

Сократить журнал штатно:

  1. В Конфигураторе откройте Администрирование → Журнал регистрации.
  2. Выберите команду сокращения журнала. Укажите дату, до которой записи удаляются.
  3. При желании сохраните удаляемые записи в отдельный файл — пригодится для разборов.

Чтобы журнал не рос бесконтрольно, задайте в Администрирование → Настройка журнала регистрации разделение по периодам (например, по месяцу). Старые периоды тогда легко архивировать.

Если журнал повреждён и база из-за него не открывается, при закрытой базе переименуйте папку 1Cv8Log в 1Cv8Log_old. Платформа создаст пустой журнал, история событий останется в старой папке.

Второй след — испорченный кэш на компьютере пользователя. Симптомы: ошибки при запуске, старая версия форм после обновления. Лечится запуском с ключом /ClearCache или удалением папок с длинными именами-GUID в %APPDATA%\1C\1cv8 и %LOCALAPPDATA%\1C\1cv8 при закрытой 1С.

Скрипт: отключить всех пользователей 1С по расписанию

Для ночного обслуживания удобно связать всё в один .bat и повесить его в Планировщик заданий. Конфигурации на БСП понимают команды запуска ЗавершитьРаботуПользователей и РазрешитьРаботуПользователей.

@echo off
set V8="C:\Program Files\1cv8\8.3.25.1374\bin\1cv8.exe"
set IB=/F"D:\Bases\Buh"
set USR=/N"Обслуживание" /P"пароль"
set CODE=/UC"7731"

:: 1. Блокировка и мягкое завершение сеансов средствами конфигурации
%V8% ENTERPRISE %IB% %USR% %CODE% /C"ЗавершитьРаботуПользователей" /DisableStartupMessages

:: 2. Даём сеансам 10 минут, затем добиваем зависшие (только на терминальном сервере)
timeout /t 600 /nobreak
taskkill /F /IM 1cv8c.exe

:: 3. Выгрузка копии базы
%V8% DESIGNER %IB% %USR% %CODE% /DumpIB"E:\Backup\buh.dt" /Out"E:\Backup\dump.log"

:: 4. Снимаем блокировку
%V8% ENTERPRISE %IB% %USR% %CODE% /C"РазрешитьРаботуПользователей" /DisableStartupMessages

Номер платформы в пути замените на свой. Отдельный пользователь «Обслуживание» с правами администратора лучше, чем личная учётная запись: пароль в файле видит любой, кто откроет скрипт. Положите .bat в папку, доступную только администратору.

Шаг 2 имеет смысл, только если скрипт запускается на терминальном сервере, где работают пользователи. Для рабочих станций в сети замените его закрытием открытых файлов через Close-SmbOpenFile.

Какая у вас ситуация?

Ошибки при отключении и как избежать зависших сеансов

Что чаще всего идёт не так:

  • ❌ Удалили 1Cv8.1CD вместо 1Cv8.1CL. Имена похожи. Перед удалением сверяйте расширение и размер: файл с данными весит сотни мегабайт.
  • ❌ Нажали «Отключить» вместо «Выйти» на терминальном сервере. Сеанс Windows остаётся, 1С держит базу.
  • ❌ Закрыли файл на сервере во время проведения. Отсюда ошибки структуры базы. Сначала мягкие способы, потом жёсткие.
  • ❌ Забыли снять блокировку. Утром никто не может войти. В скрипте всегда ставьте шаг разблокировки и время окончания блокировки.

Что снижает число зависших сеансов:

  • 🌐 стабильная сеть до сервера с базой: файловый вариант плохо переносит обрывы и Wi-Fi;
  • 🛡️ исключение папки с базой из проверки антивирусом на сервере и на клиентах;
  • 💤 запрет сна для рабочих станций в рабочее время: уснувший ПК с открытой 1С — частый «призрак»;
  • 🚪 автоматическое завершение неактивных сеансов RDP в групповой политике терминального сервера;
  • 📈 переход на клиент-серверный вариант, если в базе больше 10–15 одновременных пользователей: там сеансы удаляют из консоли за пару кликов.