Снимаем блокировку с информационной базы 1С:Предприятия 8.3 — в программе, в консоли кластера и в файлах
Содержание
Чтобы разблокировать базу 1С, сначала поймите, кто её держит. Если при входе программа пишет, что начало сеансов запрещено, — снимите флажок «Блокировка начала сеансов включена» в свойствах базы в консоли кластера или запустите 1С с параметром /UC<код разрешения> и выключите блокировку в Администрирование → Обслуживание. Если не удаётся получить монопольный режим — завершите чужие сеансы, а в файловой базе проверьте зависшие процессы 1cv8.exe и файл 1Cv8.1CL.
Способы идут от безопасных, которые не обрывают ничью работу, к радикальным. Инструкция общая для платформы 8.3 и типовых конфигураций на БСП: Бухгалтерии 3.0, ЗУП 3.1, УТ 11.
Почему база 1С оказывается заблокированной
Слово «заблокирована» в 1С описывает три разные ситуации. Лечатся они по-разному, поэтому начните с того, какая у вас.
| Что видите | Что произошло | Где снимать |
|---|---|---|
| При входе — сообщение, что начало сеансов запрещено, иногда с текстом администратора | Включена блокировка начала сеансов | Программа, консоль кластера, rac |
Ошибка установки монопольного режима при обновлении или загрузке .dt | В базе есть другие сеансы | Список сеансов, консоль кластера |
| Документ не записывается: объект уже заблокирован другим пользователем | Кто-то держит открытой ту же форму | Сеанс этого пользователя |
Откуда обычно берётся блокировка начала сеансов:
- 🔄 Прерванное обновление. Помощник обновления конфигурации ставит блокировку перед обновлением и снимает после. Если процесс упал или компьютер выключили, блокировка остаётся.
- 👤 Администратор забыл её снять после ночного обслуживания: свёртки, тестирования, загрузки.
- 📅 Блокировка с интервалом. Её поставили «с 22:00 до 06:00», а время окончания не указали — и она действует бессрочно.
- 🖥️ Внешний скрипт обслуживания (пакетное обновление, бэкап) включил блокировку и не дошёл до шага её снятия.
Монопольный режим не получается из-за «живых» сеансов: пользователь ушёл домой с открытой программой, у бухгалтера в удалённом доступе остался отключённый, но не завершённый сеанс, работает фоновое или регламентное задание, подключён обмен или веб-сервис.
Как найти, кто держит базу: сеансы и соединения
Прежде чем кого-то выкидывать, посмотрите список. Иногда в нём оказывается коллега, который сейчас проводит закрытие месяца .
Из самой программы. В типовых конфигурациях откройте Администрирование → Обслуживание и найдите команду «Активные пользователи». Список покажет пользователя, компьютер, время начала сеанса и приложение (тонкий клиент, фоновое задание, COM-соединение, Конфигуратор).
Из Конфигуратора. Меню Администрирование → Активные пользователи. Этот же список, удобно, когда в режим «Предприятие» войти не получается.
В консоли администрирования серверов (клиент-серверная база
). Раскройте Кластеры → <кластер> → Информационные базы → <база>. Внутри два узла:
- Сеансы — пользователи, фоновые задания, сеансы Конфигуратора. Видно приложение, время последней активности, рабочий сервер.
- Соединения — физические подключения к рабочим процессам. Соединение может жить без сеанса, например у консоли или COM-подключения.
Из командной строки через утилиту rac (поставляется с платформой, нужна служба ras):
rac localhost:1545 cluster list
rac localhost:1545 infobase summary list --cluster=<uuid-кластера>
rac localhost:1545 session list --cluster=<uuid-кластера> --infobase=<uuid-базы>
Первая команда даёт идентификатор кластера, вторая — идентификатор базы, третья — список её сеансов. Если на кластере есть администратор, добавьте --cluster-user и --cluster-pwd. Порт 1545 — порт ras по умолчанию.
Смотрите на колонку «Приложение». «Фоновое задание» с давним временем начала — частая причина, по которой не включается монопольный режим, хотя людей в базе нет.
Как снять блокировку сеансов из самой программы
Самый мягкий способ. Никого не выкидывает и подходит для файловой и серверной базы.
Если в программу войти можно
- Войдите пользователем с полными правами.
- Откройте
Администрирование → Обслуживание. - Найдите команду «Блокировка работы пользователей».
- В открывшейся форме нажмите кнопку снятия блокировки (она заменяет кнопку установки, когда блокировка уже стоит).
- Проверьте вход под обычным пользователем.
Если при входе пишет, что сеансы запрещены
Блокировку обычно ставят с кодом разрешения. С ним администратор входит, несмотря на запрет. Код указывается в форме блокировки, а в консоли кластера — в поле «Код разрешения».
Запустите 1С с ключом /UC:
"C:\Program Files\1cv8\8.3.24.1691\bin\1cv8.exe" ENTERPRISE /S"srv1c\buh" /UC"KodRazresheniya"
Номер платформы и путь подставьте свои, для файловой базы вместо /S используйте /F"D:\Bases\Buh". После входа снимите блокировку по шагам выше.
В конфигурациях на БСП есть ещё один приём — параметр запуска /C"РазрешитьРаботуПользователей". Программа при старте сама снимает блокировку. Его удобно прописать в ярлык администратора или в скрипт обслуживания.
"C:\Program Files\1cv8\8.3.24.1691\bin\1cv8.exe" ENTERPRISE /F"D:\Bases\Buh" /N"Администратор" /P"пароль" /UC"KodRazresheniya" /C"РазрешитьРаботуПользователей"
Пароль в ярлыке или bat-файле видит любой, кто откроет файл. Для разовой операции вводите пароль руками, а скрипты храните в папке с доступом только для администраторов.
Разблокировка базы в консоли администрирования серверов 1С
Если кода разрешения никто не помнит, а в программу не войти, снимайте блокировку на уровне кластера. Это работает только для клиент-серверной базы.
- Откройте консоль администрирования серверов 1С:Предприятия.
- Раскройте
Кластеры → <кластер> → Информационные базы. - Правой кнопкой по базе — «Свойства». Консоль спросит логин и пароль администратора информационной базы, а не кластера.
- Снимите флажок «Блокировка начала сеансов включена».
- Очистите поля «Начало», «Конец», «Сообщение» и «Код разрешения», чтобы старые значения не путали следующего администратора.
- Если стоит флажок «Блокировка регламентных заданий включена», а задания должны работать, — снимите и его.
- Нажмите «ОК».
Та же операция из командной строки:
rac localhost:1545 infobase update --cluster=<uuid-кластера> --infobase=<uuid-базы> ^
--infobase-user="Администратор" --infobase-pwd="пароль" ^
--sessions-deny=off --scheduled-jobs-deny=off
Если на вашей версии платформы команда ругается на параметр, проверьте синтаксис через rac help infobase.
Как завершить зависшие сеансы
Когда нужен монопольный режим, а в списке висят сеансы, их завершают.
- Предупредите людей: незаписанные изменения в документах при завершении сеанса пропадут.
- В консоли откройте узел «Сеансы» нужной базы.
- Выделите сеанс — правой кнопкой — «Удалить».
- Фоновые задания удаляйте в последнюю очередь и только если знаете, что это за задание: обрыв обмена или закрытия месяца может оставить данные в промежуточном состоянии.
Через rac:
rac localhost:1545 session terminate --cluster=<uuid-кластера> --session=<uuid-сеанса>
Перезапуск службы «Агент сервера 1С:Предприятия» или завершение процесса rphost обрывает сеансы во всех базах этого сервера, а не только в проблемной. Это крайняя мера — в нерабочее время и после предупреждения пользователей.
Файловая база: процессы, файл 1Cv8.1CL и сетевые блокировки
У файловой базы нет кластера и консоли. Блокировку начала сеансов здесь снимают из программы (раздел выше), а монопольный режим мешают получить процессы, которые держат файл 1Cv8.1CD.
Шаг 1. Найдите, кто открыл базу
Список активных пользователей в программе или Конфигураторе покажет сеансы. Если там пусто, а монопольного режима нет — значит, сеанс «повис» без владельца.
Шаг 2. Закройте зависшие процессы
На компьютерах пользователей и на терминальном сервере откройте диспетчер задач и найдите 1cv8.exe или 1cv8c.exe. У процесса без окна сохранить уже нечего — его можно завершить. Процесс с окном сначала попросите закрыть самого пользователя.
Шаг 3. Проверьте открытые файлы на файловом сервере
Если база лежит в общей папке Windows, на сервере откройте «Управление компьютером» → «Общие папки» → «Открытые файлы». Там видно, с какого компьютера держат 1Cv8.1CD. Закрыть сетевое открытие файла можно правой кнопкой, но закрывайте только когда пользователь точно вышел из программы — иначе велик риск повредить базу.
Шаг 4. Файл блокировки 1Cv8.1CL
В каталоге базы рядом с 1Cv8.1CD лежит служебный файл 1Cv8.1CL. Платформа ведёт в нём учёт подключений. После аварийного завершения он может остаться и мешать.
- Убедитесь, что ни одного процесса 1С с этой базой нигде не запущено.
- Сделайте копию каталога базы.
- Переименуйте
1Cv8.1CL, например в1Cv8.1CL.old. - Запустите базу. Платформа создаст файл заново.
- Если всё работает — удалите старый файл.
Не трогайте 1Cv8.1CD — это сама база. Переименование или удаление чего-либо в каталоге при открытой базе может её повредить.
Если файл не переименовывается, значит, его кто-то держит — вернитесь к шагам 2 и 3. Перезагрузка файлового сервера тоже освобождает файлы, но обрывает работу всех, кто с ним связан.
Как снять блокировку базы программно, кодом
Пригодится разработчикам и тем, кто пишет обработки обслуживания. Работает в серверном контексте и требует права администрирования.
Снять блокировку начала сеансов:
&НаСервере
Процедура СнятьБлокировкуСеансовНаСервере()
Блокировка = ПолучитьБлокировкуСеансов();
Если Блокировка.Установлена Тогда
Блокировка.Установлена = Ложь;
УстановитьБлокировкуСеансов(Блокировка);
КонецЕсли;
КонецПроцедуры
Посмотреть, кто сейчас в базе:
&НаСервере
Процедура ПоказатьСеансыНаСервере()
Для Каждого Сеанс Из ПолучитьСеансыИнформационнойБазы() Цикл
Сообщить(СтрШаблон("%1 — %2, начало %3",
Сеанс.Пользователь, Сеанс.ИмяПриложения, Сеанс.НачалоСеанса));
КонецЦикла;
КонецПроцедуры
Если ваша обработка сама включала монопольный режим через УстановитьМонопольныйРежим(Истина), выключайте его в той же процедуре — УстановитьМонопольныйРежим(Ложь) — в том числе в ветке Исключение. Иначе после ошибки сеанс останется монопольным, и остальные не войдут, пока он не закроется.
УстановитьМонопольныйРежим(Истина);
Попытка
ВыполнитьОбслуживание();
УстановитьМонопольныйРежим(Ложь);
Исключение
УстановитьМонопольныйРежим(Ложь);
ВызватьИсключение;
КонецПопытки;
Процедура ВыполнитьОбслуживание() здесь условная — подставьте свою.
Чтобы завершать чужие сеансы из кода, платформенного метода нет: это делается через администрирование кластера (rac или COM-объект V83.COMConnector). В конфигурациях на БСП проще вызвать стандартную форму «Блокировка работы пользователей» — она умеет и запретить вход, и завершить сеансы.
Как не допускать повторных блокировок: регламент и профилактика
Блокировка базы сама по себе — полезный инструмент. Проблемы начинаются, когда её некому снять. Несколько правил, которые снимают большую часть звонков «база не пускает»:
- ⏰ Ставьте блокировку с временем окончания. В форме блокировки и в консоли кластера есть поле «Конец». Если скрипт упадёт, блокировка всё равно снимется по времени.
- 🔑 Записывайте код разрешения в общий для администраторов менеджер паролей, а не в голову одного человека.
- 📜 Добавьте в скрипты обслуживания финальный шаг снятия блокировки, который выполняется и при ошибке. Например, запуск с
/C"РазрешитьРаботуПользователей"в конце bat-файла после бэкапа и обновления. - 📅 Переносите тяжёлые регламентные задания на ночь. Загрузка курсов, полнотекстовый индекс, обмены во время обновления не дадут включить монопольный режим . Перед обслуживанием включайте «Блокировку регламентных заданий», после — выключайте.
- 🚪 Настройте автоматический выход из программы при простое у пользователей удалённого рабочего стола и сессиях RDP: отключённая, но не завершённая терминальная сессия держит сеанс 1С сутками.
- 📢 Сообщение блокировки. Пишите в поле «Сообщение» понятный текст: «Обновление до 23:30, по вопросам — Иван, доб. 105». Пользователь не будет звонить с вопросом «почему не пускает».
Короткий порядок для ночного обслуживания серверной базы: