Пользователи «висят» в файловой базе 1С: как освободить её для обновления

· 10 мин

Содержание

В файловой базе 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. Команда находится в разделе Администрирование, в панели обслуживания (группа, где собраны обновление, резервное копирование и активные пользователи).

Как это работает в файловом варианте:

  1. Вы задаёте время начала и окончания блокировки, текст сообщения и код разрешения.
  2. Нажимаете «Установить блокировку».
  3. У всех открытых сеансов появляется предупреждение с вашим текстом и обратным отсчётом.
  4. Когда время наступает, программа у каждого пользователя сама закрывает свой сеанс. Новые входы запрещены.
  5. Вы входите в базу с кодом разрешения и делаете обновление, свёртку или копирование.
  6. После работы снимаете блокировку той же командой.

Чтобы войти в заблокированную базу, ярлык или строку запуска дополняют параметром /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Все веб-сеансы этой публикации разом
Пользователь за соседним ПКПопросить закрыть программу или завершить процесс через Диспетчер задачНесохранённые данные

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

Закрыть файл в общей папке

На компьютере, где лежит база:

  1. Нажмите Win + R, введите fsmgmt.msc.
  2. Откройте Общие папки → Открытые файлы.
  3. Отсортируйте по столбцу «Открытый файл» и найдите строки с путём к вашей базе (1Cv8.1CD, 1Cv8.cfl, файлы в папке 1Cv8Log).
  4. Выделите строки нужного пользователя → правой кнопкой → «Закрыть открытый файл».

То же из командной строки (от имени администратора):

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. Через него платформа согласует доступ нескольких сеансов к базе. После аварийного завершения (отключили свет, завис компьютер) он иногда остаётся, и база не даёт установить монопольный режим, хотя в ней никого нет.

Порядок действий:

  1. Убедитесь, что 1Cv8.1CD не открыт ни одним процессом: проверьте fsmgmt.msc и Диспетчер задач на всех терминальных серверах.
  2. Сделайте копию папки базы целиком.
  3. Удалите 1Cv8.cfl. Если Windows не даёт удалить — файл всё ещё держит какой-то процесс, ищите его, а не перезагружайте сервер наугад.
  4. Запустите Конфигуратор и проверьте, что монопольный режим устанавливается.

Никогда не удаляйте 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 и мешают монопольному режиму.

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

Можно ли завершить чужой сеанс прямо из программы в файловой базе?
Штатно — через блокировку работы пользователей: сеансы закрываются сами по истечении времени. Принудительно закрыть зависший клиент из 1С в файловом варианте нельзя, это делают средствами Windows.
Почему в списке активных пользователей висит человек, который ушёл домой?
Его компьютер остался включён с открытой 1С или сеанс оборвался без корректного выхода. Проверьте открытые файлы на компьютере с базой: если дескриптора нет, запись в списке пропадёт сама.
Лицензия освобождается, когда сеанс закрыт принудительно?
Да, после завершения процесса клиента лицензия возвращается.
Сколько пользователей нормально выдерживает файловая база?
Жёсткого лимита нет, но на практике при работе по сети уже с 5–10 одновременными пользователями уже чаще появляются ожидания блокировок. При большем числе пользователей стоит думать о клиент-серверном варианте.
Что будет с документом, который пользователь не успел записать?
Он пропадёт: в базу попадает только то, что записано или проведено до обрыва. Уже записанные документы и справочники принудительное отключение не затрагивает.