Пользователь не выходит из 1С, а базу нужно освободить: рабочие способы для файлового варианта
Содержание
Выгнать пользователя из
файловой базы 1С 8.3 штатно можно через блокировку работы пользователей: в типовых конфигурациях она находится в разделе Администрирование → Обслуживание. Вы включаете блокировку, программа предупреждает всех, кто в базе, и через несколько минут сама закрывает их сеансы. Если сеанс завис и на предупреждение не реагирует, остаётся завершить процесс 1С на компьютере пользователя или закрыть открытый файл базы на сервере.
Частое заблуждение — искать для файловой базы консоль кластера или команду rac. Их нет: у файловой базы нет сервера 1С, который бы управлял сеансами. Каждый пользователь сам открывает файл 1Cv8.1CD по сети, и «выгнать» его можно только так, чтобы его программа отпустила этот файл.
Чем файловая база отличается при отключении пользователей
В клиент-серверном варианте все сеансы живут в кластере серверов 1С. Администратор открывает консоль, видит список и завершает любой сеанс одной командой.
В файловом варианте центра управления нет:
- 📁 база — это папка с файлом
1Cv8.1CD, лежащая на компьютере или в общей сетевой папке; - 💻 каждый клиент 1С работает с этим файлом напрямую и сам ставит блокировки;
- 🔒 пока процесс 1С у пользователя запущен, файл занят, даже если человек ушёл домой с открытой программой;
- 🚫 платформа не умеет из одного сеанса принудительно закрыть чужой сеанс файловой базы.
Отсюда и набор способов. Мягкий — попросить программы пользователей закрыться самим через блокировку. Жёсткий — снять процесс или файловый дескриптор средствами Windows.
| Способ | Когда подходит | Риски |
|---|---|---|
| Блокировка работы пользователей | Плановые работы, все сеансы «живые» | Почти нет, пользователи получают предупреждение |
| Завершение процесса 1С | Сеанс завис, человека нет на месте | Теряются несохранённые данные этого пользователя |
| Закрытие открытого файла на сервере | Компьютер пользователя недоступен | Если шла запись, возможна порча базы |
| Удаление файлов блокировки | Только после сбоя, когда в базе никого нет | При живых сеансах бесполезно или опасно |
Как узнать, кто сейчас работает в базе
Прежде чем кого-то выгонять, проверьте список сеансов. Иначе легко закрыть программу бухгалтеру, который как раз проводит документы.
Из пользовательского режима. В типовых конфигурациях (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) откройте Администрирование → Обслуживание и найдите ссылку «Активные пользователи». Там видно имя пользователя, компьютер, время начала сеанса и приложение (тонкий клиент, Конфигуратор, фоновое задание).
Из Конфигуратора. Меню Администрирование → Активные пользователи. Список тот же, но только для просмотра.
На сервере с общей папкой. Если база лежит в сетевой папке, откройте на этом компьютере «Управление компьютером» (compmgmt.msc) и перейдите в Общие папки → Открытые файлы. Там видно, с какой учётной записи Windows открыт 1Cv8.1CD. Это помогает, когда в 1С у всех одно имя пользователя.
Если в списке активных пользователей висит сеанс человека, который давно выключил компьютер, это след аварийного завершения. Такой «призрак» обычно исчезает, когда все остальные выйдут из базы, а следующий пользователь откроет её заново.
Штатный способ: блокировка работы пользователей
Это основной и самый безопасный способ выгнать пользователей из файловой базы . Механизм есть во всех конфигурациях на БСП: Бухгалтерии, ЗУП, УТ, Комплексной автоматизации, УНФ.
Как включить блокировку
- Откройте
Администрирование → Обслуживание. - Перейдите по ссылке «Блокировка работы пользователей».
- Заполните сообщение для пользователей, например: «Обновление базы с 19:00, сохраните документы».
- Укажите время начала и окончания блокировки.
- Задайте код разрешения — любую строку, например
upd01. Он понадобится вам самим. - Установите блокировку кнопкой на форме.
Пользователи увидят предупреждение с вашим текстом. В назначенное время их программы завершатся сами. Новые входы будут запрещены до окончания блокировки.
Как войти в заблокированную базу самому
Блокировка не пускает никого, включая администратора. Чтобы войти, добавьте к запуску ключ /UC с кодом разрешения. В окне запуска 1С выберите базу, нажмите «Изменить» и на последнем шаге впишите в дополнительные параметры:
/UCupd01
Тот же ключ работает и для Конфигуратора, и для командной строки.
Не забудьте снять блокировку после работ. Иначе утром никто не сможет войти, а ваш код разрешения будет знать только один человек.
Если сеанс не завершается по блокировке
Программа пользователя проверяет блокировку раз в какое-то время и сама закрывается. Это работает, только пока процесс 1С «жив». Если у пользователя зависла программа, открыто модальное окно или заснул ноутбук, сеанс останется висеть. Для таких случаев нужны способы из следующих разделов.
taskkill на его компьютере либо на терминальном сервере.1Cv8.1CD на сервере в «Общих папках», затем проверьте базу.Принудительно завершить 1С через Диспетчер задач и taskkill
Если программа у пользователя зависла, её процесс нужно снять на том компьютере, где она запущена. Для файловой базы это обычно рабочее место сотрудника или терминальный сервер.
Всё несохранённое в этом сеансе пропадёт: открытый документ, введённые строки, незаписанные изменения.
Процессы 1С
| Процесс | Что это |
|---|---|
1cv8c.exe | Тонкий клиент |
1cv8.exe | Толстый клиент и Конфигуратор |
1cv8s.exe | Окно запуска (стартер) |
На рабочем месте пользователя
- Откройте Диспетчер задач (
Ctrl+Shift+Esc). - Перейдите на вкладку «Подробности».
- Найдите
1cv8c.exeили1cv8.exe, нажмите «Снять задачу».
На терминальном сервере
Здесь важно снять процесс именно нужного человека, а не всех подряд. На вкладке «Пользователи» Диспетчера задач разверните учётную запись сотрудника и завершите процесс 1С только у неё.
То же из командной строки, запущенной от имени администратора:
:: посмотреть, у кого запущен тонкий клиент
tasklist /V /FI "IMAGENAME eq 1cv8c.exe"
:: завершить 1С только у пользователя ivanov
taskkill /F /IM 1cv8c.exe /FI "USERNAME eq ivanov"
Если терминальная сессия сотрудника полностью зависла, её можно завершить целиком командами query session (покажет номер сессии) и logoff <номер>.
Команда taskkill /F /IM 1cv8c.exe без фильтра по пользователю закроет 1С у всех на сервере. Делайте так только вне рабочего времени.
Если база опубликована на веб-сервере
Пользователи веб-клиента или тонкого клиента через веб-публикацию работают с файловой базой через процесс веб-сервера (IIS или Apache). Тогда сеансы держит он. Перезапуск службы веб-сервера оборвёт все такие сеансы сразу, поэтому делайте его только после предупреждения.
Закрыть файл базы на сервере, если компьютер пользователя недоступен
Бывает, что сотрудник ушёл, а его ноутбук заснул или отвалился от сети с открытой 1С. Процесс до утра не снять, а база нужна сейчас.
На компьютере, где лежит папка базы:
- Откройте
compmgmt.msc. - Перейдите в
Общие папки → Открытые файлы. - Найдите строку с путём к
1Cv8.1CDи нужной учётной записью. - Правой кнопкой мыши — «Закрыть открытый файл».
То же через командную строку:
:: список открытых по сети файлов с их ID
net file
:: закрыть файл по ID из списка
net file 25 /close
Если в момент закрытия программа пользователя записывала данные, файл базы может повредиться.
Поэтому после такой операции, пока в базу никто не вошёл:
- 💾 сделайте копию папки базы;
- 🛠 запустите Конфигуратор и выполните
Администрирование → Тестирование и исправление, сначала только проверку логической целостности; - 🔍 при подозрении на физическое повреждение файла используйте утилиту
chdbfl.exeиз каталогаbinустановленной платформы.
У пользователя, чей файл закрыли, программа при следующем действии выдаст ошибку и закроется. Попросите его потом перезапустить 1С, а не продолжать работу в том же окне.
Файлы блокировки: когда их удаление помогает
Пока база открыта, в её папке появляются служебные файлы рядом с 1Cv8.1CD, например 1Cv8.cdn. После штатного выхода всех пользователей 1С сама их убирает. После сбоя (отключили свет, перезагрузили сервер) такие файлы могут остаться, и тогда база ведёт себя так, будто в ней кто-то есть.
Главное правило: удаление файлов блокировки не выгоняет пользователей. Пока процесс 1С держит файл открытым, Windows просто не даст его удалить и сообщит, что файл открыт в другой программе. Если удалить получилось, значит, его уже никто не держал.
Порядок действий:
- Убедитесь, что 1С закрыта у всех: проверьте «Открытые файлы» на сервере и терминальные сессии.
- Сделайте копию всей папки базы.
- Удалите служебные файлы блокировки. Не трогайте
1Cv8.1CD, а также папки1Cv8Log(журнал регистрации) и1Cv8FTxt(индекс полнотекстового поиска). - Откройте базу и проверьте, что сообщение о занятости пропало.
Если вы не уверены, какой файл служебный, не удаляйте ничего. Сравните содержимое папки, когда база гарантированно закрыта, с тем, что вы видите сейчас: лишними будут как раз временные файлы.
Утилита rac и файловая база
Утилита rac управляет кластером серверов 1С через сервер администрирования ras. Она умеет выводить и завершать сеансы, например rac session list и rac session terminate. Но работает это только для баз, зарегистрированных в кластере, то есть для клиент-серверного варианта.
Файловая база в кластере не зарегистрирована, поэтому rac её не видит. Запускать ras ради файловой базы бесполезно, никаких её сеансов он не покажет.
Что из этого следует на практике:
- 🖥 для файловой базы используйте блокировку работы пользователей и средства Windows из разделов выше;
- 📈 если вам постоянно нужно точечно отключать сеансы по одному, а пользователей в базе больше 10–15, это повод перевести базу в клиент-серверный вариант. Тогда появятся консоль кластера и
rac; - ❓ точный набор параметров для своей версии смотрите командой
rac help session.
Как выгонять пользователей по расписанию
Обычная задача: каждую ночь освобождать базу для резервной копии или обновления. Регламентное задание 1С для этого в файловом варианте не годится. В файловой базе регламентные задания выполняются внутри одного из клиентских сеансов, и если все вышли из 1С, задание просто не запустится.
Надёжнее связка из блокировки и Планировщика заданий Windows.
Вариант 1: заранее настроенная блокировка
В форме «Блокировка работы пользователей» можно указать время начала в будущем. Поставьте, например, 22:00–23:00. Подходит для разовых работ, но каждую ночь вручную её не включают.
Вариант 2: параметры запуска БСП в bat-файле
Типовые конфигурации на БСП понимают параметр запуска /C"ЗавершитьРаботуПользователей". Сеанс, запущенный с ним, устанавливает блокировку и ждёт, пока остальные выйдут. Снимается блокировка запуском с /C"РазрешитьРаботуПользователей".
Пример ночного скрипта для Планировщика заданий. Номер версии в пути замените на установленный у вас:
@echo off
set V8=start "" /wait "C:\Program Files\1cv8\8.3.24.1586\bin\1cv8.exe"
set BASE=/F"D:\1C\Buh"
set AUTH=/N"Администратор" /P"пароль"
:: 1. выгнать пользователей и заблокировать вход
%V8% ENTERPRISE %BASE% %AUTH% /C"ЗавершитьРаботуПользователей" /UCbackup
:: 2. выгрузить базу в .dt
%V8% DESIGNER %BASE% %AUTH% /UCbackup /DumpIB"E:\Backup\buh.dt" /Out"E:\Backup\log.txt"
:: 3. снять блокировку
%V8% ENTERPRISE %BASE% %AUTH% /C"РазрешитьРаботуПользователей" /UCbackup
Перед боевым запуском проверьте скрипт днём на копии базы. Если программы пользователей зависли, блокировка их не закроет. На терминальном сервере добавьте перед выгрузкой страховку — taskkill с фильтром по нужным пользователям — и запускайте всё это заведомо в нерабочее время.
Пароль в bat-файле лучше не хранить в открытом виде. Создайте в базе отдельного пользователя только для обслуживания и ограничьте доступ к папке со скриптом.
Частые ошибки при отключении пользователей
- ❌ Удаляют
1Cv8.1CDвместо файла блокировки. Это и есть вся база. Восстановление — только из резервной копии. - ❌ Снимают процесс у всех на терминальном сервере, хотя завис один человек. Остальные теряют несохранённые документы.
- ❌ Ставят блокировку без кода разрешения или забывают его. Войти потом не может никто, включая администратора.
- ❌ Закрывают открытый файл на сервере и сразу пускают людей в базу, не сделав проверку. Мелкое повреждение всплывает через неделю.
- ❌ Рассчитывают на регламентное задание в файловой базе, которое должно ночью всех выгнать, хотя ночью в базе никого нет и задание не стартует.
Частые вопросы
Можно ли выгнать одного конкретного пользователя, не трогая остальных?
Пользователь давно вышел, а в списке активных он всё ещё есть. Что делать?
Нужно ли выгонять пользователей, чтобы сделать резервную копию?
1Cv8.1CD при открытой базе может дать нецелостную копию, поэтому для копирования файлов всех нужно отключить. Для выгрузки в .dt отключение тоже лучше делать: так копия гарантированно отражает базу на один момент.