Почему не срабатывает автоматическая выгрузка информационной базы 1С в файл DT и как правильно настроить резервное копирование?

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

В процессе администрирования клиент-серверных баз 1С предприятия нередко возникает ситуация, когда настроенный в планировщике задач Windows скрипт автоматической выгрузки информационной базы внезапно перестает создавать файл выгрузки .dt. При этом в журнале регистрации фиксируется успешный вход служебной учетной записи в конфигуратор и мгновенный выход без создания записей об ошибках, а выходной лог-файл 1С остается пустым.

Разберем детально, почему возникает подобное поведение, какие скрытые ошибки содержатся в скриптах пакетного запуска и как выстроить надежный процесс резервного копирования.

Анализ причин сбоя при автоматической выгрузке через CMD

Рассмотрим сценарий работы пакетного файла и выделим критические уязвимости, приводящие к сбоям:

  1. Недостаточная пауза после перезапуска служб. После выполнения команд net start службы СУБД (MS SQL Server) и сервера 1С переходят в состояние работы, однако внутренние процессы инициализации кластера и базы данных требуют дополнительного времени. Если Конфигуратор инициирует подключение в момент, когда кластер еще не готов к обработке соединений метаданных, сеанс аварийно прерывается сразу после аутентификации.
  2. Использование промежуточного загрузчика 1cestart.exe вместо прямого исполняемого файла. Исполняемый файл 1cestart.exe является лаунчером, который анализирует установленные версии и запускает отдельный дочерний процесс 1cv8.exe. В пакетных скриптах это может вызывать потерю дескрипторов ввода-вывода, из-за чего параметры командной строки передаются некорректно, а выходной файл лога не заполняется.
  3. Зависимость парсинга даты %DATE% от региональных стандартов. Конструкции вида %DATE:~0,2% жестко привязаны к локали пользователя, запустившего скрипт. Если планировщик Windows запускает задание от системной учетной записи или окружения с иным форматом даты, в путях к логам и файлам архива возникают пробелы или недопустимые символы (например, слэши), что блокирует запуск команды /DumpIB.
  4. Блокировка модальных окон ключом /DisableStartupMessages. При возникновении проблем с получением лицензии или доступностью серверных лицензий данный ключ подавляет диалоговые окна и немедленно закрывает приложение без вывода текста ошибки в лог.
  5. Ограничение адресного пространства 32-битного клиента. Вызов 32-битного клиента (из каталога Program Files (x86)) при формировании .dt для объемных баз часто приводит к исчерпанию оперативной памяти и аварийному завершению процесса.

Исправление и оптимизация скрипта выгрузки

Разберем по шагам, как устранить ошибки в командном файле, если требуется выгрузка информационной базы в файл:

  1. Указываем прямой путь к исполняемому файлу конкретной версии платформы 1cv8.exe.
  2. Добавляем паузу перед запуском конфигуратора для гарантированного завершения инициализации служб кластера.
  3. Формируем метку даты независимым от локали способом.
  4. Добавляем параметр -NoTruncate к ключу /Out, чтобы сохранять историю выполнения.

Посмотрим на пример скорректированного пакетного файла:


@echo off
setlocal

for /f "tokens=2 delims==" %%I in ('wmic os get localdatetime /value') do set dt=%%I
set yyyy=%dt:~0,4%
set mm=%dt:~4,2%
set dd=%dt:~6,2%

set LogFile1C=D:\Anton\CMD\LOG\1c_%yyyy%%mm%%dd%.log
set LogFile=D:\Anton\CMD\LOG\umc_backup.log
set ArchivePath=E:\BackUp\1C\umc
set V8Path="C:\Program Files\1cv8\8.3.10.2650\bin\1cv8.exe"

echo %date% %time% --- Ожидание готовности служб --- >> %LogFile% 2>&1
timeout /t 30 /nobreak >nul

echo %date% %time% --- Запуск выгрузки информационной базы --- >> %LogFile% 2>&1
%V8Path% CONFIG /S "127.0.0.1\umc" /N "backup" /P "123" /DumpIB "%ArchivePath%\umc_%yyyy%%mm%%dd%.dt" /Out "%LogFile1C%" -NoTruncate >> %LogFile% 2>&1

echo %date% %time% --- Завершение сценария --- >> %LogFile% 2>&1
endlocal

Корректное завершение пользовательских сеансов без перезапуска служб

Перезапуск служб СУБД и кластера 1С для сброса соединений является аварийным и нерекомендуемым методом. Для штатного управления подключениями и регламентными заданиями используется утилита администрирования rac совместно со службой ras.

Рассмотрим порядок блокировки базы данных через rac перед проведением регламентных процедур:


rem Установка блокировки соединений и регламентных заданий
rac session --cluster=<ClusterID> block --infobase=<IBID> --sessions-denied=on --scheduled-jobs-denied=on --permission-code=BackupSecretCode

rem Получение списка и принудительное отключение активных сеансов
rac session --cluster=<ClusterID> terminate --infobase=<IBID>

rem Запуск конфигуратора с кодом разрешения блокировки
"C:\Program Files\1cv8\8.3.10.2650\bin\1cv8.exe" CONFIG /S "127.0.0.1\umc" /N "backup" /P "123" /UC "BackupSecretCode" /DumpIB "E:\BackUp\1C\umc\backup.dt"

rem Снятие блокировки соединений после завершения выгрузки
rac session --cluster=<ClusterID> block --infobase=<IBID> --sessions-denied=off --scheduled-jobs-denied=off

Почему файл DT не является резервной копией

Выгрузка в файл .dt представляет собой служебный механизм сериализации данных, созданный преимущественно для миграции информационных баз между различными типами СУБД (например, переход с файлового режима на SQL или между MS SQL и PostgreSQL). Использование выгрузки .dt в качестве регулярного бэкапа сопряжено с серьезными рисками:

  1. Отсутствие гарантии восстановления. Процесс загрузки файла .dt выполняет полную переиндексацию и реструктуризацию данных. Если в структуре базы или логической целостности таблиц есть скрытые ошибки, файл .dt успешно создастся, но восстановить из него рабочую базу будет невозможно.
  2. Потеря непрерывности данных. Выгрузка фиксирует состояние базы только в один момент времени. При возникновении аварии восстановить данные на произвольную секунду рабочего дня невозможно.
  3. Необходимость монопольного доступа. Формирование выгрузки требует полного отключения пользователей и остановки фоновых заданий, что делает невозможным создание копий в течение рабочего дня.

Рекомендация: Для клиент-серверного варианта работы 1С основным и обязательным средством резервного копирования является создание резервных копий средствами СУБД (MS SQL Server, PostgreSQL). Настройка планов обслуживания (Maintenance Plans) или резервного копирования журналов транзакций позволяет минимизировать простой системы и обеспечить восстановление данных на любую точку во времени (Point-in-Time Recovery).

← На главную