Пользователи «висят» в файловой базе 1С: как освободить её для обновления
Содержание
В файловой базе 1С нет кластера серверов, поэтому сеанс пользователя здесь — это запущенный процесс 1cv8.exe или 1cv8c.exe, который держит открытым файл 1Cv8.1CD. Отключить сеансы значит закрыть эти процессы: попросить людей выйти, включить блокировку работы пользователей или принудительно закрыть открытые файлы на компьютере, где лежит база.
Порядок такой: сначала мягкие способы, потом жёсткие. Принудительное закрытие обрывает работу без сохранения: несохранённый документ пропадёт, а прерванная запись иногда портит базу. Поэтому жёсткие способы — только после предупреждения и вне рабочего времени.
Как увидеть, кто сейчас работает в файловой базе
Прежде чем что-то отключать, посмотрите, кто подключён. Способов три, и они показывают разное.
1. Список активных пользователей в самой программе. В режиме 1С:Предприятие откройте Главное меню → Все функции → Стандартные → Активные пользователи. Если пункта «Все функции» нет, включите его: Главное меню → Сервис → Параметры → Отображать команду "Все функции". В Конфигураторе тот же список — Администрирование → Активные пользователи.
В списке видно:
- 👤 имя пользователя базы;
- 💻 компьютер, с которого он зашёл;
- 🕐 время начала сеанса;
- 🧩 приложение (тонкий клиент, толстый клиент, Конфигуратор, фоновое задание).
В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) есть ещё своя форма «Активные пользователи» в разделе Администрирование — её удобнее читать, она показывает длительность и умеет отправлять сообщение.
2. Открытые файлы на компьютере с базой. Если база лежит в общей папке, откройте на этом компьютере оснастку fsmgmt.msc → Открытые файлы. Там видно, какой сетевой пользователь Windows держит 1Cv8.1CD. Это самый честный список: если файл открыт, процесс жив, даже если в 1С сеанс уже «пропал».
3. Процессы на терминальном сервере. Если люди работают через RDP на одном сервере, процессы 1cv8c.exe видны в Диспетчере задач на вкладке «Пользователи» или командой:
tasklist /v /fi "imagename eq 1cv8c.exe"
Расхождение списков — нормальная ситуация. Пользователь закрыл крышку ноутбука, сеть оборвалась, а Windows ещё несколько минут держит файл открытым. В 1С сеанса уже может не быть, а 1Cv8.1CD всё ещё занят.
Мягкое отключение: блокировка работы пользователей
Правильный способ для типовых конфигураций — механизм «Блокировка работы пользователей» из БСП. Он есть в Бухгалтерии 3.0, ЗУП 3.1, УТ 11, КА и ERP. Команда находится в разделе Администрирование, в панели обслуживания (группа, где собраны обновление, резервное копирование
и активные пользователи).
Как это работает в файловом варианте:
- Вы задаёте время начала и окончания блокировки, текст сообщения и код разрешения.
- Нажимаете «Установить блокировку».
- У всех открытых сеансов появляется предупреждение с вашим текстом и обратным отсчётом.
- Когда время наступает, программа у каждого пользователя сама закрывает свой сеанс. Новые входы запрещены.
- Вы входите в базу с кодом разрешения и делаете обновление, свёртку или копирование.
- После работы снимаете блокировку той же командой.
Чтобы войти в заблокированную базу, ярлык или строку запуска дополняют параметром /UC с кодом разрешения:
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F"D:\Base\Buh" /N"Администратор" /P"пароль" /UC"Обновление"
В файловом варианте сеансы закрываются на стороне клиента. Если у пользователя «завис» клиент или пропала сеть, его процесс предупреждение не получит и не закроется. Такие хвосты придётся закрывать способами из следующих разделов.
Советы по параметрам блокировки:
- ⏳ ставьте время начала на 10–15 минут вперёд — людям хватит, чтобы провести документ и выйти;
- ✍️ в сообщении пишите конкретно: «В 19:00 обновление программы, сохраните документы и выйдите. Вход откроется в 20:00»;
- 🔑 код разрешения делайте простым и запишите его: забытый код — частая причина звонка «база не пускает».
Если конфигурация нетиповая и БСП в ней нет, остаётся общение: сообщение в рабочий чат и проверка списка активных пользователей через 10 минут.
Принудительное отключение: закрываем открытые файлы и процессы
Когда мягкий способ не сработал, сеанс закрывают на уровне Windows. Выбор способа зависит от того, где запущен клиент и где лежит база.
| Где база и клиенты | Чем отключать | Что теряет пользователь |
|---|---|---|
| База в общей папке, клиенты на своих ПК | Закрыть открытый файл 1Cv8.1CD на компьютере с базой | Несохранённые данные, клиент выдаст ошибку |
| Клиенты на терминальном сервере | Завершить процесс 1cv8c.exe или 1cv8.exe нужного пользователя | Несохранённые данные |
| База опубликована на веб-сервере | Перезапустить пул приложений IIS или службу Apache | Все веб-сеансы этой публикации разом |
| Пользователь за соседним ПК | Попросить закрыть программу или завершить процесс через Диспетчер задач | Несохранённые данные |
Перед любым принудительным отключением предупредите людей и убедитесь, что никто не проводит документы и не закрывает месяц. Обрыв посреди записи — частая причина повреждения файловой базы.
Закрыть файл в общей папке
На компьютере, где лежит база:
- Нажмите
Win + R, введитеfsmgmt.msc. - Откройте
Общие папки → Открытые файлы. - Отсортируйте по столбцу «Открытый файл» и найдите строки с путём к вашей базе (
1Cv8.1CD,1Cv8.cfl, файлы в папке1Cv8Log). - Выделите строки нужного пользователя → правой кнопкой → «Закрыть открытый файл».
То же из командной строки (от имени администратора):
openfiles /query /fo table | findstr /i "1Cv8"
net file
net file 12345 /close
Здесь 12345 — идентификатор из вывода net file. В PowerShell на Windows Server 2016 и новее удобнее так:
Get-SmbOpenFile | Where-Object { $_.Path -like "*\Base\Buh\*" } |
Select-Object FileId, ClientUserName, ClientComputerName, Path
Завершить процесс на терминальном сервере
В Диспетчере задач на вкладке «Пользователи» разверните нужного человека и снимите задачу «1С:Предприятие». Командой — по номеру сеанса Windows:
query session
taskkill /fi "sessionname eq rdp-tcp#5" /im 1cv8c.exe /f
Номер rdp-tcp#5 возьмите из вывода query session. Ключ /f закрывает процесс без вопросов — пользователь не успеет сохранить документ.
Веб-публикация файловой базы
Если файловая база опубликована на веб-сервере, сеансы живут внутри процесса веб-сервера, а не на компьютерах пользователей. Закрыть их по одному средствами Windows нельзя. Варианты: переработать пул приложений в диспетчере IIS или перезапустить службу Apache. Это оборвёт всех, кто работает через браузер или тонкий клиент по HTTP, поэтому делайте это в нерабочее время.
Файл блокировки 1Cv8.cfl: когда его можно удалять
В каталоге файловой базы при работе пользователей есть служебный файл 1Cv8.cfl. Через него платформа согласует доступ нескольких сеансов к базе. После аварийного завершения (отключили свет, завис компьютер) он иногда остаётся, и база не даёт установить монопольный режим, хотя в ней никого нет.
Порядок действий:
- Убедитесь, что
1Cv8.1CDне открыт ни одним процессом: проверьтеfsmgmt.mscи Диспетчер задач на всех терминальных серверах. - Сделайте копию папки базы целиком.
- Удалите
1Cv8.cfl. Если Windows не даёт удалить — файл всё ещё держит какой-то процесс, ищите его, а не перезагружайте сервер наугад. - Запустите Конфигуратор и проверьте, что монопольный режим устанавливается.
Никогда не удаляйте 1Cv8.cfl, пока в базе работают люди. Сеансы потеряют согласование блокировок, и две записи в одни таблицы могут повредить базу.
Если на компьютере с базой ничего не помогает, крайняя мера — перезагрузка компьютера, где лежит база. Она обрывает все сеансы сразу. Делайте её только вечером и только после предупреждения.
Журнал регистрации и временные файлы
Иногда «зависший сеанс» — это не процесс пользователя, а раздутый журнал регистрации или испорченный кэш клиента. Они не держат базу, но мешают ей открываться быстро и дают ложное ощущение, что «кто-то сидит».
Журнал регистрации хранится в подпапке 1Cv8Log каталога базы. В платформе 8.3 это файл 1Cv8.lgd, в старом формате — набор файлов .lgf и .lgp. Если журнал вырос до нескольких гигабайт, база открывается медленно.
Сократить его можно без ручного удаления файлов: Конфигуратор → Администрирование → Журнал регистрации → Сократить. Укажите дату, до которой удалить записи, и при желании выгрузите их в отдельный файл. Это безопаснее, чем стирать папку 1Cv8Log: при ручном удалении теряется вся история изменений, а нужна она обычно именно тогда, когда что-то пошло не так.
Кэш клиента лежит на компьютере каждого пользователя:
%APPDATA%\1C\1cv8\— папки с именами-GUID, по одной на базу;%LOCALAPPDATA%\1C\1cv8\— локальный кэш конфигурации.
Проще всего очистить кэш
, запустив базу с параметром /ClearCache. Если удаляете папки вручную, сначала закройте все окна 1С у этого пользователя. Кэш не держит файл базы, поэтому его очистка зависшие сеансы не закрывает. Она помогает, когда клиент сам падает при входе или не видит обновлённую конфигурацию.
Утилита rac и файловая база: почему не подходит
Утилита rac работает только с кластером серверов 1С через службу ras. В файловом варианте кластера нет, поэтому rac сеансов файловой базы не видит и закрыть их не может. Если в инструкции для файловой базы предлагают rac session terminate, это инструкция для другого варианта работы.
Где rac всё же пригодится:
- 🔄 вы перевели базу в клиент-серверный вариант;
- 🗂 рядом с файловыми базами есть серверные, и администратор обслуживает их вместе.
Для серверной базы последовательность такая:
rac cluster list
rac session list --cluster=<uuid кластера>
rac session terminate --cluster=<uuid кластера> --session=<uuid сеанса>
Остальные параметры смотрите в справке rac help session. Для файловой базы роль rac выполняют средства Windows из предыдущих разделов и блокировка работы пользователей.
Ночное обслуживание по расписанию
Если базу каждую ночь копируют или обновляют, освобождать её вручную неудобно. Схему собирают из двух частей: блокировка средствами конфигурации и страховка средствами Windows.
Шаг 1. Блокировка через параметр запуска. Конфигурации на БСП принимают команду ЗавершитьРаботуПользователей в параметре /C. Она ставит блокировку и ждёт выхода пользователей:
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F"D:\Base\Buh" /N"Администратор" /P"пароль" /C"ЗавершитьРаботуПользователей" /UC"Обслуживание"
После обслуживания блокировку снимают командой РазрешитьРаботуПользователей с тем же кодом /UC.
Шаг 2. Страховка: закрыть то, что не вышло само. Скрипт PowerShell для компьютера с базой, запуск через Планировщик заданий от имени администратора:
$basePath = "D:\Base\Buh"
$log = "D:\Scripts\close-1c.log"
# Закрываем сетевые дескрипторы файлов базы
Get-SmbOpenFile | Where-Object { $_.Path -like "$basePath\*" } | ForEach-Object {
Add-Content $log "$(Get-Date -Format s) закрыт $($_.Path) у $($_.ClientUserName)"
Close-SmbOpenFile -FileId $_.FileId -Force
}
# Проверяем, что файл базы свободен
try {
$f = [System.IO.File]::Open("$basePath\1Cv8.1CD", 'Open', 'ReadWrite', 'None')
$f.Close()
Add-Content $log "$(Get-Date -Format s) база свободна"
} catch {
Add-Content $log "$(Get-Date -Format s) база ещё занята, обслуживание отменено"
exit 1
}
Последний блок пробует открыть 1Cv8.1CD монопольно. Получилось — файл свободен, можно запускать копирование. Не получилось — скрипт завершается с кодом 1, и следующий шаг задания не стартует.
Ставьте задание через 15–20 минут после команды блокировки. Так страховка закроет только реально зависшие сеансы, а не тех, кто штатно выходит.
Пароль администратора в bat-файле виден всем, у кого есть доступ к папке со скриптами. Ограничьте права на эту папку и заведите для обслуживания отдельного пользователя базы.
Частые ошибки при отключении сеансов
Ещё несколько ловушек, которые встречаются на практике:
- 🚫 Закрыли файл, но не процесс. Клиент у пользователя остаётся открытым и при следующем действии пытается снова обратиться к базе. Предупредите человека, чтобы он закрыл окно, а не нажимал «Повторить».
- 🚫 Забыли про фоновые задания. В файловой базе регламентные задания выполняет один из клиентских сеансов. Пока он жив, база занята.
- 🚫 Копируют
1Cv8.1CD, не проверив, что он свободен. Копия файла, в который в этот момент идёт запись, может не открыться. Скрипт выше как раз проверяет это перед копированием. - 🚫 Антивирус или облачная синхронизация держат файл. Папку базы стоит исключить из проверки «на лету» и из синхронизации Яндекс Диска, OneDrive и подобных сервисов: они открывают
1Cv8.1CDи мешают монопольному режиму.