Пользователь не выходит из 1С, а базу нужно освободить: рабочие способы для файлового варианта

· 10 мин

Содержание

Выгнать пользователя из файловой базы 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С у всех одно имя пользователя.

Если в списке активных пользователей висит сеанс человека, который давно выключил компьютер, это след аварийного завершения. Такой «призрак» обычно исчезает, когда все остальные выйдут из базы, а следующий пользователь откроет её заново.

Штатный способ: блокировка работы пользователей

Это основной и самый безопасный способ выгнать пользователей из файловой базы . Механизм есть во всех конфигурациях на БСП: Бухгалтерии, ЗУП, УТ, Комплексной автоматизации, УНФ.

Как включить блокировку

  1. Откройте Администрирование → Обслуживание.
  2. Перейдите по ссылке «Блокировка работы пользователей».
  3. Заполните сообщение для пользователей, например: «Обновление базы с 19:00, сохраните документы».
  4. Укажите время начала и окончания блокировки.
  5. Задайте код разрешения — любую строку, например upd01. Он понадобится вам самим.
  6. Установите блокировку кнопкой на форме.

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

Как войти в заблокированную базу самому

Блокировка не пускает никого, включая администратора. Чтобы войти, добавьте к запуску ключ /UC с кодом разрешения. В окне запуска 1С выберите базу, нажмите «Изменить» и на последнем шаге впишите в дополнительные параметры:

/UCupd01

Тот же ключ работает и для Конфигуратора, и для командной строки.

Не забудьте снять блокировку после работ. Иначе утром никто не сможет войти, а ваш код разрешения будет знать только один человек.

Если сеанс не завершается по блокировке

Программа пользователя проверяет блокировку раз в какое-то время и сама закрывается. Это работает, только пока процесс 1С «жив». Если у пользователя зависла программа, открыто модальное окно или заснул ноутбук, сеанс останется висеть. Для таких случаев нужны способы из следующих разделов.

Что происходит с сеансом, который надо закрыть?

Принудительно завершить 1С через Диспетчер задач и taskkill

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

Всё несохранённое в этом сеансе пропадёт: открытый документ, введённые строки, незаписанные изменения.

Процессы 1С

ПроцессЧто это
1cv8c.exeТонкий клиент
1cv8.exeТолстый клиент и Конфигуратор
1cv8s.exeОкно запуска (стартер)

На рабочем месте пользователя

  1. Откройте Диспетчер задач (Ctrl+Shift+Esc).
  2. Перейдите на вкладку «Подробности».
  3. Найдите 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С. Процесс до утра не снять, а база нужна сейчас.

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

  1. Откройте compmgmt.msc.
  2. Перейдите в Общие папки → Открытые файлы.
  3. Найдите строку с путём к 1Cv8.1CD и нужной учётной записью.
  4. Правой кнопкой мыши — «Закрыть открытый файл».

То же через командную строку:

:: список открытых по сети файлов с их ID
net file

:: закрыть файл по ID из списка
net file 25 /close

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

Поэтому после такой операции, пока в базу никто не вошёл:

  • 💾 сделайте копию папки базы;
  • 🛠 запустите Конфигуратор и выполните Администрирование → Тестирование и исправление, сначала только проверку логической целостности;
  • 🔍 при подозрении на физическое повреждение файла используйте утилиту chdbfl.exe из каталога bin установленной платформы.

У пользователя, чей файл закрыли, программа при следующем действии выдаст ошибку и закроется. Попросите его потом перезапустить 1С, а не продолжать работу в том же окне.

Файлы блокировки: когда их удаление помогает

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

Главное правило: удаление файлов блокировки не выгоняет пользователей. Пока процесс 1С держит файл открытым, Windows просто не даст его удалить и сообщит, что файл открыт в другой программе. Если удалить получилось, значит, его уже никто не держал.

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

  1. Убедитесь, что 1С закрыта у всех: проверьте «Открытые файлы» на сервере и терминальные сессии.
  2. Сделайте копию всей папки базы.
  3. Удалите служебные файлы блокировки. Не трогайте 1Cv8.1CD, а также папки 1Cv8Log (журнал регистрации) и 1Cv8FTxt (индекс полнотекстового поиска).
  4. Откройте базу и проверьте, что сообщение о занятости пропало.

Если вы не уверены, какой файл служебный, не удаляйте ничего. Сравните содержимое папки, когда база гарантированно закрыта, с тем, что вы видите сейчас: лишними будут как раз временные файлы.

Утилита 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 вместо файла блокировки. Это и есть вся база. Восстановление — только из резервной копии.
  • ❌ Снимают процесс у всех на терминальном сервере, хотя завис один человек. Остальные теряют несохранённые документы.
  • ❌ Ставят блокировку без кода разрешения или забывают его. Войти потом не может никто, включая администратора.
  • ❌ Закрывают открытый файл на сервере и сразу пускают людей в базу, не сделав проверку. Мелкое повреждение всплывает через неделю.
  • ❌ Рассчитывают на регламентное задание в файловой базе, которое должно ночью всех выгнать, хотя ночью в базе никого нет и задание не стартует.

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

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