Почему файловая база 1С Предприятие 8 «зависает» на блокировках и как вернуть доступ

· 10 мин

Содержание

Блокировка в файловой базе 1С Предприятие 8 — это захват таблицы или всего файла 1Cv8.1CD одним сеансом, пока другой ждёт. Снимается она так: найдите сеанс в списке активных пользователей, дождитесь окончания его операции или закройте его, а если сеанса уже нет — освободите «висящий» дескриптор файла на компьютере, где лежит база.

Бухгалтер проводит документ и получает Конфликт блокировок при выполнении транзакции. Администратор не может обновить конфигурацию , потому что «база используется». Почти всегда это решается без перезагрузки всего офиса: достаточно понять, какой сеанс держит таблицы, и освободить их в правильном порядке.

Откуда берутся блокировки в файловом режиме

Файловая база — это один файл 1Cv8.1CD в папке на диске или в сетевой папке. Сервера 1С между пользователями нет. Каждый клиент сам открывает этот файл и сам читает и пишет в него, а порядок доступа обеспечивает файловая СУБД платформы и блокировки операционной системы.

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

Основные источники блокировок:

  • 🧾 Долгие транзакции. Перепроведение за месяц, закрытие месяца , групповая обработка документов, загрузка банковской выписки на сотни строк.
  • 🔄 Обмены и регламентные задания. Синхронизация с другой базой, загрузка курсов, обновление классификаторов. В файловом режиме их выполняет один из клиентских сеансов, и пользователь об этом может не знать.
  • 🛠 Конфигуратор. Сохранение конфигурации, обновление структуры базы, выгрузка в .dt, тестирование и исправление требуют, чтобы других пользователей в базе не было.
  • 🔌 «Мёртвые» сеансы. Ноутбук закрыли крышкой, пропала сеть, процесс 1cv8.exe завис. Операционная система какое-то время держит файл открытым от имени уже несуществующего клиента.
  • 🛡 Антивирус и резервное копирование . Сканер или программа копирования открывает 1Cv8.1CD в момент работы пользователей и мешает им.

Типичные сообщения, которые видит пользователь:

Текст ошибкиЧто означает
Конфликт блокировок при выполнении транзакцииНужная таблица занята чужой транзакцией дольше допустимого времени ожидания
Ошибка блокировки информационной базы для конфигурированияКонфигурацию уже редактирует другой сеанс Конфигуратора
Не удалось установить монопольный режимВ базе есть другие сеансы, а операция требует работать в ней одному
Ошибка совместного доступа к файлу '1Cv8.1CD'Файл открыт другим процессом: клиентом 1С, антивирусом, программой копирования

Как найти, кто держит базу: сеансы и пользователи

Начинайте с самого простого — посмотрите, кто сейчас работает в базе. Это можно сделать из пользовательского режима и из Конфигуратора.

Список активных пользователей

  1. В пользовательском режиме откройте Главное меню (☰) → Все функции → Стандартные → Активные пользователи. Если пункта «Все функции» нет, включите его в Главное меню → Сервис → Параметры флажком «Отображать команду “Все функции”».
  2. В Конфигураторе тот же список открывается через Администрирование → Активные пользователи.
  3. Изучите колонки: пользователь, компьютер, приложение (тонкий клиент, Конфигуратор, фоновое задание), время начала сеанса.

В типовых конфигурациях на БСП (Бухгалтерия 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С. Картину «кто кого ждал» восстанавливают по журналам.

Журнал регистрации

Откройте Администрирование → Обслуживание → Журнал регистрации или в Конфигураторе Администрирование → Журнал регистрации. Отфильтруйте события по уровню «Ошибка» и по времени, когда пользователь пожаловался.

Что искать:

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

Технологический журнал

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

В конфигурациях на БСП есть команда установки блокировки работы пользователей (в разделе Администрирование → Обслуживание, группа про активных пользователей и завершение работы). Она:

  1. Запрещает вход новым пользователям.
  2. Показывает работающим сообщение о завершении работы.
  3. Через заданное время закрывает их сеансы.

Для входа в заблокированную базу используется код разрешения: его указывают при установке блокировки и передают в параметре запуска /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 через Конфигуратор.
  • ❌ Оставить блокировку начала сеансов после обновления. Наутро пользователи увидят, что вход запрещён, и решат, что база сломана.
  • ❌ Снимать «висящие» файлы, не сверив компьютер. Вместо призрака можно выбросить из базы главного бухгалтера посреди закрытия квартала.
  • ❌ Лечить блокировки увеличением мощности клиентских ПК. Узкое место — общий файл и сеть, а не процессор у пользователя.

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

Почему два пользователя не могут одновременно провести документы, если они про разные склады?
В файловой базе блокируется вся таблица регистра, а не отдельные строки. Второй пользователь ждёт, пока первый закончит запись.
Можно ли изменить время ожидания блокировки в файловой базе?
Тонкой настройки, как в кластере серверов 1С, у файлового варианта нет. Решение — сокращать длительность транзакций и разносить тяжёлые операции по времени.
Почему пользователь виден в активных, хотя давно вышел из 1С?
Его сеанс завершился аварийно, а запись о нём ещё не очищена. Обычно она пропадает сама; если мешает обновлению — закройте открытый файл этого компьютера на сервере.
Блокирует ли базу формирование отчёта?
Отчёт в основном читает данные. Короткие отчёты почти не мешают, но долгий отчёт за несколько лет может задержать запись в те же таблицы.
Помогает ли перенос базы на SSD?
Да, транзакции завершаются быстрее, и таблицы освобождаются раньше. Но архитектуру табличных блокировок это не меняет.