Каждый системный администратор и специалист 1С рано или поздно сталкивается с ситуацией, когда годами отлаженный механизм резервного копирования внезапно дает сбой. Особое недоумение вызывает сценарий, когда штатный бэкап файловой базы зависает на этапе "подготовка к копированию" и бесконечно ожидает завершения сеансов, хотя визуально все пользователи уже вышли из программы. В этой статье мы подробно разберем, почему возникает эта проблема, как устроена блокировка базы на системном уровне и какие профессиональные методы помогут решить эту проблему раз и навсегда.
Для понимания физики процесса вспомним особенности работы платформы 1С:Предприятие 8.3 в файловом режиме. Чтобы создать резервную копию штатными средствами, системе требуется получить монопольный доступ к файлу базы данных 1Cv8.1CD. Это означает, что в этот момент в базе не должно быть ни одного активного подключения. Для автоматического отключения активных сессий перед обслуживанием базы можно использовать расширение для принудительного завершения работы пользователей.
Однако в файловом варианте выполнение регламентных и фоновых заданий происходит внутри самого клиентского приложения. Когда последний пользователь закрывает программу 1С, запускается специальный скрытый поток процесса 1cv8.exe для выполнения отложенных задач. Визуально программа исчезает с экрана, но сам процесс продолжает висеть в памяти Диспетчера задач Windows. Пока этот процесс активен, монопольный доступ получить невозможно, и процедура резервного копирования зависает в состоянии бесконечного ожидания.
В современных конфигурациях 1С, построенных на базе Библиотеки стандартных подсистем (БСП), реализована логика оптимизации: многие служебные регламентные задания принудительно инициируются именно при выходе пользователя из системы или в периоды отсутствия активности. К таким заданиям относятся:
Проанализируем пошагово, как решить эту проблему с помощью различных подходов.
Самый простой и безопасный способ вернуть штатный бэкап к жизни — отключить ненужную фоновую активность, которая блокирует систему перед закрытием. Для быстрого поиска и отключения таких задач подойдёт обработка для управления регламентными и фоновыми заданиями.
Разберем по шагам, как это сделать:
Обновление новостей, Сбор и отправка статистики).Также мы можем настроить индивидуальное расписание для важных регламентных задач. Например, перенесем запуск извлечения текста или загрузки классификаторов на дневное время, чтобы они гарантированно завершались до начала процедуры резервного копирования.
Чтобы регламентные задания не запускались на компьютерах обычных сотрудников (например, кассиров в магазине) и не мешали им оперативно закрывать смену, мы можем использовать специальный ключ запуска платформы.
Для этого выполним следующие действия:
/AllowExecuteScheduledJobs -Off.Этот ключ запретит данному конкретному рабочему месту инициировать любые фоновые процессы. Все регламентные задачи будут выполняться только на одном выделенном компьютере (например, на сервере или ПК администратора), где этот параметр не прописан.
Если штатный бэкап уже завис или был прерван принудительно через Диспетчер задач, пользователи часто сталкиваются с ошибкой "Ожидание выполнения резервного копирования" при попытке войти в базу. Это происходит потому, что в каталоге базы данных остается файл блокировки.
Для восстановления работоспособности системы проделаем следующее:
.cdn (обычно это 1Cv8.cdn).1cv8.exe в Диспетчере задач Windows.Если удалить файл блокировки по какой-то причине не удается, мы можем экстренно запустить 1С через командную строку Windows со специальным параметром обхода защиты:
"C:\Program Files\1cv8\8.3.10.XXXX\bin\1cv8.exe" ENTERPRISE /F "C:\Put_K_Baze" /CРазрешитьРаботуПользователей /UC РезервноеКопирование
Штатный механизм архивации 1С в файловом режиме имеет архитектурные недостатки и часто подводит в самый неподходящий момент. Опытные системные администраторы рекомендуют отказаться от него в пользу автоматизированных внешних сценариев, которые работают независимо от состояния фоновых процессов внутри самой 1С. При обслуживании нескольких баз для этой цели можно настроить автоматическое резервное копирование и обновление 1С по расписанию.
Рассмотрим пример создания простого и надежного командного файла (скрипта .bat), который будет принудительно завершать зависшие сеансы, архивировать базу и отправлять копию в хранилище. Создадим текстовый файл, скопируем в него приведенный ниже код и сохраним с расширением .bat:
@echo off
chcp 1251
echo --- Завершаем работу всех зависших процессов 1С ---
taskkill /f /im 1cv8.exe
taskkill /f /im 1cv8c.exe
echo --- Удаляем временные файлы блокировок, если они остались ---
del /q /f "C:\1C_Bases\Retail\1Cv8.cdn"
echo --- Создаем резервную копию базы данных с помощью 7-Zip ---
"C:\Program Files\7-Zip\7z.exe" a -tzip -ssw -mx5 "D:\Backups\Retail_backup_%date%.zip" "C:\1C_Bases\Retail\1Cv8.1CD"
echo --- Очистка старых архивов (старше 30 дней) ---
forfiles /p "D:\Backups" /s /m *.zip /d -30 /c "cmd /c del @path"
echo Резервное копирование успешно завершено!
Этот скрипт гарантирует стопроцентное создание копии, поскольку перед архивацией принудительно закрывает все заблокированные файлы базы данных. Мы можем легко поместить этот сценарий в стандартный Планировщик заданий Windows для выполнения в ночное время.
Таким образом, комбинируя настройку регламентных заданий в интерфейсе 1С, использование ключей запуска и внешних средств автоматизации, мы можем выстроить отказоустойчивую систему резервного копирования, которая больше не будет зависать из-за скрытых фоновых потоков платформы.