Кто и что держит базу 1С: ищем источник блокировки от сеанса до файла
Содержание
Проверить блокировку 1С проще всего по месту, где она хранится. В клиент-серверной базе откройте свойства информационной базы в консоли администрирования кластера и посмотрите флажок «Блокировка начала сеансов включена». В файловой базе посмотрите, кто держит открытыми файлы 1Cv8.1CD и 1Cv8.1CL в каталоге базы.
Под словом «блокировка» в 1С прячутся четыре разные вещи: запрет входа пользователей, конфликт блокировок данных в транзакции, занятый файл базы и недоступная лицензия. У каждой свой текст ошибки и своё место проверки. Сначала определите тип по сообщению, потом идите в нужный раздел.
С чего начать: определяем тип блокировки по сообщению
Текст ошибки сразу сужает круг поиска. Запишите его дословно или сделайте снимок экрана.
| Что видит пользователь | Тип блокировки | Где проверять |
|---|---|---|
Начало сеанса с информационной базой запрещено | Блокировка начала сеансов | Консоль кластера, раздел БСП в базе, rac |
Конфликт блокировок при выполнении транзакции: Превышено максимальное время ожидания предоставления блокировки | Управляемые блокировки данных | Узел «Блокировки» в консоли, техжурнал |
Ошибка установки монопольного режима | Кто-то ещё работает в базе | Список сеансов, открытые файлы |
Не обнаружена лицензия для использования программы или Не найден ключ защиты программы | Лицензия или ключ HASP | Менеджер лицензий, ключи, сеансы |
| База открывается долго, затем ошибка доступа к файлу | Файл занят процессом или антивирусом | Открытые файлы в Windows |
Отдельно стоят зависания без сообщения. Пользователь нажал «Провести», документ висит минуту, потом ошибка или успех. Это почти всегда ожидание управляемой блокировки: другой сеанс в этот момент пишет те же данные.
💡 Если ошибка одна у всех пользователей сразу, ищите на уровне базы или сервера. Если у одного — на уровне его сеанса, компьютера или лицензии.
Проверка блокировки сеансов в консоли администрирования сервера
Для клиент-серверной базы главный инструмент — консоль администрирования серверов 1С. Она подключается к агенту сервера (порт 1540 по умолчанию).
Флажок блокировки входа
- Откройте консоль, разверните
Центральные серверы 1С:Предприятия → <имя сервера> → Кластеры → <кластер> → Информационные базы. - Щёлкните правой кнопкой по базе и выберите «Свойства». Введите логин и пароль администратора базы, если консоль их спросит.
- Посмотрите блок полей блокировки:
- 🔒 «Блокировка начала сеансов включена» — главный флажок;
- 🕐 «Начало» и «Конец» — интервал действия блокировки;
- 💬 «Сообщение» — текст, который видят пользователи;
- 🔑 «Код разрешения» — код для входа во время блокировки;
- ⏸ «Блокировка регламентных заданий включена» — отдельный флажок для фоновых задач.
Частая ловушка: флажок стоит, но интервал уже прошёл. Тогда вход разрешён. Обратная ситуация — флажок стоит, а дата начала в будущем. Пользователи пока работают, но в указанное время их начнёт выкидывать.
Если пустой код разрешения и включённая блокировка остались после обновления, ни один пользователь не войдёт, включая того, кто её ставил. Снимите флажок в консоли или войдите с параметром /UC<код>, если код известен.
Кто сейчас в базе
Раскройте у базы узел «Сеансы». Там видно имя пользователя, компьютер, приложение (тонкий клиент, конфигуратор, фоновое задание, COM-соединение) и время начала. Узел «Соединения» показывает сетевые подключения, включая служебные.
Обратите внимание на сеансы конфигуратора и «зависшие» COM-соединения внешних обработок. Именно они чаще всего мешают получить монопольный режим.
Узел «Блокировки»
У базы и у кластера в консоли есть узел «Блокировки». Он показывает, какой сеанс держит блокировку и на какой объект. Это мгновенный снимок: если обновить список через секунду, он может быть уже пустым. Для разбора долгих ожиданий нужен технологический журнал, о нём ниже.
Блокировка работы пользователей из самой базы
В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) блокировку ставят и снимают без консоли. Путь: Администрирование → Обслуживание → Блокировка работы пользователей. В старых релизах раздел назывался «Поддержка и обслуживание».
Форма показывает текущее состояние: установлена ли блокировка, с какого времени, сообщение пользователям. Здесь же видно число активных сеансов. Для файловой базы это основной способ, консоли кластера у неё нет.
Если блокировка установлена и вы вошли с кодом, закончить её можно этой же формой. Без кода в базу не попасть. На такой случай в БСП предусмотрены параметры запуска:
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F"D:\Bases\Buh" /N"Администратор" /P"пароль" /C"РазрешитьРаботуПользователей" /UC"КОД"
Параметр /C"ЗавершитьРаботуПользователей" делает обратное: включает блокировку и завершает сеансы. Используйте его только в окне обслуживания.
Анализ файла блокировок в файловом варианте базы
Файловая база — это каталог с файлом 1Cv8.1CD. Когда с базой работает хотя бы один пользователь, рядом появляется служебный файл 1Cv8.1CL. Платформа с его помощью согласует доступ нескольких сеансов.
Как проверить, что база занята
- Откройте каталог базы. Путь видно в окне запуска 1С внизу при выборе базы.
- Посмотрите, есть ли
1Cv8.1CL. Если все вышли, а файл остался, он мог пережить аварийное завершение. - Выясните, кто держит файлы открытыми:
- на сервере, где лежит каталог:
Управление компьютером → Общие папки → Открытые файлы— видно пользователя и компьютер; - на локальной машине: «Монитор ресурсов» (
resmon), вкладка «ЦП», поле «Связанные дескрипторы», поиск по1Cv8; - из командной строки сервера общей папки:
- на сервере, где лежит каталог:
openfiles /query /fo table | findstr /i "1Cv8"
Для локально открытых файлов openfiles требует включённого учёта (openfiles /local on) и перезагрузки. Для файлов в общей папке он работает сразу.
Что делать с найденным
- 👤 Нашли живого пользователя — попросите его выйти. Это самый безопасный вариант.
- 🛡 Файл держит антивирус или служба резервного копирования — добавьте каталог базы в исключения, а копирование перенесите на ночь.
- 💀 Процесс
1cv8.exeзавис на чужом компьютере — завершите его в «Диспетчере задач» на том компьютере.
Удалять 1Cv8.1CL можно только когда в базе точно никого нет. Удаление файла при работающих пользователях грозит повреждением базы. Перед этим закройте общую папку для записи или отключите сеансы через «Открытые файлы», затем сделайте копию каталога.
Если после выхода всех пользователей файл не удаляется с ошибкой «файл занят», значит, процесс его ещё держит. Ищите этот процесс, а не силу удаления.
Проверка лицензий и ключей защиты HASP
Лицензионная блокировка выглядит иначе: база не открывается с сообщением про лицензию или ключ. Без лицензии платформа базу не запускает (исключение — учебная версия).
Программная лицензия
Файлы программных лицензий лежат в C:\ProgramData\1C\licenses с расширением .lic. Проверьте, что каталог есть, файл на месте, а у пользователя есть права на чтение. Частая причина «пропажи» — замена материнской платы, сетевой карты или переустановка Windows: лицензия привязана к параметрам компьютера и перестаёт подходить.
В клиент-серверной базе клиентские лицензии выдаёт сервер. Сколько их занято, видно по сеансам:
rac session list --cluster=<uuid-кластера> --licenses
Если все лицензии заняты висящими сеансами, новый пользователь получит отказ, хотя «реально» работает меньше людей.
Аппаратный ключ HASP
- Откройте в браузере на компьютере с ключом
http://localhost:1947. Это панель Sentinel Admin Control Center, её ставит драйвер ключа. - В разделе ключей проверьте, что ключ виден и не заблокирован.
- В разделе сессий видно, какие компьютеры заняли места на сетевом ключе.
Для сетевого ключа клиенты ищут менеджер лицензий по сети. Его адрес задаётся в файле nethasp.ini в каталоге conf платформы. Если адрес не прописан, поиск идёт широковещательно и через маршрутизаторы не проходит.
💡 Сетевой ключ на 10 пользователей занят полностью, а людей в базе пятеро? Посмотрите сессии в localhost:1947: часто места держат компьютеры, где 1С закрыли аварийно.
Анализ журнала регистрации и технологического журнала
Журнал регистрации отвечает на вопрос «кто и когда». Откройте Администрирование → Обслуживание → Журнал регистрации или в конфигураторе Администрирование → Журнал регистрации.
Полезные отборы:
- 📥 событие «Сеанс. Начало» и «Сеанс. Завершение» — кто входил перед проблемой;
- ❌ «Сеанс. Аутентификация (ошибка)» — неудачные попытки входа;
- 🔧 события установки блокировки работы пользователей — кто и когда её включил;
- 📅 интервал на 10–15 минут вокруг времени ошибки.
Конфликты управляемых блокировок журнал регистрации не раскрывает. Для них включают технологический журнал: файл logcfg.xml в каталоге conf платформы на сервере. События, которые нужно собирать:
| Событие | Что показывает |
|---|---|
TLOCK | Установка управляемой блокировки, ожидание и его длительность |
TTIMEOUT | Превышено время ожидания: кто ждал и кто мешал |
TDEADLOCK | Взаимоблокировка двух сеансов |
Минимальный пример настройки:
<config xmlns="http://v8.1c.ru/v8/tech-log">
<log location="D:\techlog" history="24">
<event><eq property="name" value="TLOCK"/></event>
<event><eq property="name" value="TTIMEOUT"/></event>
<event><eq property="name" value="TDEADLOCK"/></event>
<property name="all"/>
</log>
</config>
В записях TTIMEOUT ищите номер сеанса-виновника и контекст: модуль и строку кода, на которой он держал данные. Чаще всего это долгая обработка или проведение большого документа, захватившее регистр.
Техжурнал с property name="all" быстро растёт. Ставьте history в часах, следите за местом на диске и удалите файл настройки после сбора данных.
Блокировка на уровне Windows и сети
Иногда 1С не виновата: запрос просто не доходит до сервера или файла.
Порты клиент-серверного варианта
Клиент обращается к агенту сервера (1540), затем к менеджеру кластера (1541) и рабочим процессам. Диапазон портов рабочих процессов задаётся в свойствах рабочего сервера, по умолчанию 1560–1591. Закрытый брандмауэром диапазон даёт ошибку подключения, похожую на «базу заблокировали».
Проверка из PowerShell на компьютере пользователя:
Test-NetConnection srv1c -Port 1540
Test-NetConnection srv1c -Port 1541
Test-NetConnection srv1c -Port 1560
TcpTestSucceeded : False на любом из портов — разбирайтесь с брандмауэром сервера или сети.
Права на каталог файловой базы
Пользователю нужны права на чтение и запись в каталог базы, а не только в файл 1Cv8.1CD. Без права создать 1Cv8.1CL база не откроется на запись. Проверьте вкладку «Безопасность» папки и права на общий ресурс: действуют более строгие из двух.
Что ещё блокирует файлы
- 🛡 антивирус с проверкой при доступе;
- 💾 агент резервного копирования, который копирует
1Cv8.1CDво время работы; - ☁️ синхронизация облачных папок — файловую базу нельзя держать в синхронизируемой папке.
Как снять блокировку из командной строки
Для клиент-серверной базы есть утилита rac и сервер администрирования ras. Утилиты лежат в каталоге bin установленной платформы. Сначала запустите ras (по умолчанию слушает порт 1545):
ras cluster --daemon
Дальше по шагам:
rem 1. Узнать идентификатор кластера
rac cluster list
rem 2. Узнать идентификатор базы
rac infobase summary list --cluster=<uuid-кластера>
rem 3. Посмотреть параметры блокировки базы
rac infobase info --cluster=<uuid-кластера> --infobase=<uuid-базы> --infobase-user="Администратор" --infobase-pwd="пароль"
rem 4. Снять блокировку начала сеансов и регламентных заданий
rac infobase update --cluster=<uuid-кластера> --infobase=<uuid-базы> --infobase-user="Администратор" --infobase-pwd="пароль" --sessions-deny=off --scheduled-jobs-deny=off
В выводе infobase info смотрите поля sessions-deny, denied-from, denied-to, denied-message, permission-code и scheduled-jobs-deny. Это те же поля, что в свойствах базы в консоли.
Список сеансов и принудительное завершение одного из них:
rac session list --cluster=<uuid-кластера> --infobase=<uuid-базы>
rac session terminate --cluster=<uuid-кластера> --session=<uuid-сеанса>
Завершение сеанса обрывает работу пользователя: несохранённые данные пропадут, а проведение документа откатится. Завершайте сеансы после предупреждения людей или в нерабочее время. Если кластер защищён паролем администратора, добавьте параметры --cluster-user и --cluster-pwd. Остальные ключи смотрите в справке rac help.
Для файловой базы командной строки на уровне платформы нет. Используйте параметры БСП /C"ЗавершитьРаботуПользователей" и /C"РазрешитьРаботуПользователей" из раздела про блокировку из базы.
rac infobase update --sessions-deny=off или войдите с кодом /UC.TTIMEOUT в техжурнале.1Cv8.1CD, попросите пользователей выйти.http://localhost:1947, проверьте ключ и сессии, адрес в nethasp.ini.Test-NetConnection.