Выгоняем всех из базы 1С: от списка сеансов до ночного обновления
Содержание
Чтобы завершить работу пользователей
перед обновлением, в конфигураторе 1С сначала откройте Администрирование → Активные пользователи и посмотрите, кто в базе. Затем включите блокировку начала сеансов и закройте оставшиеся сеансы: в клиент-серверной базе — через консоль кластера или rac, в файловой — через блокировку работы пользователей в самой программе.
Типичная картина: вечер, новый релиз скачан, вы жмёте F7, а конфигуратор отвечает, что монопольный режим установить нельзя. В списке активных пользователей — два бухгалтера, которые «давно ушли», фоновое задание обмена и чей-то забытый конфигуратор. Ниже — как разобраться с каждым из них.
С чего начать: кто сейчас работает в базе
Монопольный доступ нужен не всегда. Он требуется для трёх операций:
- 🔄 обновление конфигурации базы данных, когда меняется структура хранения;
- 📦 загрузка информационной базы из файла
.dt; - 🛠 тестирование и исправление информационной базы.
Редактировать конфигурацию, сравнивать её с поставкой или выгружать в .dt можно и при работающих пользователях. Поэтому выгонять всех заранее «на всякий случай» не нужно.
Список активных пользователей в конфигураторе
Меню Администрирование → Активные пользователи показывает каждое подключение: имя пользователя, приложение, компьютер, время начала и номер сеанса. Смотрите в первую очередь на колонку приложения.
| Что в колонке «Приложение» | Кто это | Что с ним делать |
|---|---|---|
| Тонкий клиент, толстый клиент, веб-клиент | Живой пользователь | Предупредить, затем отключить |
| Конфигуратор (Designer) | Другой администратор или разработчик | Связаться, выяснить, не сохраняет ли он изменения |
| Фоновое задание (BackgroundJob) | Регламентное задание или длительная операция | Запретить регламентные задания, дождаться окончания |
| COM-соединение | Внешняя программа, обмен, интеграция | Остановить внешний процесс на его стороне |
| Web-сервис, HTTP-сервис | Публикация на веб-сервере | Остановить обращения или пул веб-сервера |
Свой сеанс конфигуратора тоже виден в списке. Он отмечен и монопольному режиму не мешает.
Что сделать до отключения людей
- Сделайте резервную копию: выгрузку
.dtили копию базы средствами СУБД. - Предупредите сотрудников минимум за 15–30 минут. Документ, который не записан, при принудительном завершении пропадёт.
- Проверьте, не идёт ли сейчас закрытие месяца , расчёт зарплаты или большой обмен. Прерванная длительная операция откатится, и её придётся запускать заново.
Отключение пользователей прямо из конфигуратора при обновлении
В клиент-серверном варианте современные версии платформы 8.3 сами предлагают решить проблему. Когда вы запускаете обновление конфигурации базы данных, а в базе кто-то есть, появляется окно с ошибкой установки монопольного режима и кнопками. Среди них — Завершить сеансы и повторить.
Как пользоваться кнопкой завершения сеансов
- Сохраните конфигурацию (
Ctrl+S), если ещё не сохранили. - Запустите
Конфигурация → Обновить конфигурацию базы данных(F7). - В окне об ошибке монопольного режима нажмите
Завершить сеансы и повторить. - Платформа принудительно закроет сеансы и снова попытается выполнить обновление.
Сеансы закрываются без вопросов к пользователям: всё несохранённое в их окнах теряется. Нажимайте эту кнопку, только когда людей уже предупредили.
Если кнопки в окне нет или она не помогает, значит, мешающий сеанс не удаётся завершить этим способом. Чаще всего это фоновое задание, которое тут же стартует снова, или подключение веб-сервера. Тогда переходите к блокировке начала сеансов, описанной ниже.
Почему не стоит соглашаться на обновление «потом»
Конфигуратор умеет откладывать применение изменений или выполнять динамическое обновление без выгона пользователей. Для обновлений релиза это плохая идея: изменения в структуре всё равно потребуют монопольного режима, а динамическое обновление на работающей базе иногда приводит к ошибкам у открытых клиентов. Для переходов на новый релиз ставьте окно обслуживания и делайте всё за один заход.
Файловая и клиент-серверная база: в чём разница при завершении работы
Способ зависит от варианта работы базы. Это первое, что нужно понять: в файловом варианте нет кластера и консоли, а в клиент-серверном есть инструменты, которые работают без участия пользователей.
| Файловая база | Клиент-серверная база | |
|---|---|---|
| Где видно сеансы | Администрирование → Активные пользователи | То же + консоль кластера, rac session list |
| Чем закрыть чужой сеанс | Блокировкой работы пользователей в программе, вручную на компьютере пользователя | Консоль кластера, rac session terminate, кнопка в конфигураторе |
| Запрет новых подключений | Блокировка работы пользователей (подсистема БСП) | Блокировка начала сеансов в свойствах базы |
| Обход блокировки администратором | Параметр запуска /UC<код> | Параметр запуска /UC<код> |
Файловый вариант
Каждый пользователь работает с файлом 1Cv8.1CD напрямую по сети. Убить его сеанс с сервера, как в кластере, нельзя: процесс 1С живёт на компьютере сотрудника.
Рабочий порядок для файловой базы:
- Включите блокировку работы пользователей в самой программе (как — в разделе про профилактику). Типовые конфигурации на БСП показывают сотрудникам предупреждение и сами закрывают их сеансы к назначенному времени.
- Если кто-то не отключился, позвоните ему или закройте 1С на его компьютере удалённо.
- Если база лежит в общей папке Windows, на файловом сервере откройте
Управление компьютером → Общие папки → Открытые файлы. Там видно, с какого компьютера держат1Cv8.1CD.
Закрыть открытый файл в оснастке «Общие папки» можно, но у пользователя 1С в этот момент упадёт с ошибкой, а несохранённые данные пропадут. Делайте это, только если человек недоступен, а сеанс точно «висит». После такого закрытия перед обновлением запустите тестирование и исправление базы.
Клиент-серверный вариант
Здесь всё управляется сервером 1С. Сеансы можно смотреть и закрывать централизованно, а новые подключения — запретить на уровне информационной базы. Это надёжнее любых уговоров: даже если кто-то нажмёт ярлык 1С, сервер его не пустит.
Как завершить сеансы через консоль кластера и командную строку
Консоль администрирования серверов 1С
Оснастка «Администрирование серверов 1С Предприятия» подключается к агенту сервера (по умолчанию порт 1540).
- Раскройте
Центральный сервер → Кластеры → <ваш кластер> → Информационные базы → <база>. - Откройте свойства базы и включите
Блокировка начала сеансов включена. Заполните сообщение для пользователей, время начала и окончания блокировки, а в полеКод разрешениязадайте свой код, напримерupd2210. - Там же включите
Блокировка регламентных заданий включена, чтобы фоновые задания не стартовали заново. - Откройте у базы ветку
Сеансы, выделите все сеансы, кроме своих, и выберитеУдалитьв контекстном меню. - Запустите конфигуратор с параметром
/UC upd2210— блокировка его пропустит.
Если в свойствах базы спрашивают логин и пароль, это учётная запись администратора информационной базы 1С, а не Windows. Без неё изменить блокировку нельзя.
Утилита rac
Утилита rac удобна для скриптов и для доступа к серверу без графической консоли. Она работает через сервер администрирования ras, который должен быть запущен (по умолчанию порт 1545).
rem Узнать идентификатор кластера
rac cluster list
rem Узнать идентификатор информационной базы
rac infobase summary list --cluster=<uuid-кластера>
rem Посмотреть сеансы базы
rac session list --cluster=<uuid-кластера> --infobase=<uuid-базы>
rem Завершить конкретный сеанс
rac session terminate --cluster=<uuid-кластера> --session=<uuid-сеанса>
Блокировку начала сеансов тоже можно включить из rac через rac infobase update с параметрами запрета сеансов и регламентных заданий. Набор и написание параметров немного отличаются между версиями платформы, поэтому сверьте их со справкой своей версии: rac help infobase.
Если на кластере заданы администраторы, к каждой команде добавьте --cluster-user и --cluster-pwd.
Пакетный запуск 1cv8
Обновление после блокировки удобно выполнять без открытия окна конфигуратора:
"C:\Program Files\1cv8\8.3.xx.xxxx\bin\1cv8.exe" DESIGNER /S srv1c\buh /N Администратор /P пароль /UC upd2210 /UpdateDBCfg /Out C:\logs\update.log
Здесь /S — сервер и имя базы, /UC — код разрешения, /UpdateDBCfg — обновление конфигурации базы данных, /Out — файл журнала. Для файловой базы вместо /S укажите /F и путь к каталогу базы.
Почему сеанс не завершается и база не отпускается
Бывает, что вы удалили все сеансы, а монопольный режим всё равно не устанавливается. Причины обычно одни и те же.
Если завис рабочий процесс
Сеанс, который висит внутри длинной транзакции, иногда не удаляется из консоли сразу: сервер ждёт отката. На большой базе откат идёт минутами — не торопитесь.
Если ждать нельзя, остаётся перезапуск рабочих процессов или службы «Агент сервера 1С:Предприятия». Перезапуск службы обрывает сеансы всех баз на этом сервере, не только вашей. Делайте его только в согласованное окно, когда остальные базы тоже никто не использует.
Как не выгонять людей вручную: блокировка и ночное обслуживание
Ручное выгоняние по вечерам быстро надоедает. Есть два штатных инструмента, которые делают это за вас.
Блокировка работы пользователей в типовых конфигурациях
В конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11 и другие) блокировка включается из режима «Предприятие». В Бухгалтерии и ЗУП откройте Администрирование → Обслуживание и найдите ссылку «Блокировка работы пользователей».
В форме блокировки задайте текст сообщения, время начала и окончания и код разрешения. Пользователи заранее увидят предупреждение, а к назначенному времени программа сама завершит их сеансы. В клиент-серверной базе форма дополнительно спросит параметры администрирования кластера.
Для автоматизации у БСП есть параметры запуска в режиме «Предприятие»:
rem Установить блокировку и завершить работу пользователей
1cv8.exe ENTERPRISE /S srv1c\buh /N Администратор /P пароль /C "ЗавершитьРаботуПользователей" /UC upd2210
rem Снять блокировку после обновления
1cv8.exe ENTERPRISE /S srv1c\buh /N Администратор /P пароль /C "РазрешитьРаботуПользователей" /UC upd2210
Сценарий ночного обновления
Связка из блокировки, выгона и пакетного обновления укладывается в один .bat, который запускает планировщик Windows:
- Выгрузить резервную копию.
- Установить блокировку с кодом разрешения (БСП-параметр или свойства базы через
rac). - Подождать несколько минут, пока закроются сеансы, и добить оставшиеся через
rac session terminate. - Обновить конфигурацию
через
1cv8 DESIGNER ... /UC <код> /UpdateDBCfg. - Запустить «Предприятие» под администратором, чтобы прошёл обработчик обновления.
- Снять блокировку и проверить журнал
/Out.
Не забывайте шаг 6. Если скрипт упадёт посередине, утром никто не войдёт в базу. Добавьте в конец проверку кода возврата и уведомление на почту или в мессенджер.
Частые вопросы
Можно ли завершить сеанс другого пользователя из окна активных пользователей в конфигураторе?
rac или кнопку завершения сеансов, которую конфигуратор предлагает при обновлении клиент-серверной базы.Почему после блокировки я сам не могу войти в базу?
/UC<код разрешения> или добавьте его в строку дополнительных параметров запуска в свойствах базы в окне выбора баз.Сколько ждать после включения блокировки?
Что будет с документом, который пользователь не записал?
Нужен ли монопольный режим для выгрузки базы в .dt?
.dt монопольный режим обязателен.