При использовании программ автоматического резервного копирования (например, HandyBackup) часто возникает конфликт: программа не может создать архив базы (особенно при выгрузке в формате .dt), так как база занята фоновыми процессами. В старых конфигурациях на обычных формах, таких как Бухгалтерия предприятия 2.0 или Управление торговлей 10.3, интерфейс управления этими задачами не всегда очевиден. Рассмотрим подробно, как организовать «технологическое окно» и остановить выполнение заданий в ночное время.
Для создания корректной выгрузки информационной базы в файл .dt системе требуется монопольный доступ. Регламентное задание, запускаясь по расписанию, создает фоновый сеанс. Даже если само задание выполняется доли секунды, в момент его старта 1С блокирует базу для других монопольных операций. Если ваша программа для бэкапа инициирует процесс именно в этот момент, произойдет ошибка доступа. Более того, некоторые задания (например, полнотекстовый поиск или пересчет итогов) могут длиться долго, полностью блокируя возможность выгрузки.
В конфигурациях УТ 10.3 и БП 2.0 управление заданиями через стандартное меню часто ограничено. Оптимальным решением будет использование специализированной обработки. Разберем по шагам, как с ней работать:
КонсольЗаданий.epf. Обычно она находится на диске ИТС или в папке с установленными шаблонами конфигураций (путь вида C:\Users\...\AppData\Roaming\1C\1cv8\tmplts\1c\Accounting\...\ExtFiles).Если ваша база работает в режиме клиент-сервер, мы можем временно запретить запуск любых фоновых процессов на уровне всего кластера или конкретной информационной базы. Это гораздо надежнее, чем менять расписание каждого отдельного задания.
Рассмотрим порядок действий в консоли администрирования серверов 1С:Предприятия:
Однако делать это вручную каждую ночь неудобно. Выясним, как автоматизировать этот процесс. Можно использовать скрипт на языке VBScript или PowerShell, который будет подключаться к COM-объекту администратора сервера 1С. Проанализируем пример логики такого скрипта:
// Пример логики для скрипта управления блокировкой
Connector = Новый COMОбъект("v83.COMConnector");
ServerAgent = Connector.ConnectAgent("ИмяСервера");
Clusters = ServerAgent.GetClusters();
// Выбираем нужный кластер и базу
// Устанавливаем свойство ScheduledJobsDenied = Истина
Вы можете настроить запуск такого скрипта в планировщике задач Windows за 5 минут до начала работы HandyBackup.
Если ваша база файловая, то регламентные задания выполняются только в том случае, если запущен хотя бы один сеанс 1С. В старых версиях платформы для этого часто выделялся отдельный компьютер или специальный пользователь, под которым 1С висела постоянно.
Посмотрим, как гарантированно остановить задания в этом случае:
1cv8.exe с параметром /ScheduledJobsStart.1cv8.exe перед копированием. Это можно сделать простой командой в bat-файле:
taskkill /F /IM 1cv8.exe
taskkill /F /IM 1cv8c.exe
После выполнения этой команды база станет свободной для копирования, так как ни один сеанс не будет держать файлы 1Cv8.1CD.
Некоторые задания в 1С критически важны для производительности. Рассмотрим, расписание каких задач стоит проверять в первую очередь:
Важный момент: если вы используете выгрузку в .dt только ради уменьшения размера архива, рассмотрите вариант простого копирования файла базы данных (1Cv8.1CD) с последующим сжатием в ZIP или 7z. Это работает быстрее и надежнее при условии завершения всех сеансов. Но если регламентные задания все же необходимы, используйте Консоль заданий для точной настройки временных интервалов, исключая период с 02:00 до 03:00.