Корректное завершение работы 1С:Предприятия без риска для данных
Содержание
Правильно закрыть 1С — значит дождаться окончания записи документа и выйти штатно: крестиком в правом верхнем углу окна, сочетанием Alt+F4 или через меню-«бутерброд» (Файл → Выход). Программа сама спросит про несохранённые объекты и корректно завершит сеанс. Опасно другое: снятие процесса 1cv8.exe в диспетчере задач, выключение компьютера посреди проведения и обрыв сети при работе с файловой базой на общей папке.
Для администратора закрыть 1С — это ещё и отключить всех пользователей перед обновлением или копированием, а потом аккуратно остановить сервер .
Как закрыть программу 1С пользователю
В 1С:Предприятии 8.3 с интерфейсом «Такси» выход из программы штатный в любом из вариантов:
- ❌ крестик в правом верхнем углу главного окна;
- ⌨️
Alt+F4, когда активно главное окно (а не открытая форма документа); - ☰ меню-«бутерброд» в левом верхнем углу →
Файл → Выход.
Все три способа равноценны. Платформа проверит открытые формы, предложит сохранить изменения и только потом закроет сеанс. Крестик на окне — не «грубое» закрытие, это обычный выход.
Что сделать перед выходом
- Дождитесь, пока закончится проведение или запись. Пока внизу крутится индикатор или форма недоступна — не закрывайте.
- Завершите длительные операции: закрытие месяца , загрузку выписки, обмен с сайтом или ЭДО. Прерванная обработка не испортит базу, но работу придётся начинать заново.
- Ответьте на вопрос «Данные были изменены. Сохранить изменения?» осознанно. «Нет» — значит правки в этой форме пропадут.
Почему транзакция защищает данные
Каждая запись документа в 1С идёт внутри транзакции. Если процесс оборвался посередине, СУБД или файловый движок откатывает незавершённую транзакцию: документ просто остаётся в прежнем состоянии. Поэтому один «убитый» клиент в серверной базе почти никогда не ломает данные.
С файловой базой риск выше. Данные пишутся прямо в файл 1Cv8.1CD, и если запись оборвалась на уровне диска или сети, файл может получить повреждённые страницы.
Самый опасный сценарий — файловая база в сетевой папке и нестабильный Wi-Fi или VPN. Обрыв связи во время записи — частая причина ошибок вида Файл базы данных поврежден.
Закрытие файловой базы: на что смотреть
В файловом варианте нет сервера, который следит за сеансами. Каждый пользователь сам открывает файл базы, а платформа ведёт рядом служебный файл блокировки 1Cv8.1CL. По нему другие сеансы видят, что база занята.
Пока в базе есть хотя бы один пользователь, вы не сможете:
- 🔒 загрузить
.dtили обновить структуру конфигурации; - 🔒 запустить тестирование и исправление;
- 🔒 безопасно скопировать файл
1Cv8.1CDсредствами Windows.
Файл 1Cv8.1CL платформа удаляет сама, когда закрывается последний сеанс. Если он остался, а пользователей в базе точно нет, чаще всего где-то висит процесс 1cv8.exe или 1cv8c.exe.
Как найти «зависший» сеанс файловой базы
- В открытой базе посмотрите список активных пользователей: в БП 3.0
Администрирование → Обслуживание → Активные пользователи, в ЗУП 3.1 и УТ 11 раздел называетсяАдминистрирование → Поддержка и обслуживание. - Обойдите компьютеры из списка или подключитесь к ним удалённо и закройте программу штатно.
- Если база лежит на терминальном сервере — найдите процесс в диспетчере задач на вкладке «Пользователи».
- Снимайте процесс принудительно только когда пользователь недоступен и вы понимаете, что он ничего не проводит.
Удалять 1Cv8.1CL вручную при работающих сеансах нельзя: два процесса начнут писать в один файл без блокировки. Удаляйте только после того, как убедились, что ни один процесс 1С на этой базе не запущен.
Завершение работы в клиент-серверном варианте
В серверной базе данными управляет СУБД (MS SQL Server или PostgreSQL), а сеансами — кластер серверов 1С. Пользователь закрывает программу так же, как в файловой. Отличия начинаются на стороне администратора.
Сеанс в кластере живёт отдельно от окна. Если у пользователя пропала сеть, сеанс не исчезает сразу: он становится «спящим» и какое-то время держит лицензию и блокировки. Время засыпания пассивного сеанса и завершения спящего задаётся в свойствах информационной базы в консоли кластера.
Порядок остановки сервера 1С
Сервер нельзя «просто перезагрузить», когда в базах работают люди. Безопасный порядок такой:
- Предупредите пользователей и установите блокировку начала сеансов (см. следующий раздел).
- Дождитесь, пока сеансы закроются сами, затем завершите оставшиеся.
- Проверьте в консоли кластера, что в ветке «Сеансы» пусто, а фоновые и регламентные задания не выполняются.
- Остановите службу «Агент сервера 1С:Предприятия 8.3» через
services.msc(в Linux —systemctl stopс именем вашей службыsrv1cv8…). - Только после этого останавливайте СУБД или перезагружайте машину.
Остановка службы агента обрывает все сеансы на всех базах кластера. Делайте это вне рабочего времени или после блокировки.
Если сервер перезагружается автоматически после установки обновлений Windows, задайте окно перезагрузки на ночь. Иначе внезапный рестарт оборвёт ночной обмен или закрытие месяца.
Как отключить всех пользователей 1С перед обновлением
Массовое отключение нужно перед обновлением конфигурации, загрузкой .dt, тестированием базы. Есть три штатных способа, они подходят для разных случаев.
| Способ | Где | Когда подходит | Риски |
|---|---|---|---|
| Блокировка из самой базы | Администрирование → Обслуживание → Блокировка работы пользователей (БП 3.0) | Типовые конфигурации, файловая и серверная база | Нужны права администратора базы |
| Блокировка в консоли кластера | Свойства информационной базы в консоли администрирования серверов | Серверная база, конфигурация без такой обработки | Нужны права администратора кластера |
| Завершение сеансов вручную | Консоль кластера или rac | Один-два зависших сеанса | Пользователь теряет несохранённые данные |
Блокировка средствами конфигурации
В БП 3.0, ЗУП 3.1, УТ 11 и других конфигурациях на БСП есть обработка блокировки работы пользователей. Вы указываете:
- 🕐 время начала и окончания блокировки;
- 💬 сообщение, которое увидят пользователи;
- 🔑 код разрешения — с ним администратор сможет войти, пока база закрыта для остальных.
После установки блокировки программа предупреждает пользователей и через несколько минут сама завершает их сеансы. Администратор потом входит с параметром /UC<код> в строке запуска.
Блокировка в консоли кластера
В консоли администрирования серверов откройте свойства нужной информационной базы. Включите флажок блокировки начала сеансов, задайте сообщение и код разрешения. Новые сеансы не откроются, а действующие нужно завершить отдельно — в ветке «Сеансы» базы, через контекстное меню.
Завершённый вручную пользователь теряет несохранённые данные открытой формы. Сначала напишите людям в мессенджере или по телефону, потом отключайте.
Проверка целостности базы после некорректного закрытия
Если 1С закрыли аварийно и после этого появились странности — ошибки при открытии, «битые ссылки», падение на определённом документе, — базу нужно проверить. Перед любой проверкой сделайте копию: выгрузку .dt или копию файла 1Cv8.1CD при закрытой базе.
Файловая база
- Убедитесь, что в базе никого нет.
- Откройте Конфигуратор →
Администрирование → Тестирование и исправление. - Сначала запустите только тестирование, без исправления, и посмотрите результат.
- Если ошибки есть — запустите повторно с режимом исправления.
Если база не открывается даже в Конфигураторе, используйте утилиту chdbfl.exe из папки bin установленной платформы. Она проверяет физическую целостность файла 1Cv8.1CD.
Серверная база
В клиент-серверном варианте физическую целостность проверяет СУБД. Для MS SQL Server это DBCC CHECKDB:
DBCC CHECKDB ('ИмяБазы') WITH NO_INFOMSGS;
Логическую целостность (ссылки, итоги регистров) проверяют тем же тестированием и исправлением в Конфигураторе. Для него нужен монопольный доступ к базе.
Автоматизация закрытия сеансов через скрипты
Ночное обновление или резервное копирование по расписанию требует отключать пользователей без участия человека. Для серверной базы это делают утилитой rac. Она работает через службу RAS (сервер администрирования, порт по умолчанию 1545), которую нужно запустить заранее.
Получить идентификатор кластера:
rac localhost:1545 cluster list
Получение списка сеансов
Вывод rac — это блоки «поле : значение», разделённые пустой строкой. Список сеансов с лицензиями:
rac localhost:1545 session list --cluster=<uuid-кластера> --licenses
Без --licenses команда выводит основные поля сеанса: идентификатор session, имя пользователя user-name, компьютер host, тип клиента app-id, время начала и последней активности. Если кластер защищён паролем, добавьте --cluster-user= и --cluster-pwd=.
Схема скрипта на словах:
- Получить
uuidкластера командойcluster list. - Получить список сеансов командой
session list. - Отобрать нужные сеансы по базе, пользователю или времени активности.
- Для каждого выполнить
session terminate.
Фильтрация и удаление старых сессий
Завершение одного сеанса:
rac localhost:1545 session terminate --cluster=<uuid-кластера> --session=<uuid-сеанса>
Пример для Linux: завершить все сеансы, кроме сеансов Конфигуратора (Designer), чтобы не оборвать администратора:
#!/bin/bash
CL=$(rac localhost:1545 cluster list | awk -F' : ' '/^cluster /{print $2; exit}')
rac localhost:1545 session list --cluster="$CL" \
| awk -F' : ' '
/^session /{s=$2}
/^app-id /{gsub(/ /,"",$2); if ($2!="Designer") print s}
' \
| while read -r SID; do
rac localhost:1545 session terminate --cluster="$CL" --session="$SID"
done
Перед боевым запуском замените terminate на echo и посмотрите, какие сеансы попадут под отключение. Чтобы отобрать только «давние» сеансы, сравнивайте поле времени последней активности с текущим временем. Точные имена полей в вашей версии платформы посмотрите в выводе session list или в справке rac help session.
Скрипт обрывает сеансы без предупреждения. Ставьте его в расписание только на время, когда в базе гарантированно никто не работает, или сначала включайте блокировку.
Для файловой базы rac не работает. Там автоматизируют через блокировку из конфигурации и пакетный запуск 1С с ключом /C и параметром завершения работы пользователей — этот вариант поддерживают конфигурации на БСП. Точную строку параметров смотрите в инструкции к обработке блокировки вашей конфигурации.
Частые ошибки и мифы о закрытии 1С
- ❌ «Закрывать надо только через меню, крестик портит базу». Крестик вызывает тот же штатный выход.
- ❌ «Если 1С зависла, сразу снимаю задачу». Сначала подождите: «зависание» часто означает длинный запрос или проведение. Подождите несколько минут и посмотрите загрузку процессора процессом 1С.
- ❌ «Выключил компьютер — сеанс закрылся». В серверной базе сеанс может ещё долго висеть спящим и держать лицензию.
- ❌ «Закрыл вкладку веб-клиента — вышел». Сеанс тоже живёт до таймаута. Выходите через меню программы.
- ❌ «Удалю 1Cv8.1CL, и база откроется». Если процесс 1С ещё жив, это прямой путь к повреждению файла.
- ❌ «Перезагружу сервер — быстрее, чем искать сеанс». Перезагрузка рвёт сеансы во всех базах кластера, включая фоновые задания и обмены.