Блокировка информационной базы 1С перед обновлением и обслуживанием
Содержание
Чтобы заблокировать базу 1С, откройте её в режиме «1С:Предприятие» под администратором и включите блокировку в форме «Блокировка работы пользователей» (раздел Администрирование → Обслуживание). Для клиент-серверной базы то же самое делается флажком «Блокировка начала сеансов включена» в свойствах базы в консоли кластера или командой rac infobase update.
Типичная ситуация: вечером нужно обновить конфигурацию , а утром в базе сидят двадцать человек, и половина уходит домой, не закрыв программу. Правильно заблокировать базу 1С — значит запретить новые входы, вежливо выгнать текущие сеансы, оставить себе лазейку по коду разрешения и не забыть снять запрет после работ. Ниже по способам — от штатного к аварийному.
Как устроена блокировка базы 1С и что выбрать
Механизм один на уровне платформы: блокировка начала сеансов. Она запрещает открывать новые сеансы, но сама по себе не закрывает уже открытые. Закрывать работающих пользователей должен либо администратор, либо код типовой конфигурации, который при включённой блокировке предупреждает людей и завершает их сеансы.
У блокировки пять параметров:
- 🕐 начало и окончание — можно задать окно заранее, например с 22:00 до 06:00;
- 💬 сообщение — его увидит пользователь при попытке входа;
- 🔑 код разрешения — с ним вход возможен, несмотря на запрет;
- ⚙️ блокировка регламентных заданий — отдельный флажок, на сеансы не влияет;
- 🧩 параметр блокировки — служебная строка, обычно пустая.
| Способ | Вариант базы | Когда использовать | Риски |
|---|---|---|---|
| Форма «Блокировка работы пользователей» | файловая и клиент-серверная | плановые работы, нужен вход в базу | базу должен открыть администратор |
| Консоль кластера | клиент-серверная | база не открывается, нужен быстрый запрет | нужны права администратора кластера |
rac / запуск с /C | обе (rac — только сервер) | ночные обновления по расписанию | ошибка в скрипте оставит базу закрытой |
| Средства СУБД | клиент-серверная | восстановление БД из бэкапа на уровне SQL | сервер 1С теряет соединение, сеансы рвутся |
| Остановка службы, закрытие файлов | обе | всё зависло, другие способы не сработали | обрыв сеансов, несохранённые данные |
Для обновления конфигурации обычно хватает первого или второго способа. До SQL и остановки службы доходить не нужно.
Блокировка из режима «1С:Предприятие» и роль Конфигуратора
Этот способ работает в типовых конфигурациях на Библиотеке стандартных подсистем: Бухгалтерия 3.0, ЗУП 3.1, УТ 11, КА, ERP. Порядок одинаковый для файловой и серверной базы.
Пошагово
- Войдите в базу пользователем с полными правами.
- Откройте
Администрирование → Обслуживание. Ссылка «Блокировка работы пользователей» находится в группе «Обслуживание» (в части конфигураций раздел называется «Поддержка и обслуживание»). - Поставьте флажок запрета работы пользователей.
- Заполните сообщение: что происходит и когда база откроется. Например:
Обновление конфигурации. База будет доступна в 23:30. - Укажите время начала и окончания. Если оставить окончание пустым, блокировка будет действовать, пока её не снимут вручную.
- Задайте код разрешения, например
7731, и запишите его. - Нажмите «Установить блокировку».
После установки работающие пользователи получают предупреждение, а через несколько минут их сеансы завершаются. Чтобы зайти в закрытую базу самому, добавьте к строке запуска параметр /UC с кодом:
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /S"srv1c\buh" /UC7731
В окне выбора баз это делается без командной строки: «Изменить» → последний шаг мастера → поле «Дополнительные параметры запуска», туда пишется /UC7731.
При чём здесь Конфигуратор
В Конфигураторе нет отдельной кнопки «заблокировать базу». Его роль другая:
- 👥
Администрирование → Активные пользователи— посмотреть, кто ещё в базе, перед началом работ; - 🔒 при обновлении структуры базы данных, загрузке
.dt, тестировании и исправлении Конфигуратору нужен монопольный доступ, и он не получит его, пока открыты другие сеансы.
Поэтому связка такая: сначала блокировка и завершение сеансов в режиме Предприятия или в консоли, потом Конфигуратор с кодом /UC. Открывать Конфигуратор лучше с тем же параметром, иначе после блокировки вы не попадёте туда сами.
Блокировка клиент-серверной базы в консоли кластера и через rac
Если база не открывается или нужно закрыть её без входа в программу, используйте консоль администрирования серверов 1С.
В консоли
- Откройте консоль, разверните
Кластеры → <кластер> → Информационные базы. - Правой кнопкой по базе → «Свойства». Консоль спросит логин и пароль администратора информационной базы.
- Поставьте флажок «Блокировка начала сеансов включена», заполните время, сообщение и код разрешения.
- При необходимости включите «Блокировка регламентных заданий включена».
- Нажмите «ОК».
- Перейдите в ветку «Сеансы» этой базы, выделите сеансы пользователей и удалите их.
Удаление сеанса в консоли обрывает работу пользователя без сохранения. Сначала разошлите предупреждение и дайте людям 5–10 минут, а фоновые сеансы смотрите отдельно: прерванный обмен или закрытие месяца придётся перезапускать.
Командой rac
Для скриптов и ночных обновлений есть утилита rac, она работает через сервер администрирования ras. Пример для Windows:
set RAC="C:\Program Files\1cv8\8.3.24.1691\bin\rac.exe"
%RAC% cluster list
%RAC% infobase summary list --cluster=<uuid кластера>
%RAC% infobase update --cluster=<uuid кластера> --infobase=<uuid базы> ^
--infobase-user=Админ --infobase-pwd=*** ^
--sessions-deny=on --denied-message="Обновление до 23:30" ^
--permission-code=7731 --scheduled-jobs-deny=on
%RAC% session list --cluster=<uuid кластера> --infobase=<uuid базы>
%RAC% session terminate --cluster=<uuid кластера> --session=<uuid сеанса>
Номер версии в пути замените на свой. Снятие блокировки — та же команда infobase update с --sessions-deny=off и --scheduled-jobs-deny=off. Если кластер защищён паролем администратора кластера, добавьте его параметры; точный список ключей смотрите в rac help infobase.
Блокировка файловой базы
У файловой базы нет консоли кластера, поэтому основной путь — форма «Блокировка работы пользователей» из предыдущего раздела. Платформа сохраняет параметры блокировки в файле 1Cv8.cdn в каталоге базы, рядом с 1Cv8.1CD.
Что полезно знать:
- 📁 файл
1Cv8.cdnсоздаёт и удаляет сама платформа при установке и снятии блокировки. Править его вручную не нужно; - 🗑 если блокировку забыли снять, а код потерян, удаление
1Cv8.cdnснимает запрет. Делайте это, когда в базе никого нет, и сначала скопируйте файл; - ⚠️ в сети встречается совет создать файл
1Cv8.lckв папке базы. Штатным способом блокировки сеансов это не является, рассчитывать на него не стоит.
Проверить, кто держит файловую базу
, можно на сервере, где лежит папка: Управление компьютером → Общие папки → Открытые файлы. В списке видно, с какого компьютера открыт 1Cv8.1CD.
Блокировка по расписанию и регламентные задания
Здесь два разных вопроса, и их часто путают.
Первый — заблокировать базу автоматически ночью. Время начала и окончания блокировки задаётся прямо в форме или в консоли: поставьте 22:00–06:00, и база сама закроется и откроется. Если нужен полный цикл «закрыть → обновить → открыть», используйте Планировщик заданий Windows и пакетный запуск. Типовые конфигурации на БСП принимают параметры запуска:
rem установить блокировку и завершить сеансы
"C:\Program Files\1cv8\8.3.24.1691\bin\1cv8.exe" ENTERPRISE /F"D:\Bases\Buh" ^
/N"Админ" /P"***" /C"ЗавершитьРаботуПользователей" /UC7731
rem ... обновление, выгрузка, тестирование ...
rem снять блокировку
"C:\Program Files\1cv8\8.3.24.1691\bin\1cv8.exe" ENTERPRISE /F"D:\Bases\Buh" ^
/N"Админ" /P"***" /C"РазрешитьРаботуПользователей" /UC7731
Для серверной базы вместо /F указывается /S"сервер\база", либо используются команды rac из раздела выше.
Второй — заблокировать сами регламентные задания. Блокировка сеансов их не останавливает: обмен с сайтом, загрузка курсов валют или выписок продолжат работать и могут помешать обновлению.
- 🖥 в клиент-серверной базе — флажок «Блокировка регламентных заданий включена» в консоли или
--scheduled-jobs-deny=onвrac; - 📄 в файловой базе регламентные задания выполняются, пока открыт хотя бы один сеанс клиента, поэтому их обычно не нужно блокировать отдельно. Отключить конкретное задание можно в
Администрирование → Обслуживание → Регламентные операции → Регламентные и фоновые задания.
Перед обновлением посмотрите список фоновых заданий. Если там висит длинная операция, например перепроведение за квартал, дождитесь её или остановите осознанно.
Блокировка на уровне СУБД и аварийные меры
Эти способы нужны, когда штатная блокировка не помогла или работа идёт с самой базой данных SQL, например при восстановлении из бэкапа.
Microsoft SQL Server
Перевод базы в однопользовательский режим обрывает все подключения, включая рабочие процессы 1С:
ALTER DATABASE [buh] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
-- работы: RESTORE, DBCC CHECKDB и т. п.
ALTER DATABASE [buh] SET MULTI_USER;
PostgreSQL
ALTER DATABASE buh WITH ALLOW_CONNECTIONS false;
SELECT pg_terminate_backend(pid) FROM pg_stat_activity
WHERE datname = 'buh' AND pid <> pg_backend_pid();
-- работы
ALTER DATABASE buh WITH ALLOW_CONNECTIONS true;
Для обычного обновления конфигурации эти команды не нужны. Сервер 1С при этом теряет соединение с базой, пользователи получают ошибки, а не понятное сообщение. Перед такими действиями сначала включите блокировку сеансов в 1С.
Остановка службы сервера 1С
Последний вариант, когда сеансы не завершаются и консоль не отвечает: остановить службу агента сервера
1С:Предприятия в services.msc. Это обрывает сеансы всех баз кластера, а не одной, поэтому делайте так только в согласованное окно и предупредите пользователей других баз. Для файловой базы аналог — закрыть зависшие файлы в «Открытых файлах» на сервере или перезапустить компьютер пользователя, который держит базу.
Как убедиться, что база заблокирована
Проверка занимает минуту и спасает от ситуации, когда в середине обновления в базу заходит бухгалтер.
Для сервера состояние видно и из командной строки: rac infobase info --cluster=<uuid> --infobase=<uuid> с логином администратора базы. В выводе параметр sessions-deny должен быть on.
Если вход без кода всё-таки проходит, проверьте время начала блокировки. Оно сравнивается со временем сервера: при неверном часовом поясе или часах на сервере окно блокировки может ещё не наступить.
Ошибки, из-за которых блокировка не срабатывает или мешает
Большинство проблем с блокировкой базы 1С возникает не во время установки, а до или после неё.
- 🔁 Блокировку не сняли. Утром никто не может войти, а администратор в отпуске. Указывайте время окончания с запасом и дублируйте снятие последней строкой скрипта.
- 🔑 Код разрешения знает один человек. Храните его там же, где пароли от базы, а не в голове. Один и тот же код на всех базах удобен, но тогда он быстро перестаёт быть секретом.
- 🧾 Сообщение без сроков. Текст «База заблокирована» вызывает десяток звонков. Пишите, кто работает и до скольки:
Обновление ЗУП, Петров, до 21:00. - 🌐 Забыли про внешние подключения. Обмены через COM-соединение, веб-сервисы и HTTP-сервисы тоже открывают сеансы. Если такой обмен стоит в планировщике другого сервера, он упрётся в запрет и выдаст ошибку — предупредите тех, кто за него отвечает.
- 🧮 Заблокировали не ту базу. В кластере часто живут копии с похожими именами:
buh,buh_test,buh_old. Перед командойrac infobase updateсверьте имя базы в выводеinfobase summary list. - ⏰ Окно задано в прошлом. Если дата окончания уже прошла, блокировка формально установлена, но не действует. Проверяйте результат входом без кода.
Частые вопросы
Что делать, если забыли код разрешения?
1Cv8.cdn из каталога базы, предварительно сохранив копию.Почему после блокировки пользователи всё ещё работают?
Мешает ли блокировка веб-клиенту и мобильному доступу?
Можно ли заблокировать только часть пользователей?
Снимется ли блокировка сама?
rac.