Выгнать сеанс из файловой базы 1С: блокировка, процессы и сетевые файлы

· 9 мин

Содержание

Отключить пользователя файловой базы 1С проще всего штатно: Администрирование → Обслуживание → Блокировка работы пользователей, флажок установки блокировки и код разрешения. Программа предупредит людей и сама закроет их сеансы. Если клиент завис и на сообщения не реагирует, остаётся завершить процесс 1cv8c.exe или 1cv8.exe на компьютере пользователя либо закрыть открытый файл 1Cv8.1CD в оснастке «Общие папки» на сервере.

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

Чем файловая база отличается от серверной при отключении

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

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

  • 🖥️ Сеанс живёт на компьютере пользователя. Чтобы его остановить, нужно либо попросить сам клиент закрыться, либо снять его процесс.
  • 📂 Сервер видит только открытый файл. Для Windows на файловом сервере пользователь 1С — это сетевая сессия SMB с открытым 1Cv8.1CD.
  • ⏳ Закрытие идёт через клиента. Блокировка из 1С работает, пока клиентская программа живая и обрабатывает сообщения. Зависший клиент её не услышит.

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

Штатная блокировка работы пользователей в 1С

Это основной способ. Он есть во всех типовых конфигурациях на Библиотеке стандартных подсистем.

КонфигурацияГде найти
Бухгалтерия предприятия 3.0Администрирование → Обслуживание → Блокировка работы пользователей
ЗУП 3.1Администрирование → Обслуживание → Блокировка работы пользователей
Управление торговлей 11НСИ и администрирование → Администрирование → Обслуживание → Блокировка работы пользователей

Нужны права администратора в базе.

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

  1. Откройте форму блокировки по пути из таблицы.
  2. В поле сообщения напишите, что происходит и когда закончится: «Обновление базы, работа возобновится в 19:30».
  3. Задайте начало и, если нужно, окончание блокировки. Начало поставьте через 10–15 минут — людям хватит времени провести документы.
  4. Заполните код разрешения, например obnov. С ним вы сами сможете войти в заблокированную базу.
  5. Установите блокировку кнопкой внизу формы.

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

Не закрывайте свой сеанс, пока ждёте. Если всё же вышли, войдите обратно с кодом: в строке запуска добавьте параметр /UCobnov (без пробела после /UC). Без кода вы упрётесь в собственную блокировку.

Как войти с кодом и снять блокировку

Код разрешения передаётся параметром запуска. Самый простой путь — изменить базу в списке окна запуска, нажать «Далее» и в поле дополнительных параметров вписать /UCobnov. Для одного входа удобнее ярлык:

"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F "\\SRV\1C\Buh" /UCobnov

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

Блокировка из командной строки

У конфигураций на БСП есть два параметра запуска, которые делают то же самое без форм:

  • /C"ЗавершитьРаботуПользователей" — ставит блокировку и выгоняет сеансы;
  • /C"РазрешитьРаботуПользователей" — снимает её.

Они пригодятся для автоматизации, о ней ниже.

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

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

Список активных пользователей

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

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

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

Кто держит файл на сервере

Активные пользователи показывают сеансы 1С. Но бывает, что список пуст, а база всё равно «занята». Тогда смотрите на файловом сервере, кто держит 1Cv8.1CD:

  1. Нажмите Win+R, введите fsmgmt.msc.
  2. Откройте ветку «Открытые файлы».
  3. Отсортируйте по пути и найдите строки с 1Cv8.1CD нужной базы.

В колонке «Доступ пользователя» будет учётная запись Windows, в соседней — компьютер. Это и есть «висящий» клиент: часто ноутбук ушёл в сон с открытой 1С, а Windows ещё держит за ним файл.

То же самое в PowerShell от имени администратора:

Get-SmbOpenFile | Where-Object { $_.Path -like "*Buh*1Cv8.1CD" } |
    Select-Object FileId, ClientUserName, ClientComputerName, Path

Завершение процесса 1С через Диспетчер задач

Блокировка не помогла: у пользователя завис отчёт, клиент не отвечает, и сеанс не закрывается. Следующий шаг — снять процесс.

Всё, что пользователь не записал, пропадёт. Если процесс в момент снятия писал в базу (проведение, групповая обработка), есть риск повредить файл. Сначала позвоните человеку или подождите пару минут.

Если пользователь работает на своём компьютере

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

С вашего компьютера то же делается удалённо, если у вас есть права администратора на чужом ПК:

tasklist /S PC-BUH2 /FI "IMAGENAME eq 1cv8c.exe"
taskkill /S PC-BUH2 /IM 1cv8c.exe /F

Если 1С запущена на терминальном сервере

На терминальном сервере одновременно работают процессы всех пользователей, поэтому снимать «все 1cv8c» нельзя. В Диспетчере задач перейдите на вкладку «Пользователи», раскройте нужную учётную запись и снимите только её процесс 1С.

Командой — с фильтром по пользователю Windows:

tasklist /FI "IMAGENAME eq 1cv8c.exe" /V
taskkill /F /IM 1cv8c.exe /FI "USERNAME eq ivanova"

Ключ /V выводит колонку с именем пользователя: сначала проверьте, кого именно снимаете.

Если завис весь сеанс RDP, а не только 1С, найдите его ID командой quser и завершите logoff <ID>. Этот вариант закрывает у человека все программы, не только 1С.

Если база опубликована на веб-сервере

При работе через браузер или веб-клиент процесс 1С живёт внутри веб-сервера (Apache или IIS), а не у пользователя. Снять сеанс одного человека там нельзя. Перезапуск службы веб-сервера оборвёт сеансы всех, кто зашёл через публикацию, — делайте это вне рабочего времени.

Закрытие сетевых сессий и доступа к папке с базой

Это способ для случая, когда процесса у пользователя уже нет, а файл на сервере всё ещё открыт. Или когда компьютер пользователя выключен и до него не добраться.

Закрыть один открытый файл

В оснастке fsmgmt.msc, ветка «Открытые файлы», щёлкните правой кнопкой по строке с 1Cv8.1CD и выберите «Закрыть открытый файл». В PowerShell:

Get-SmbOpenFile | Where-Object { $_.Path -like "*Buh*1Cv8.1CD" } |
    Close-SmbOpenFile -Force

Без фильтра по пути команда закроет файлы всех баз и всех прочих документов на сервере. Фильтр проверяйте до запуска с -Force: сначала прогоните первую строку отдельно и посмотрите, что попало в выборку.

Если ваш сервер старше и PowerShell-командлетов SMB нет, есть классический вариант: openfiles /query /fo table показывает открытые по сети файлы с их ID, а openfiles /disconnect /id <ID> закрывает нужный.

Отключить пользователя целиком

В той же оснастке ветка «Сеансы» показывает подключения к общим папкам. Закрытие сеанса обрывает у пользователя все открытые на сервере файлы, не только базу 1С. Аналог в командной строке — net session \\PC-BUH2 /delete.

Закрытый со стороны сервера файл — не аккуратное завершение. Если клиент в этот момент что-то записывал, после такой операции запустите тестирование и исправление базы.

Закрыть доступ к папке на время работ

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

Что происходит с пользователем?

После жёсткого отключения: проверка базы

Снятие процесса и закрытие файла иногда оставляют базу в неконсистентном состоянии. Признаки — ошибки при открытии, «битые» документы, вылет при проведении.

Проверьте базу, пока в ней никого нет:

  1. Сделайте копию каталога базы целиком (сам 1Cv8.1CD и всё, что лежит рядом).
  2. Запустите Конфигуратор, меню Администрирование → Тестирование и исправление.
  3. Для начала оставьте только реиндексацию и проверку логической целостности, режим «Тестирование» без исправления.
  4. Если ошибки найдены — повторите с исправлением.

Отдельно есть утилита chdbfl.exe в каталоге bin установленной платформы. Она проверяет физическую структуру файла 1Cv8.1CD без запуска конфигурации и пригодится, когда база не открывается совсем.

Автоматизация отключения и профилактика зависаний

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

Ночной скрипт: выгнать, выгрузить, впустить

Пример для Планировщика заданий Windows. Подставьте свою версию платформы, путь, пользователя и код разрешения:

@echo off
set V8="C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe"
set IB=/F "D:\1C\Buh"
set AUTH=/N "Администратор" /P "пароль"

rem 1. Блокировка и завершение сеансов
%V8% ENTERPRISE %IB% %AUTH% /C"ЗавершитьРаботуПользователей" /UCbackup /DisableStartupDialogs

rem 2. Выгрузка в .dt
%V8% DESIGNER %IB% %AUTH% /UCbackup /DumpIB "E:\Backup\Buh_%date:~-4%%date:~3,2%%date:~0,2%.dt" /Out "E:\Backup\log.txt"

rem 3. Снятие блокировки
%V8% ENTERPRISE %IB% %AUTH% /C"РазрешитьРаботуПользователей" /UCbackup /DisableStartupDialogs

Код разрешения в шагах 1 и 3 должен совпадать с тем, что указан в форме блокировки, если вы её заполняли вручную. Пароль администратора в bat-файле храните в папке, куда у бухгалтеров нет доступа.

Если зависший клиент не отпустил базу и выгрузка упала, лог в log.txt это покажет. Утром проверяйте не наличие .dt, а его размер и дату.

Почему сеансы вообще зависают

  • 💤 Сон и гибернация ноутбуков. Человек закрыл крышку с открытой 1С, сервер ещё долго считает файл открытым. Настройте на рабочих ПК запрет сна при работе от сети или приучите выходить из 1С.
  • 📶 Wi-Fi и VPN. Файловая база по сети чувствительна к обрывам. Для удалённых сотрудников надёжнее терминальный сервер или веб-публикация, а не подключение к общей папке через VPN.
  • 🛡️ Антивирус на сервере. Проверка 1Cv8.1CD при каждом обращении тормозит работу и держит файл. Добавьте каталог базы в исключения.
  • 🗂️ Автономные файлы Windows. Если для общей папки включено кэширование для автономной работы, отключите его для каталога 1С.
  • 🧾 Привычка «не выходить». Объявите правило: в конце дня все закрывают 1С. Ночной скрипт с блокировкой подстрахует тех, кто забыл.

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

Можно ли просто удалить файл блокировки в папке базы?
Не стоит. Служебные файлы рядом с 1Cv8.1CD создаёт и ведёт сама платформа. Пока клиент держит базу, удаление либо не пройдёт, либо оставит работающий сеанс в непредсказуемом состоянии. Правильный путь — закрыть сеанс или открытый файл, а служебные файлы платформа приведёт в порядок сама.
Почему блокировка стоит, а пользователь всё ещё в базе?
Скорее всего, его клиент занят долгой операцией или завис и не обрабатывает сообщения. Подождите несколько минут после времени начала, затем снимите процесс 1С на его компьютере.
Можно ли выгнать одного пользователя, не трогая остальных?
Штатной кнопки для одного сеанса в файловом режиме нет. Снимите процесс 1С на компьютере этого человека или закройте его строку 1Cv8.1CD в «Открытых файлах» на сервере.
Нужно ли выгонять всех, чтобы поменять пользователю права или пароль?
Нет. Права и пароль меняются в работающей базе. Новые настройки вступят в силу при следующем входе пользователя.