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

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

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

Важное различие между файловой копией, дампом СУБД и выгрузкой в формат DT

Прежде чем приступать к написанию скриптов, проанализируем специфику формата .dt. Официально выгрузка базы в файл с расширением .dt предназначена для переноса данных между различными СУБД (например, при переходе с файлового режима на MS SQL/PostgreSQL) или для создания компактного архива конфигурации с данными. При формировании .dt выполняется сжатие таблиц без сохранения физических индексов. Если в базе имеются скрытые логические нарушения, процесс выгрузки может завершиться успешно, но восстановить данные из такого файла в чистую базу может не удастся.

Для регулярного резервного копирования рекомендуется придерживаться следующих правил:

  1. Для файловых баз: эталоном надежности является прямое копирование файла 1Cv8.1CD при условии полного отсутствия активных пользователей в базе.
  2. Для клиент-серверных баз: создание резервных копий должно выполняться штатными средствами СУБД (MS SQL Server, PostgreSQL) без необходимости выгрузки в .dt и без принудительного разрыва пользовательских сессий.

Автоматическая выгрузка базы через пакетный режим конфигуратора (BAT-скрипт)

Рассмотрим, как автоматизировать создание выгрузки в .dt с помощью командного файла Windows (батника). Конфигуратор 1С поддерживает запуск из командной строки в пакетном режиме с параметром /DumpIB.

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


@echo off
rem Путь к исполняемому файлу платформы 1С
set EXE1C="C:\Program Files\1cv8\common\1cestart.exe"

rem Параметры подключения к информационной базе
set BASE_PATH="D:\1C_Bases\Accounting"
set USER="Admin"
set PASS="Password123"

rem Формирование имени файла с датой (формат ГГГГ-ММ-ДД)
set BACKUP_DIR=E:\1C_Backups\Accounting
set DUMP_FILE=%BACKUP_DIR%\Base_%date:~-4%_%date:~3,2%_%date:~0,2%.dt
set LOG_FILE=%BACKUP_DIR%\backup_log.txt

rem Запуск конфигуратора в пакетном режиме выгрузки
%EXE1C% DESIGNER /F%BASE_PATH% /N%USER% /P%PASS% /DumpIB "%DUMP_FILE%" /Out "%LOG_FILE%" -NoTruncate

rem Проверка кода завершения
if %ERRORLEVEL% EQU 0 (
    echo Выгрузка успешно создана >> "%LOG_FILE%"
) else (
    echo Ошибка при выгрузке базы! Код ошибки: %ERRORLEVEL% >> "%LOG_FILE%"
)

Разберем параметры командной строки, использованные в скрипте:

  1. DESIGNER — запуск платформы в режиме «Конфигуратор».
  2. /F — указание пути к каталогу файловой информационной базы (для клиент-серверного варианта используется связка параметров /S"ИмяСервера\ИмяБазы").
  3. /N и /P — имя пользователя и пароль с административными правами.
  4. /DumpIB — команда выгрузки информационной базы в указанный целевой файл.
  5. /Out и -NoTruncate — перенаправление системных сообщений конфигуратора в текстовый лог-файл без перезаписи предыдущих записей, что позволяет контролировать процесс в автоматическом режиме.
  6. /UC — код разрешения доступа, если на базу предварительно установлена блокировка соединений.

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

Чтобы свободное место на диске не переполнялось, необходимо настроить удаление устаревших копий. Рассмотрим решение средствами командной строки Windows, которое оставляет заданное количество самых свежих архивов (например, последние 7 файлов):


@echo off
set BACKUP_DIR=E:\1C_Backups\Accounting
cd /d "%BACKUP_DIR%"

rem Формируем список всех файлов *.dt, отсортированных по дате изменения (сверху самые новые)
dir *.dt /a:-d /b /o:-d > list_of_files.txt

rem Пропускаем первые 7 файлов и удаляем все последующие (устаревшие)
for /F "skip=7 delims=" %%i in (list_of_files.txt) do (
    echo Удаление устаревшего архива: %%i
    del /Q "%%i"
)

rem Удаляем временный файл со списком
del /Q list_of_files.txt

Корректное завершение сеансов пользователей

Для успешной выгрузки через конфигуратор или прямого копирования файла 1Cv8.1CD требуется монопольный доступ. Завершение активных процессов командой taskkill /im 1cv8* /f допустимо применять только на изолированном терминальном сервере, однако это может привести к потере несохраненных данных пользователей.

Для клиент-серверного варианта безопаснее использовать программное отключение соединений через COM-соединение или утилиту RAC. Посмотрим на пример VBS-скрипта, отключающего активные сеансы перед резервным копированием через COM-коннектор:


Dim ServerName, BaseName, AdminUser, AdminPass
ServerName = "1cserver"
BaseName = "AccountingBase"
AdminUser = "admin"
AdminPass = "password"

Set ComConnector = CreateObject("V83.COMConnector")
Set Agent = ComConnector.ConnectAgent("tcp://" & ServerName)
Clusters = Agent.GetClusters()

For Each Cluster In Clusters
    Agent.Authenticate Cluster, "", ""
    WorkingProcesses = Agent.GetWorkingProcesses(Cluster)
    
    For Each Process In WorkingProcesses
        Set WorkProcess = ComConnector.ConnectWorkingProcess("tcp://" & ServerName & ":" & Process.MainPort)
        WorkProcess.AddAuthentication AdminUser, AdminPass
        Bases = WorkProcess.GetInfoBases()
        
        For Each Base In Bases
            If LCase(Base.Name) = LCase(BaseName) Then
                Connections = WorkProcess.GetInfoBaseConnections(Base)
                For Each Connection In Connections
                    ' Отключаем только пользовательские клиенты 1CV8
                    If Connection.AppID = "1CV8" And Connection.IBConnMode = 0 Then
                        WorkProcess.Disconnect Connection
                    End If
                Next
            End If
        Next
    Next
Next

Встроенные механизмы конфигураций (БСП)

Если используется типовая конфигурация на базе Библиотеки стандартных подсистем (БСП), настраивать внешние скрипты не обязательно. В типовом функционале присутствует раздел «Администрирование» -> «Обслуживание» -> «Резервное копирование и восстановление».

Возможности встроенного механизма БСП для файловых баз:

  1. Настройка расписания создания резервной копии (например, ежедневно в ночное время).
  2. Автоматическое выполнение резервного копирования при завершении работы программы пользователем.
  3. Штатная установка блокировки соединений и завершение активных сеансов.
  4. Автоматическая очистка старых резервных копий по количеству или периоду хранения.

Повышение стабильности работы с файловыми базами по сети

Если несколько пользователей работают с файловой базой через сетевой каталог (SMB), существует риск повреждения файла 1Cv8.1CD при кратковременных сбоях локальной сети или зависании компьютеров клиентов. Для предотвращения таких проблем рекомендуется опубликовать файловую информационную базу на локальном веб-сервере (IIS или Apache). В этом случае доступ к файлу базы будет осуществлять только процесс веб-сервера, что полностью исключает повреждение структуры данных сетевыми сбоями на стороне рабочих станций.

← На главную