Как освободить файловую базу 1С от подключённых сеансов перед обслуживанием
Содержание
Чтобы выгнать пользователей из файловой базы
1С, включите в самой программе Блокировку работы пользователей (раздел Администрирование): через несколько минут сеансы закроются сами. Если кто-то завис и не выходит, закройте его подключение к файлу 1Cv8.1CD на компьютере, где лежит папка базы, или завершите процесс 1С на терминальном сервере.
Типичная ситуация: вечер, нужно обновить конфигурацию , а конфигуратор отвечает, что монопольный режим установить нельзя. Кто-то из бухгалтерии ушёл домой с открытой 1С, компьютер уснул, сеанс висит. Заставить пользователей выйти можно четырьмя способами — от мягкого к жёсткому, и начинать всегда стоит с первого.
Любое принудительное отключение обрывает работу человека. Несохранённый документ пропадёт, а грубое закрытие файла во время записи может повредить базу. Предупредите людей заранее и сделайте резервную копию папки базы перед обслуживанием.
Кто держит базу: файлы в каталоге и список активных пользователей
Файловая база — это папка, в которой лежат несколько файлов. Для нашей задачи важны три:
| Файл | Что это | Когда появляется |
|---|---|---|
1Cv8.1CD | сама база: данные и конфигурация | всегда |
1Cv8.1CL | файл блокировки, признак открытых сеансов | пока в базе есть хотя бы один сеанс |
1Cv8.cdn | блокировка начала сеансов | когда администратор запретил вход |
Посмотреть, кто сейчас в базе, можно двумя способами:
- 👥 в пользовательском режиме — список
Активные пользователив разделеАдминистрирование; - 🛠 в конфигураторе — меню
Администрирование → Активные пользователи.
Список показывает имя пользователя 1С, компьютер, приложение и время начала сеанса. Имя компьютера — главная подсказка: по нему вы найдёте, чей ПК держит базу.
💡 В файловом варианте окно активных пользователей только показывает сеансы. Кнопки, которая завершит чужой сеанс, как в консоли кластера серверной базы, здесь нет. Поэтому выгонять приходится другими путями.
Способ 1. Блокировка работы пользователей из самой программы
Это основной и самый безопасный способ. Он есть во всех типовых конфигурациях на БСП: Бухгалтерии 3.0, ЗУП 3.1, УТ 11, Комплексной автоматизации, ERP.
- Войдите в базу под пользователем с полными правами.
- Откройте
Администрирование, группуПоддержка и обслуживание(в новых релизах раздел называетсяОбслуживание), ссылкуБлокировка работы пользователей. - Заполните сообщение, которое увидят люди: например, «В 19:00 обновление, сохраните документы и выйдите».
- Укажите время начала и окончания блокировки.
- Задайте
Код для разблокировки— любой набор цифр, например7731. - Нажмите
Установить блокировку.
Что происходит дальше. Программа у каждого пользователя периодически проверяет, не стоит ли блокировка. Когда до начала остаются минуты, человек видит предупреждение. Когда время наступило, его сеанс закрывается. Новые входы запрещены, пока блокировка не снята.
Сам администратор после этого тоже выйдет из программы. Чтобы войти в заблокированную базу, добавьте к строке запуска параметр /UC с кодом разблокировки:
"C:\Program Files\1cv8\8.3.xx.xxxx\bin\1cv8.exe" DESIGNER /F"D:\1C\Buh" /N"Администратор" /P"пароль" /UC7731
Вместо 8.3.xx.xxxx подставьте номер установленной платформы, вместо D:\1C\Buh — путь к папке базы.
Механизм работает только для сеансов, которые живы и откликаются. Если у сотрудника 1С зависла, а ноутбук ушёл в сон, сеанс не получит команду и не закроется. Для таких случаев — способы 3 и 4.
Тот же способ из командной строки
Блокировку можно поставить без интерфейса, например из ночного скрипта. Для этого в программу передаётся параметр запуска ЗавершитьРаботуПользователей, а код разблокировки — через /UC:
set V8="C:\Program Files\1cv8\8.3.xx.xxxx\bin\1cv8.exe"
set BASE=D:\1C\Buh
%V8% ENTERPRISE /F"%BASE%" /N"Администратор" /P"пароль" /C"ЗавершитьРаботуПользователей" /UC7731 /DisableStartupDialogs
Программа ставит блокировку, ждёт, пока остальные сеансы закроются, и завершается сама. После обслуживания блокировку снимает параметр РазрешитьРаботуПользователей:
%V8% ENTERPRISE /F"%BASE%" /N"Администратор" /P"пароль" /C"РазрешитьРаботуПользователей" /UC7731 /DisableStartupDialogs
💡 Пароль в bat-файле лежит открытым текстом. Создайте для скриптов отдельного пользователя 1С и закройте доступ к файлу скрипта правами Windows.
Способ 2. Конфигуратор и монопольный режим: что он делает и чего не делает
Частое заблуждение — что конфигуратор умеет «выгнать всех». Он этого не умеет. Конфигуратор только запрашивает монопольный режим, то есть проверяет, что кроме него в базе никого нет.
Монопольный режим нужен не всегда, а для конкретных операций:
- 🔄 обновление конфигурации базы данных, если меняется структура данных;
- 📦 загрузка информационной базы из файла
.dt; - 🩺
Тестирование и исправление информационной базы.
Если в базе кто-то остался, конфигуратор сообщит, что установить монопольный режим не удалось, и операция не начнётся. Последовательность для обновления такая:
- Поставьте блокировку работы пользователей (способ 1) или дождитесь её срабатывания.
- Проверьте
Администрирование → Активные пользователив конфигураторе: в списке должен остаться только ваш сеанс. - Если видите чужой сеанс — найдите компьютер по колонке с его именем и закройте 1С там или переходите к способу 3.
- Запустите обновление или тестирование.
Пока конфигуратор держит монопольный режим, новые пользователи в базу не войдут: при попытке входа они получат сообщение о блокировке. Но это защита на время операции, а не способ освободить базу заранее.
Способ 3. Закрыть подключения к папке базы на компьютере-хранилище
Файловую базу
обычно открывают по сети: папка лежит на сервере или на ПК главного бухгалтера, к ней дан общий доступ. Каждый пользователь держит открытыми файлы 1Cv8.1CD и 1Cv8.1CL. Windows на компьютере с папкой видит эти открытые файлы и умеет их закрыть.
Это жёсткий метод. Закрытие файла посреди записи может оставить базу в повреждённом состоянии. Применяйте его вечером, после предупреждения, и только когда мягкий способ не сработал. После закрытия проверьте базу (см. раздел про chdbfl).
Через оснастку «Управление компьютером»
- На компьютере, где лежит папка базы, нажмите
Win+Rи выполнитеcompmgmt.msc. - Откройте
Общие папки → Открытые файлы. - Найдите строки с путём к папке базы. В колонке пользователя — учётная запись Windows, которая держит файл.
- Правой кнопкой по строке —
Закрыть открытый файл.
В соседнем узле Сеансы можно разорвать весь сетевой сеанс конкретного компьютера.
Через командную строку и PowerShell
Классический вариант с net file (командная строка от имени администратора):
:: показать открытые файлы с их номерами
net file
:: закрыть файл по номеру из первой колонки
net file 1234 /close
В PowerShell удобнее сразу отфильтровать файлы именно этой базы:
# посмотреть, кто держит базу
Get-SmbOpenFile | Where-Object Path -like 'D:\1C\Buh\*' |
Select-Object ClientComputerName, ClientUserName, Path
# закрыть все подключения к файлам базы
Get-SmbOpenFile | Where-Object Path -like 'D:\1C\Buh\*' | Close-SmbOpenFile -Force
Временно отобрать доступ к сетевой папке
Если нужно гарантировать, что за время обслуживания никто не войдёт, уберите права на общую папку:
- В свойствах папки базы откройте вкладку
Доступ→Расширенная настройка→Разрешения. - Оставьте доступ только администратору, остальных временно удалите из списка.
- После работ верните разрешения как было.
💡 Перед изменением сделайте скриншот исходных разрешений. Восстановить права по памяти у пяти групп пользователей — неприятная задача на утро.
Способ 4. Терминальный сервер: завершить процессы 1С
Если сотрудники работают на терминальном сервере (RDP), а база лежит там же, сетевых подключений к папке нет. Файлы держат процессы 1С внутри пользовательских сеансов Windows. Их и нужно завершать.
Толстый клиент работает процессом 1cv8.exe, тонкий — 1cv8c.exe. Команды для командной строки от имени администратора:
:: кто сейчас залогинен на сервере
query user
:: завершить 1С у одного пользователя Windows
taskkill /F /IM 1cv8c.exe /FI "USERNAME eq ivanova"
taskkill /F /IM 1cv8.exe /FI "USERNAME eq ivanova"
:: завершить терминальный сеанс целиком по его ID из query user
logoff 3
То же можно сделать в Диспетчере задач на вкладке Пользователи: развернуть пользователя и снять задачу 1С.
Не запускайте taskkill без фильтра по пользователю: команда закроет 1С у всех, включая ваш собственный конфигуратор и людей, которые работают в других базах на этом сервере.
Если база опубликована на веб-сервере и пользователи заходят через браузер, сеансы живут в процессе веб-сервера. Перезапуск службы Apache или пула приложений IIS их оборвёт, но вместе со всеми остальными публикациями на этом сервере.
Файлы блокировки: когда их можно удалять и зачем нужна chdbfl
Файл 1Cv8.1CL
После аварийного выхода (выключили свет, завис компьютер) файл 1Cv8.1CL иногда остаётся в папке, хотя в базе никого нет. Тогда программа ведёт себя так, будто сеанс ещё жив.
Порядок действий:
- Убедитесь, что 1С закрыта на всех компьютерах, а в
Открытых файлахнет подключений к папке. - Попробуйте удалить
1Cv8.1CL. - Если Windows пишет, что файл занят, — сеанс на самом деле жив. Ищите, кто его держит (способы 3 и 4), а не боритесь с файлом.
Никогда не удаляйте и не переименовывайте 1Cv8.1CD — это и есть вся база.
Файл 1Cv8.cdn
Это блокировка начала сеансов, которую создаёт программа при установке блокировки работы пользователей. Вручную его создавать не нужно: формат служебный, проще поставить блокировку из интерфейса или командой из способа 1.
Обратная ситуация встречается чаще: блокировку поставили, а снять забыли, и утром никто не может войти. Решение — войти с /UC и кодом разблокировки и снять блокировку в той же форме. Если код потерян, при закрытых сеансах можно удалить 1Cv8.cdn из папки базы: запрет входа снимется.
Утилита chdbfl.exe
chdbfl.exe лежит в папке bin установленной платформы, рядом с 1cv8.exe. Она проверяет физическую целостность файла 1Cv8.1CD и при необходимости исправляет найденные ошибки.
Управлять пользователями она не умеет. Для её работы база должна быть свободна, поэтому chdbfl запускают после того, как всех отключили, — особенно если отключали жёстко:
- Убедитесь, что в базе никого нет и
1Cv8.1CLотсутствует. - Скопируйте папку базы в резервное место.
- Запустите
chdbfl.exe, укажите путь к1Cv8.1CD. - Сначала выполните проверку без флажка исправления, потом — с ним, если нашлись ошибки.
Как не выгонять людей каждый раз: регламент обслуживания
Проще один раз настроить порядок, чем каждый вечер искать зависшие сеансы.
- 🕖 Фиксированное окно обслуживания. Например, обновления и копии — по вторникам после 19:00. Люди привыкают и закрывают 1С сами.
- 🤖 Ночной скрипт. Планировщик заданий Windows запускает bat-файл: блокировка через
ЗавершитьРаботуПользователей, выгрузка копии, снятие блокировки. Пример ниже. - 💾 Резервное копирование средствами конфигурации. В типовых конфигурациях для файловой базы есть настройка автоматического резервного копирования в разделе администрирования. Перед копированием программа сама завершает работу пользователей.
- 😴 Запрет сна на рабочих ПК бухгалтерии. Спящий компьютер с открытой 1С — главный источник «вечных» сеансов в файловых базах.
- 🔐 Права на папку. Доступ на запись к папке базы только у тех, кто работает в 1С. Чем меньше случайных подключений, тем проще найти виноватого.
Пример ночного скрипта:
@echo off
set V8="C:\Program Files\1cv8\8.3.xx.xxxx\bin\1cv8.exe"
set BASE=D:\1C\Buh
set CODE=7731
:: 1. Выгнать пользователей и запретить вход
%V8% ENTERPRISE /F"%BASE%" /N"Обслуживание" /P"пароль" /C"ЗавершитьРаботуПользователей" /UC%CODE% /DisableStartupDialogs
:: 2. Выгрузить базу в .dt
%V8% DESIGNER /F"%BASE%" /N"Обслуживание" /P"пароль" /UC%CODE% /DumpIB"E:\Backup\Buh_%date:~-4%%date:~3,2%%date:~0,2%.dt" /Out"E:\Backup\dump.log"
:: 3. Разрешить вход
%V8% ENTERPRISE /F"%BASE%" /N"Обслуживание" /P"пароль" /C"РазрешитьРаботуПользователей" /UC%CODE% /DisableStartupDialogs
💡 Разбор даты через %date:~...% зависит от региональных настроек Windows. Запустите скрипт вручную один раз и посмотрите, какое имя получил файл копии.