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

· 10 мин

Содержание

Выгнать пользователей из файловой базы 1С проще всего штатно: в типовой конфигурации откройте Администрирование → Обслуживание → Блокировка работы пользователей, задайте время и установите блокировку — через несколько минут программа сама завершит сеансы. Если чей-то сеанс завис и не реагирует, разрывайте его на уровне Windows: закройте открытый файл 1Cv8.1CD на сервере с общей папкой или завершите процесс 1cv8c.exe / 1cv8.exe на терминальном сервере.

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

Какой способ выбрать: сравнение по рискам

Начинайте с верхней строки и спускайтесь ниже, только если предыдущий способ не сработал.

СпособКогда подходитРиски
Блокировка работы пользователей в 1СПлановое обновление, выгрузка, тестирование и исправлениеМинимальные: пользователи получают предупреждение и выходят сами
Попросить выйти / позвонить2–5 пользователей в одном офисеНет, но долго
Закрыть открытый файл на файловом сервереСеанс завис, пользователь недоступен, база лежит в общей папкеНесохранённые данные этого пользователя теряются
Завершить процесс 1С на терминальном сервереРабота через RDP, процесс виситТо же, плюс можно задеть чужие сеансы, если ошибиться фильтром
Удалить служебные файлы блокировкиВсе процессы закрыты, а база всё равно «занята»Ошибка в выборе файла = повреждённая база
Перезагрузить сервер с базойНичего не помоглоОбрываются все сеансы на сервере, не только 1С

Главный критерий — отвечает ли клиентское приложение. Живой клиент закроется по команде из 1С. Зависший — нет, и тогда работают только средства Windows.

Как файловая база удерживает пользователей

Файловая база — это каталог с файлом данных 1Cv8.1CD, каталогом журнала регистрации 1Cv8Log и несколькими служебными файлами. Сервера 1С между клиентом и данными нет: каждый пользователь сам открывает 1Cv8.1CD по сети или локально.

Отсюда три следствия:

  • 📂 Сеанс = открытый файл. Пока процесс 1cv8c.exe или 1cv8.exe держит 1Cv8.1CD, база для остальных занята в той или иной мере.
  • 🔒 Блокировки ставит операционная система. Монопольный режим — это, по сути, попытка открыть файл так, чтобы никто другой его не трогал. Если файл открыт хотя бы одним процессом, монопольный режим не установится.
  • 👻 Зависший клиент держит файл до конца. Пользователь закрыл крышку ноутбука, сеть отвалилась — а сервер ещё какое-то время считает файл открытым.

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

Посмотреть, кто в базе сейчас, можно из самой программы: Администрирование → Обслуживание → Активные пользователи (в старых релизах раздел называется «Поддержка и обслуживание»). В Конфигураторе тот же список открывается через меню Администрирование → Активные пользователи.

Штатно: блокировка работы пользователей средствами 1С

Это самый безопасный способ принудительно завершить сеансы. Он есть во всех типовых конфигурациях на БСП: Бухгалтерии 3.0, ЗУП 3.1, УТ 11, КА, ERP.

Как установить блокировку

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

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

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

Добавьте к строке запуска параметр /UC с кодом разрешения:

"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F"D:\Bases\Buh" /UC2026

То же можно прописать в свойствах базы в окне запуска: Изменить → Далее → Дополнительные параметры запуска, строка /UC2026.

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

Не забудьте снять блокировку после работ — иначе утром никто из сотрудников не войдёт. Если время окончания не задано, снимают её на той же форме кнопкой Снять блокировку.

Разрываем зависшие сеансы на файловом сервере

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

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

  1. На сервере, где лежит база, откройте compmgmt.msc.
  2. Перейдите в Служебные программы → Общие папки → Открытые файлы.
  3. Отсортируйте по столбцу с путём и найдите строки с 1Cv8.1CD. В соседнем столбце видно имя пользователя Windows.
  4. Щёлкните строку правой кнопкой и выберите Закрыть открытый файл.

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

Команда net file выводит открытые по сети файлы с их идентификаторами:

net file | findstr /i "1Cv8"
net file 1207 /close

Здесь 1207 — идентификатор из первого столбца вывода первой команды.

На Windows Server 2016 и новее удобнее PowerShell — можно закрыть все подключения к конкретной базе одной строкой:

Get-SmbOpenFile | Where-Object { $_.Path -like "*\Bases\Buh\*" } |
    Select-Object ClientUserName, ClientComputerName, Path

Get-SmbOpenFile | Where-Object { $_.Path -like "*\Bases\Buh\*" } |
    Close-SmbOpenFile -Force

Первая команда только показывает, кто держит файлы базы. Вторая — разрывает подключения.

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

Завершаем процессы 1С на терминальном сервере

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

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

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

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

Сначала посмотрите, чьи процессы запущены:

tasklist /v /fi "imagename eq 1cv8c.exe"
tasklist /v /fi "imagename eq 1cv8.exe"

Затем завершите процессы одного пользователя:

taskkill /f /im 1cv8c.exe /fi "username eq ivanova"

Без фильтра username команда taskkill /f /im 1cv8c.exe убьёт клиенты всех пользователей на сервере — в том числе тех, кто работает в других базах.

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

Диагностика: выберите симптом

Служебные файлы блокировок: когда их можно удалять

Иногда после аварийного отключения все процессы закрыты, а база всё равно считается занятой. Причина — служебные файлы, которые платформа создаёт в каталоге базы на время работы и не успела убрать. Типичные примеры — 1Cv8.1CL и 1Cv8tmp.1CD.

Удалять их можно только при соблюдении всех условий:

  1. ✅ В диспетчере задач на всех компьютерах и терминальных серверах нет процессов 1С, подключённых к этой базе.
  2. ✅ В «Открытых файлах» на файловом сервере нет ни одной строки с путём к каталогу базы.
  3. ✅ Сделана копия всего каталога базы — скопируйте папку целиком в другое место.

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

Никогда не удаляйте 1Cv8.1CD — это и есть вся база с данными. Не трогайте и каталог 1Cv8Log, если журнал регистрации вам нужен. Если не уверены, что за файл перед вами, — не удаляйте, а перенесите во временную папку.

Как закрыть вход в базу на время работ

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

Если конфигурация не на БСП или блокировка не помогает (например, пользователи заходят старым ярлыком в Конфигуратор), закройте доступ на уровне Windows:

  • 🚫 Временно уберите права на общую папку. В свойствах общего ресурса оставьте доступ только своей учётной записи. Новые подключения не пройдут, а существующие вы закроете через «Открытые файлы».
  • 📁 Переименуйте каталог базы после того, как все вышли. Ярлыки пользователей перестанут его находить. Не забудьте вернуть имя после работ.
  • 🖥️ На терминальном сервере запретите новые входы в систему командой change logon /disable и разрешите обратно командой change logon /enable. Подключённые сеансы при этом не разрываются.

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

Автоматизация: выгнать всех и выгрузить базу скриптом

Типовые конфигурации на БСП понимают параметры запуска ЗавершитьРаботуПользователей и РазрешитьРаботуПользователей. На них можно собрать ночной bat-файл: выгнать пользователей, выгрузить базу в .dt и снова открыть доступ.

@echo off
set V8="C:\Program Files\1cv8\8.3.25.1374\bin\1cv8.exe"
set BASE=D:\Bases\Buh
set USR=Администратор
set PWD=secret
set CODE=2026
set LOG=D:\Backup\log.txt

rem 1. Устанавливаем блокировку и завершаем сеансы
start "" %V8% ENTERPRISE /F"%BASE%" /N"%USR%" /P"%PWD%" /C"ЗавершитьРаботуПользователей" /UC%CODE% /DisableStartupMessages

rem 2. Ждём, пока клиенты закроются
timeout /t 600 /nobreak

rem 3. Выгружаем базу в .dt
%V8% DESIGNER /F"%BASE%" /N"%USR%" /P"%PWD%" /UC%CODE% /DumpIB"D:\Backup\Buh_%DATE:~-4%%DATE:~3,2%%DATE:~0,2%.dt" /Out"%LOG%"

rem 4. Снимаем блокировку
%V8% ENTERPRISE /F"%BASE%" /N"%USR%" /P"%PWD%" /C"РазрешитьРаботуПользователей" /UC%CODE% /DisableStartupMessages

Что поменять под себя:

  • путь к 1cv8.exe — номер платформы в каталоге должен совпадать с установленной у вас;
  • путь к базе, имя и пароль пользователя с полными правами;
  • время ожидания: 600 секунд — с запасом на предупреждение пользователей;
  • формат даты в имени файла рассчитан на русскую локаль вида ДД.ММ.ГГГГ.

Сеансы, которые не отреагировали за время ожидания, скрипт не тронет — выгрузка просто завершится ошибкой, а в логе появится запись о занятой базе. Если зависания случаются регулярно, добавьте перед выгрузкой шаг с Close-SmbOpenFile для каталога базы.

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

Перед ночным запуском скрипта
Выполнено: 0 / 5

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

Можно ли выгнать пользователя из файловой базы через Конфигуратор?
Нет. В Конфигураторе видно список активных пользователей, но команды завершения сеанса для файловой базы там нет. Разрывать сеанс приходится средствами 1С (блокировка работы) или Windows.
Почему после блокировки пользователь остался в базе?
Его клиент не отвечает: завис, ждёт ответа в модальном окне или выполняет долгую операцию. Команду завершения он не получил. Закройте его открытый файл на сервере или завершите процесс.
Сколько ждать, пока сеансы завершатся сами после блокировки?
Ориентируйтесь на время начала блокировки, которое вы указали, плюс одну-две минуты. Если через 5 минут после начала кто-то остался в списке активных — его клиент завис.
Повредится ли база, если убить процесс 1С?
Как правило, нет: незаписанный документ просто пропадёт. Но при обрыве во время записи большого объёма данных повреждение возможно, поэтому после жёсткого разрыва сеансов полезно сделать тестирование и исправление.
Как выгнать пользователей, если база лежит на моём же компьютере?
Закрыть локально открытый файл через «Общие папки» не получится — он открыт не по сети. Если коллеги подключаются к вашей папке по сети, их подключения как раз видны в «Открытых файлах». Свои процессы 1С закройте в диспетчере задач.