Почему файловая база 1С Предприятие 8 «зависает» на блокировках и как вернуть доступ
Содержание
Блокировка в файловой базе 1С Предприятие 8 — это захват таблицы или всего файла 1Cv8.1CD одним сеансом, пока другой ждёт. Снимается она так: найдите сеанс в списке активных пользователей, дождитесь окончания его операции или закройте его, а если сеанса уже нет — освободите «висящий» дескриптор файла на компьютере, где лежит база.
Бухгалтер проводит документ и получает Конфликт блокировок при выполнении транзакции. Администратор не может обновить конфигурацию
, потому что «база используется». Почти всегда это решается без перезагрузки всего офиса: достаточно понять, какой сеанс держит таблицы, и освободить их в правильном порядке.
Откуда берутся блокировки в файловом режиме
Файловая база — это один файл 1Cv8.1CD в папке на диске или в сетевой папке. Сервера 1С между пользователями нет. Каждый клиент сам открывает этот файл и сам читает и пишет в него, а порядок доступа обеспечивает файловая СУБД платформы и блокировки операционной системы.
Отсюда главная особенность: в файловом варианте блокировка ставится на уровне таблиц, а не отдельных записей. Если один пользователь проводит большой документ и пишет в регистр, другой не сможет писать в тот же регистр, даже если его документ про другую организацию или склад. В клиент-серверном варианте с управляемыми блокировками такие операции часто идут параллельно, в файловом — по очереди.
Основные источники блокировок:
- 🧾 Долгие транзакции. Перепроведение за месяц, закрытие месяца , групповая обработка документов, загрузка банковской выписки на сотни строк.
- 🔄 Обмены и регламентные задания. Синхронизация с другой базой, загрузка курсов, обновление классификаторов. В файловом режиме их выполняет один из клиентских сеансов, и пользователь об этом может не знать.
- 🛠 Конфигуратор. Сохранение конфигурации, обновление структуры базы, выгрузка в
.dt, тестирование и исправление требуют, чтобы других пользователей в базе не было. - 🔌 «Мёртвые» сеансы. Ноутбук закрыли крышкой, пропала сеть, процесс
1cv8.exeзавис. Операционная система какое-то время держит файл открытым от имени уже несуществующего клиента. - 🛡 Антивирус и резервное копирование
. Сканер или программа копирования открывает
1Cv8.1CDв момент работы пользователей и мешает им.
Типичные сообщения, которые видит пользователь:
| Текст ошибки | Что означает |
|---|---|
Конфликт блокировок при выполнении транзакции | Нужная таблица занята чужой транзакцией дольше допустимого времени ожидания |
Ошибка блокировки информационной базы для конфигурирования | Конфигурацию уже редактирует другой сеанс Конфигуратора |
Не удалось установить монопольный режим | В базе есть другие сеансы, а операция требует работать в ней одному |
Ошибка совместного доступа к файлу '1Cv8.1CD' | Файл открыт другим процессом: клиентом 1С, антивирусом, программой копирования |
Как найти, кто держит базу: сеансы и пользователи
Начинайте с самого простого — посмотрите, кто сейчас работает в базе. Это можно сделать из пользовательского режима и из Конфигуратора.
Список активных пользователей
- В пользовательском режиме откройте
Главное меню (☰) → Все функции → Стандартные → Активные пользователи. Если пункта «Все функции» нет, включите его вГлавное меню → Сервис → Параметрыфлажком «Отображать команду “Все функции”». - В Конфигураторе тот же список открывается через
Администрирование → Активные пользователи. - Изучите колонки: пользователь, компьютер, приложение (тонкий клиент, Конфигуратор, фоновое задание), время начала сеанса.
В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1) список есть и в разделе Администрирование → Обслуживание. Там же видно, кто работает, и можно перейти к журналу регистрации конкретного пользователя.
Сеанс с приложением «Конфигуратор» — первый подозреваемый, если не получается обновить базу. Сеанс, начатый вчера или неделю назад, — почти наверняка «мёртвый».
Кто держит файл на уровне Windows
Если в списке 1С пусто, а база всё равно «занята», смотрите на компьютер, где физически лежит папка базы:
- Оснастка
fsmgmt.msc→ «Общие папки» → «Открытые файлы». В ней видно, с какого компьютера и под какой учётной записью открыт1Cv8.1CD. - Командная строка от имени администратора:
net file | findstr /i "1Cv8"
- PowerShell (Windows Server 2012 и новее, Windows 8 и новее):
Get-SmbOpenFile | Where-Object { $_.Path -like "*1Cv8*" } |
Select-Object FileId, ClientComputerName, ClientUserName, Path
Так находят «призрака»: компьютер, на котором 1С давно закрыта, но сетевой дескриптор файла ещё не освобождён.
Разбор ожиданий: журнал регистрации и технологический журнал
В файловом варианте нет серверной консоли с таблицей блокировок, как в кластере 1С. Картину «кто кого ждал» восстанавливают по журналам.
Журнал регистрации
Откройте Администрирование → Обслуживание → Журнал регистрации или в Конфигураторе Администрирование → Журнал регистрации. Отфильтруйте события по уровню «Ошибка» и по времени, когда пользователь пожаловался.
Что искать:
- Ошибку с текстом про конфликт блокировок — у пострадавшего пользователя.
- События других пользователей в ту же минуту: запись документов, проведение, загрузку данных, выполнение обработок.
- Длинные цепочки однотипных записей одного сеанса — признак групповой операции, которая и держала таблицы.
Технологический журнал
Если конфликты повторяются, а журнал регистрации не даёт ответа, включите технологический журнал на компьютере пользователя, у которого возникает ошибка. Файл logcfg.xml кладут в папку conf каталога установки платформы, например C:\Program Files\1cv8\conf\:
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
<log location="C:\1C_TechLog" history="24">
<event>
<eq property="name" value="EXCP"/>
</event>
<property name="all"/>
</log>
</config>
Событие EXCP фиксирует исключения, включая конфликты блокировок, вместе с контекстом — модулем и строкой кода, где произошла ошибка. Это помогает понять, какая операция упирается в чужую транзакцию. Параметр history="24" хранит журнал 24 часа.
Технологический журнал быстро растёт. Включайте его на время диагностики, а затем удаляйте logcfg.xml, иначе диск заполнится.
Как снять блокировку пользователя и освободить базу
Действуйте от мягкого к жёсткому. Каждый следующий способ применяйте, только если предыдущий не помог.
Способ 1. Договориться с пользователем
Позвоните человеку из списка активных пользователей и попросите завершить операцию и выйти из 1С. Если идёт перепроведение или закрытие месяца, лучше дождаться конца: прерванная транзакция откатится, и работу придётся повторять.
Способ 2. Блокировка начала сеансов в типовой конфигурации
В конфигурациях на БСП есть команда установки блокировки работы пользователей (в разделе Администрирование → Обслуживание, группа про активных пользователей и завершение работы). Она:
- Запрещает вход новым пользователям.
- Показывает работающим сообщение о завершении работы.
- Через заданное время закрывает их сеансы.
Для входа в заблокированную базу используется код разрешения: его указывают при установке блокировки и передают в параметре запуска /UC, например /UCобновление. Не забудьте снять блокировку после работ, иначе утром никто не войдёт.
В файловом варианте принудительно «убить» чужой сеанс из списка активных пользователей нельзя: нет сервера, который бы его завершил. Работает именно блокировка начала сеансов — клиенты сами получают команду и выходят.
Способ 3. Закрыть процесс на компьютере пользователя
Если пользователь недоступен, а компьютер включён, завершите на нём процесс 1cv8.exe или 1cv8c.exe через диспетчер задач или удалённо:
taskkill /S PC-BUH2 /IM 1cv8c.exe /F
Несохранённые данные этого пользователя пропадут, а его незавершённая транзакция откатится. Делайте это, только когда человек точно не работает .
Способ 4. Закрыть «висящий» файл на сервере
Когда компьютер пользователя выключен, а дескриптор 1Cv8.1CD остался открытым, закройте его на машине с базой:
- в
fsmgmt.msc→ «Открытые файлы» → правой кнопкой по1Cv8.1CD→ «Закрыть открытый файл»; - или командами:
net file
net file 1234 /close
где 1234 — идентификатор из первой команды;
- или в PowerShell:
Close-SmbOpenFile -FileId 1234.
Закрытие файла обрывает сеанс этого клиента без предупреждения. Если вы ошиблись компьютером, у работающего человека 1С закроется с ошибкой. Сверяйте имя компьютера и пользователя.
Способ 5. Перезагрузка компьютера с базой
Крайняя мера, когда ни один способ не помог. Перезагрузка освобождает все дескрипторы, но рвёт работу всех пользователей. Делайте её после рабочего дня или предупредив всех.
Перед любыми действиями в Конфигураторе после такого сбоя сделайте копию папки базы. Аварийно закрытые сеансы — частая причина повреждений, и копия понадобится, если тестирование и исправление пойдёт не так.
Если блокировка не уходит
Бывает, что пользователей нет, файл никто не держит, а ошибка остаётся. Проверьте:
- 🛡 Антивирус. Добавьте папку базы в исключения сканирования «на лету». Проверьте заодно, не открывает ли файл агент резервного копирования или облачной синхронизации (Яндекс Диск, OneDrive): база в синхронизируемой папке — гарантированный источник конфликтов.
- 📂 Автономные файлы Windows. Если у пользователя для сетевой папки с базой включён режим автономной работы, клиент может работать с локальной копией. Отключите его для этой папки.
- 🔐 Права на папку. Каждому пользователю нужны права на чтение и запись во всю папку базы, а не только на файл
1Cv8.1CD: платформа создаёт рядом служебные файлы. - 🧱 Повреждение базы. Если ошибки странные и не связаны с другими сеансами, запустите проверку физической целостности утилитой
chdbfl.exeиз папкиbinплатформы. Запускайте её только при полностью закрытой базе.
Как снизить число блокировок в файловой базе
Полностью убрать блокировки в файловом режиме нельзя — такова его архитектура. Но их можно сделать редкими и короткими.
Разведите тяжёлые операции по времени
- Перепроведение, закрытие месяца, групповую перезапись документов делайте вечером или в обед, когда в базе мало людей.
- Загрузку больших выписок и обменов не запускайте в часы пик.
- Отчёты за год формируйте в отдельное время: формирование отчёта читает данные и при долгом выполнении тоже может мешать записи.
Назначьте сеанс для регламентных заданий
В файловом варианте регламентные задания выполняет клиентский сеанс. Чтобы задания не «ехали» на случайном бухгалтере, запускайте один выделенный клиент с параметром /AllowExecuteScheduledJobs -Force, а у остальных отключите их выполнение параметром /AllowExecuteScheduledJobs -Off. Выделенный сеанс держите на компьютере, который не выключают.
Держите базу правильно
- Папка базы — на локальном диске сервера или компьютера, а не на NAS сомнительного качества и не на флешке.
- Сеть — проводная. Wi-Fi с обрывами плодит «мёртвые» сеансы.
- Регулярно сжимайте таблицы и проверяйте базу: в Конфигураторе
Администрирование → Тестирование и исправление, режим со сжатием таблиц. Делайте это при закрытой базе и после резервной копии. - Файловую базу можно опубликовать на веб-сервере и работать через тонкий клиент по HTTP. Тогда с файлом работает один процесс веб-сервера, а не десяток компьютеров по сети, и «призраков» становится меньше.
Когда пора переходить на клиент-сервер
Признаки, что файловый режим исчерпан:
| Признак | Что это значит |
|---|---|
| Конфликты блокировок ежедневно | Пользователи постоянно пишут в одни и те же регистры |
Размер 1Cv8.1CD — десятки гигабайт | Операции идут долго, транзакции держат таблицы дольше |
| Больше 8–10 активных пользователей (ориентир) | Очередь на запись растёт, ожидание превышает таймаут |
| Обмены и регламентные задания идут постоянно | Фоновая нагрузка мешает ручной работе |
Клиент-серверный вариант с СУБД блокирует данные на уровне записей и при управляемом режиме блокировок позволяет параллельно проводить документы по разным организациям и складам.
Ошибки при администрировании блокировок
- ❌ Удалить или переименовать
1Cv8.1CD, «чтобы сбросить блокировку». Это и есть база. Никаких служебных «файлов блокировки», удаление которых безопасно лечит проблему, в файловой базе искать не нужно. - ❌ Копировать базу во время работы пользователей. Копия файла, в который в этот момент пишут, может оказаться несогласованной. Копируйте при закрытой базе или выгружайте
.dtчерез Конфигуратор. - ❌ Оставить блокировку начала сеансов после обновления. Наутро пользователи увидят, что вход запрещён, и решат, что база сломана.
- ❌ Снимать «висящие» файлы, не сверив компьютер. Вместо призрака можно выбросить из базы главного бухгалтера посреди закрытия квартала.
- ❌ Лечить блокировки увеличением мощности клиентских ПК. Узкое место — общий файл и сеть, а не процессор у пользователя.