Зависший сеанс в файловой 1С 8.3: как отключить всех и освободить базу

· 9 мин

Содержание

Чтобы выкинуть пользователя из файловой базы 1С, начните с мягкого способа: включите блокировку работы пользователей в самой программе (Администрирование → Обслуживание). Все сеансы получат предупреждение и закроются сами. Если сеанс завис и не отвечает, принудительно отключать его придётся средствами Windows: закрыть открытый файл 1Cv8.1CD на сервере или завершить процесс 1cv8c.exe / 1cv8.exe на компьютере пользователя.

Консоль кластера серверов здесь не поможет: у файловой базы нет кластера и рабочих процессов. Сеанс — это просто программа на чужом компьютере, которая держит открытым файл базы по сети. Отсюда и методы: через 1С, через сеть, через процессы.

СпособКогда подходитЧто теряет пользователь
Блокировка сеансов в 1ССеансы живые, отвечаютНичего, работа закрывается штатно
Закрыть открытый файл на сервереПользователь недоступен, ПК далекоНесохранённые изменения
taskkill на ПК пользователя или терминалеОкно 1С висит «Не отвечает»Несохранённые изменения
Удаление 1Cv8.1CLВсе процессы закрыты, а база «занята»Ничего, если сеансов действительно нет

Откуда берутся зависшие сеансы в файловой базе

Файловая база — это папка с файлом 1Cv8.1CD. Каждый, кто запустил 1С, открывает этот файл по сети и держит его открытым до выхода. Рядом платформа ведёт служебный файл блокировки 1Cv8.1CL.

Типичные ситуации, когда сеанс «висит»:

  • 🔌 у пользователя пропала сеть или ноутбук ушёл в сон с открытой 1С;
  • 💻 программа зависла на долгом отчёте и не реагирует;
  • 🖥️ на терминальном сервере пользователь закрыл окно RDP, а не вышел — сеанс Windows и 1С остались работать;
  • 🚪 сотрудник ушёл домой и не закрыл программу.

Обычно это вскрывается при обновлении конфигурации. Конфигуратор пишет:

Ошибка установки монопольного режима. Установка монопольного режима невозможна. Есть другие сеансы работы с информационной базой.

Монопольный режим нужен для обновления структуры базы, загрузки .dt, тестирования и исправления. Пока хоть один сеанс открыт, эти операции не запустятся.

Как увидеть, кто сейчас в базе

Сначала выясните, кого именно отключать. Есть два места.

В пользовательском режиме. В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) откройте раздел Администрирование → Обслуживание и найдите ссылку «Активные пользователи». Список покажет имя пользователя 1С, компьютер, время начала сеанса и приложение (тонкий клиент, конфигуратор, фоновое задание).

В конфигураторе. Меню Администрирование → Активные пользователи. Список тот же, но без лишней обвязки.

Запишите имя компьютера из колонки «Компьютер». Оно понадобится, если пользователя придётся отключать через Windows.

В клиент-серверной базе из этого же списка сеанс завершают одной командой через кластер. В файловой базе такого рычага у платформы нет: список только показывает, кто подключён.

Способ 1. Блокировка работы пользователей внутри 1С

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

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

Пользователи увидят предупреждение. Когда наступит время блокировки, их сеансы закроются. Новый вход будет запрещён, пока вы не снимете флажок.

Войти администратору в заблокированную базу можно с ключом /UC:

"C:\Program Files\1cv8\common\1cestart.exe" DESIGNER /F"D:\Bases\Buh" /N"Администратор" /P"пароль" /UC"UPD2024"

Блокировка закрывает только «живые» сеансы. Программа, которая висит или потеряла сеть, сообщение не получит и сама не выйдет. Такой сеанс снимают способами 2 и 3.

Блокировка без входа в пользовательский режим

Конфигурации на БСП принимают команду запуска ЗавершитьРаботуПользователей. Её удобно ставить в bat-файл ночного обновления:

"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F"D:\Bases\Buh" /N"Администратор" /P"пароль" /C"ЗавершитьРаботуПользователей" /UC"UPD2024"

Обратная команда — /C"РазрешитьРаботуПользователей". После обновления не забудьте её выполнить, иначе утром никто не войдёт.

Способ 2. Закрыть файл базы, открытый по сети

Это главный приём для файловой базы, о котором часто забывают. Раз пользователь держит 1Cv8.1CD открытым по сети, сервер, где лежит папка с базой, видит это подключение и умеет его разорвать.

Перед этим предупредите людей: всё, что они не записали, пропадёт. Делайте это вне рабочего пика.

Через оснастку Windows

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

У пользователя 1С выдаст ошибку и закроется. База освободится.

Как понять, чей это файл

В «Открытых файлах» видна учётная запись Windows и компьютер, а не имя пользователя 1С. Сопоставить их просто:

  1. В списке активных пользователей 1С посмотрите колонку «Компьютер» у нужного сеанса.
  2. В PowerShell-выводе ниже ищите тот же компьютер в поле ClientComputerName (там бывает IP-адрес — сверьте его через ping -a).
  3. Если в офисе общие учётки Windows вроде buh, ориентируйтесь только на компьютер.

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

Через командную строку

Команда net file выводит список открытых файлов с номерами:

net file
net file 1342 /close

В PowerShell удобнее фильтровать сразу по базе:

Get-SmbOpenFile | Where-Object Path -like "*Bases\Buh\1Cv8.1CD" |
    Select-Object FileId, ClientComputerName, ClientUserName, Path

Get-SmbOpenFile | Where-Object Path -like "*Bases\Buh\1Cv8.1CD" |
    Close-SmbOpenFile -Force

Первая команда показывает, кто держит файл. Вторая закрывает все такие подключения без вопросов. Запускайте PowerShell от имени администратора.

Если база лежит не на Windows-сервере, а на сетевом хранилище (NAS), открытые файлы смотрят в его веб-интерфейсе — раздел про SMB-подключения или активные сеансы.

Способ 3. Завершить процесс 1С на компьютере пользователя

Когда окно 1С висит с надписью «Не отвечает», надёжнее завершить сам процесс. Имена процессов:

  • 1cv8c.exe — тонкий клиент, обычный режим работы бухгалтера;
  • 1cv8.exe — толстый клиент и конфигуратор.

На своём компьютере или удалённо по сети

Локально — Диспетчер задач, вкладка «Подробности», процесс 1cv8c.exe → «Снять задачу».

Удалённо, если у вас права администратора на компьютере пользователя:

tasklist /S BUH-PC03 /FI "IMAGENAME eq 1cv8c.exe"
taskkill /S BUH-PC03 /IM 1cv8c.exe /F

Имя BUH-PC03 берите из колонки «Компьютер» в списке активных пользователей.

На терминальном сервере

Тут на одном сервере работает десяток людей, и taskkill /IM 1cv8c.exe без фильтра выкинет всех. Фильтруйте по пользователю:

tasklist /FI "IMAGENAME eq 1cv8c.exe" /V
taskkill /FI "USERNAME eq ivanova" /IM 1cv8c.exe /F

Ключ /V выводит столбец с именем пользователя Windows. Если завис весь RDP-сеанс, найдите его номер и завершите целиком:

query session
logoff 3

logoff закрывает у пользователя всё: 1С, Excel, почту. Делайте это, только когда сеанс брошен.

Что происходит с сеансом?

Способ 4. Файл блокировки 1Cv8.1CL

Бывает, что все разошлись, процессов нет, открытых файлов нет, а 1С по-прежнему считает базу занятой. Виноват служебный файл 1Cv8.1CL в папке базы: после аварийного выхода он мог остаться с записью о сеансе.

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

  1. Ещё раз проверьте Открытые файлы на сервере. Если файл 1Cv8.1CD кем-то открыт, удалять ничего нельзя.
  2. Убедитесь, что не запущены регламентные задания через отдельный сеанс и что базу не открывает веб-публикация (у опубликованной файловой базы файл держит служба веб-сервера — Apache или IIS).
  3. Скопируйте 1Cv8.1CL в сторону на случай ошибки.
  4. Удалите 1Cv8.1CL из папки базы.
  5. Запустите конфигуратор. Платформа создаст файл блокировки заново.

Никогда не удаляйте и не переименовывайте сам 1Cv8.1CD — это и есть база.

Если удалить 1Cv8.1CL, пока кто-то реально работает, два сеанса перестанут видеть друг друга. Это прямой путь к повреждению базы. Поэтому пункт 1 обязателен.

Если база опубликована на веб-сервере, освободить её поможет перезапуск службы (Apache2.4 или пула приложений IIS). Все веб-пользователи при этом отключатся.

Проверка базы после принудительного отключения

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

Сначала — резервная копия. В конфигураторе: Администрирование → Выгрузить информационную базу. Или просто скопируйте папку с базой, пока в ней никого нет.

Физическая проверка файла. В папке установленной платформы, в каталоге bin, лежит утилита chdbfl.exe. Она проверяет структуру 1Cv8.1CD без запуска 1С:

  1. Запустите C:\Program Files\1cv8\<версия>\bin\chdbfl.exe.
  2. Укажите путь к 1Cv8.1CD.
  3. Сначала запустите проверку без флажка исправления. Если найдены ошибки — повторите с исправлением.

Логическая проверка. Конфигуратор → Администрирование → Тестирование и исправление. Для начала хватит флажков «Проверка логической целостности информационной базы» и «Проверка ссылочной целостности информационной базы». Режим требует монопольного доступа — то есть всех пользователей вы уже отключили.

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

Как сделать, чтобы сеансы не зависали

Половину проблем снимают организационно, вторую — настройками сети и компьютеров.

  • 🕕 Регламент выхода. Договоритесь, что к определённому часу 1С закрыта у всех. Перед плановым обновлением включайте блокировку заранее — способ 1.
  • 💤 Сон и гибернация. На рабочих местах с 1С отключите автоматический сон или хотя бы переход в сон при открытых сетевых файлах. Ноутбук, уснувший с открытой базой, — самый частый «призрак».
  • 🖥️ Терминальный сервер. Настройте в групповой политике лимит для отключённых RDP-сеансов, например завершать их через 2–4 часа. Тогда закрытое крестиком окно не будет держать 1С до утра.
  • 🛡️ Антивирус. Добавьте папку базы в исключения на сервере. Проверка 1Cv8.1CD на лету замедляет доступ и провоцирует зависания.
  • 📶 Сеть. Не работайте с файловой базой по Wi-Fi и через VPN. Для удалённых сотрудников — терминальный сервер или веб-клиент.
  • 👥 Рост команды. Файловая база рассчитана на небольшое число одновременных пользователей. Если зависания стали ежедневными, а людей в базе больше 5–7, пора считать переход на клиент-серверный вариант.
Видит ли пользователь, что его отключили?
При блокировке — да, заранее приходит сообщение с вашим текстом. При закрытии файла или процесса 1С просто выдаёт ошибку соединения или исчезает без предупреждения.
Почему в «Активных пользователях» висит сеанс, которого уже нет?
Запись остаётся, пока программа на том компьютере не завершилась. Закройте её процесс или открытый файл на сервере — строка пропадёт.
Можно ли выкинуть одного пользователя, не трогая остальных?
Да. Закройте только его строку в «Открытых файлах» на сервере или завершите процесс на его компьютере. Блокировка в 1С действует на всех сразу.
Нужно ли отключать пользователей для обычного сохранения копии?
Для выгрузки .dt из конфигуратора — да. Для простого копирования папки базы тоже лучше отключить, иначе копия может оказаться несогласованной.
Можно ли отключить пользователя из 1С на телефоне или в веб-клиенте?
Мобильный и веб-клиент работают через веб-публикацию, файл базы держит служба веб-сервера. Их сеансы закрывает блокировка в 1С, а принудительно — только перезапуск службы веб-сервера, что отключит всех веб-пользователей.