К статье
Практический материал

Администрирование · 14 мин

Как сохранить базу 1С без конфигуратора

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

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

Файловая база хранится в одном файле 1Cv8.1CD внутри каталога базы, поэтому её можно скопировать как обычный файл. Клиент-серверная база хранится в СУБД (MS SQL Server, PostgreSQL, Oracle), и её копию делают штатными средствами самой СУБД. Оба подхода не требуют запуска конфигуратора и дают полноценную резервную копию, если соблюдены условия завершения сеансов.

Главный риск любого копирования «в обход» конфигуратора — несогласованность данных, если в момент копирования пользователи или фоновые процессы пишут в базу. Поэтому каждый способ требует либо выгона пользователей, либо использования механизмов, гарантирующих целостность снимка.

Как определить тип базы и где она лежит

Прежде чем копировать, нужно понять, с какой базой вы работаете. Откройте список информационных баз в окне запуска 1С, выделите нужную базу и посмотрите строку внизу окна: если там указан путь вида D:\Bases\Trade — база файловая, если указан сервер и имя базы вида Server=SQL01;Ref=trade — клиент-серверная.

Для файловой базы вся информация находится в одном каталоге, ключевой файл — 1Cv8.1CD. Рядом могут лежать служебные файлы: 1Cv8.1CL (журнал регистрации), папки 1Cv8Log, 1Cv8tmp. Для полноценной копии достаточно файла 1Cv8.1CD, но надёжнее скопировать каталог целиком, исключив временные файлы.

Для клиент-серверной базы путь в списке баз указывает на сервер 1С и имя базы в СУБД, а не на файлы. Физические файлы данных лежат на сервере СУБД, и копировать их напрямую (файлы .mdf и .ldf у MS SQL) без остановки службы нельзя — получите повреждённую копию. Правильный путь — средства резервного копирования самой СУБД.

Копирование файловой базы через проводник

Самый простой способ сохранить файловую базу без конфигуратора — скопировать её каталог средствами операционной системы. Обязательное условие: все пользователи должны выйти из базы, а фоновые процессы (обмены, регламентные задания, COM-соединения) — завершиться. Если файл занят хотя бы одним процессом, копия может получиться битой без каких-либо сообщений об ошибке.

Проверить, свободен ли файл, можно попыткой переименовать 1Cv8.1CD: если Windows не даёт этого сделать, значит, база кем-то открыта. Также открытые сеансы видны по наличию файла 1Cv8.1CL с блокировкой и по сетевым подключениям, если база лежит в общей папке.

Копирование файловой базы вручную
  1. 1
    Попросите пользователей выйти из базы и завершите обмены и фоновые задания
  2. 2
    Проверьте, что файл 1Cv8.1CD не занят: попробуйте его переименовать и верните имя обратно
  3. 3
    Скопируйте весь каталог базы или минимум файл 1Cv8.1CD в папку резервных копий
  4. 4
    Добавьте в имя папки копии дату, например Trade_backup_15-03
  5. 5
    Откройте скопированную базу в режиме Предприятие и убедитесь, что данные на месте

Если база лежит на сетевом ресурсе и пользователи работают через общую папку, гарантировать завершение всех сеансов сложнее. В этом случае временно отключите общий доступ к папке или используйте теневое копирование, о котором речь ниже.

Автоматизация копирования файловой базы скриптом

Разовое копирование удобно делать руками, но для регулярного резервного копирования лучше настроить скрипт, запускаемый планировщиком задач Windows в нерабочее время. Простейший вариант — bat-файл с командой robocopy, которая корректно копирует большие файлы и умеет повторять попытки при сбоях.

batch
@echo off
set SRC=D:\Bases\Trade
set DST=E:\Backup\Trade_%date:~0,2%-%date:~3,2%-%date:~6,4%
robocopy "%SRC%" "%DST%" 1Cv8.1CD /R:3 /W:10 /LOG+:E:\Backup\copy_log.txt

Перед запуском такого скрипта по расписанию нужно решить вопрос с активными сеансами: либо организационно запретить работу в часы копирования, либо добавить в скрипт завершение процессов 1cv8.exe на сервере, либо использовать теневую копию. Учтите, что принудительное завершение процессов обрывает работу пользователей и может оставить незавершённые транзакции.

Храните несколько поколений копий — минимум недельную глубину. Единственная копия, перезаписываемая каждую ночь, не спасёт, если повреждение данных заметили через несколько дней: к этому моменту вы перезапишете исправную копию битой.

Копирование файловой базы через теневую копию тома (VSS)

Служба теневого копирования тома (Volume Shadow Copy) позволяет снять согласованный снимок файла, даже если он открыт. Это способ сохранить базу, не выгоняя пользователей, хотя с оговоркой: платформа 1С не регистрирует себя как VSS-aware приложение, поэтому снимок фиксирует состояние файла на момент времени, но не гарантирует завершения транзакций на уровне логики 1С.

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

powershell
# Создать теневую копию диска D:
$shadow = (Get-WmiObject -List Win32_ShadowCopy).Create("D:\", "ClientAccessible")
$shadowCopy = Get-WmiObject Win32_ShadowCopy | Where-Object { $_.ID -eq $shadow.ShadowID }
$shadowPath = $shadowCopy.DeviceObject + "\"
# Скопировать файл базы из теневой копии
cmd /c copy "$($shadowPath)Bases\Trade\1Cv8.1CD" "E:\Backup\1Cv8_shadow.1CD"

Многие программы резервного копирования (Veeam Agent, системные средства архивации Windows) используют VSS автоматически. Если файловая база попадает в такой архив, у вас уже есть копия — но её всё равно нужно периодически проверять восстановлением.

Резервное копирование клиент-серверной базы средствами СУБД

Для клиент-серверной базы конфигуратор вообще не является основным инструментом резервного копирования: выгрузка в .dt на больших базах медленная и ресурсоёмкая, а штатный способ — backup средствами СУБД. Такой backup согласован на уровне транзакций СУБД и может выполняться «горячим», без остановки работы пользователей.

MS SQL Server

В MS SQL копию создают командой BACKUP DATABASE через SQL Server Management Studio или скриптом с планировщиком. Полная модель восстановления требует также бэкапа журнала транзакций, иначе файл журнала будет бесконечно расти.

sql
BACKUP DATABASE [trade] 
TO DISK = N'E:\SQLBackup\trade_full.bak' 
WITH COMPRESSION, CHECKSUM;

PostgreSQL

Для баз на PostgreSQL используют утилиту pg_dump или pg_dumpall. Дамп получается согласованным и не требует остановки сервера:

bash
pg_dump -U postgres -Fc -f /backup/trade_$(date +%Y%m%d).dump trade

Важно: кластер серверов 1С хранит в базе служебные данные, и восстановление SQL-бекапа должно выполняться в базу с тем же именем или с последующей корректировкой привязки в консоли кластера. Также параметры базы в СУБД должны соответствовать требованиям платформы — например, для PostgreSQL используется специальная сборка с патчами для 1С.

Способы сохранения базы без конфигуратора

Копирование 1Cv8.1CD вручную

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

Скрипт robocopy по расписанию

Подходит для регулярного бэкапа файловой базы в нерабочие часы. Нужно решить вопрос с активными сеансами.

Теневая копия VSS

Позволяет копировать файл без выгона пользователей. Не гарантирует логическую согласованность транзакций 1С — только как дополнительный уровень.

Backup средствами СУБД

Штатный способ для клиент-серверных баз. Горячий, согласованный, быстрый на больших объёмах. Требует доступа к серверу СУБД.

Выгрузка данных без конфигуратора: альтернативные варианты

Если цель — не резервная копия, а перенос данных или доступ к ним без конфигуратора, есть дополнительные варианты. В типовых конфигурациях в режиме Предприятие есть обработка «Выгрузка и загрузка данных XML» (входит в состав Библиотеки стандартных подсистем): она выгружает данные в XML-файл без конфигуратора, но требует прав администратора и работает только внутри работающей базы.

Для файловой базы, которая не открывается даже в режиме Предприятие, остаётся утилита chdbfl.exe из каталога платформы — она проверяет физическую целостность файла 1Cv8.1CD и исправляет повреждения. Перед запуском утилиты обязательно сделайте копию файла: исправление необратимо меняет исходный файл.

Ещё один вариант — пакетный запуск конфигуратора из командной строки с параметрами /DumpIB. Формально конфигуратор при этом используется, но без интерактивного открытия: команда выполняется скриптом и подходит для автоматизации, когда интерактивный вход невозможен, а платформа работоспособна.

Проверка резервной копии и частые ошибки

Копия без проверки — это не резервная копия, а надежда на неё. Минимальная проверка для файловой базы: подключите скопированный каталог как новую информационную базу в списке баз, откройте в режиме Предприятие и убедитесь, что справочники и документы за последние дни на месте. Для SQL-бэкапа — восстановите его в тестовую базу под другим именем и откройте через 1С.

Контрольные точки

Как проверить результат

Открытие копии базы
Норма

База открывается в режиме Предприятие без ошибок

Тревожный признак

Ошибки формата потока, требование тестирования и исправления

Актуальность данных
Норма

Последние документы и проводки присутствуют

Тревожный признак

Данные отстают на дни — копия старая или несогласованная

Размер файла копии
Норма

Размер сопоставим с исходным 1Cv8.1CD

Тревожный признак

Копия заметно меньше — файл скопирован не полностью

Журнал скрипта копирования
Норма

robocopy сообщает об успешном копировании без ошибок

Тревожный признак

Ошибки доступа, пропуски файлов, retries до таймаута

Типичные ошибки
01
Копирование файла при активных сеансах — копия открывается, но содержит повреждённые таблицы, что всплывает через недели
02
Хранение копий на том же диске, что и база — при отказе диска теряются и база, и все копии
03
Перезапись единственной копии каждую ночь — повреждение, замеченное с опозданием, оказывается и в бэкапе
04
Копирование файлов .mdf/.ldf работающего SQL Server — файлы заняты службой, копия непригодна; нужен BACKUP DATABASE
05
Отсутствие проверки восстановления — в момент аварии выясняется, что копии битые или неполные

Когда без конфигуратора не обойтись и что делать при повреждении базы

Есть ситуации, когда файлового копирования недостаточно. Выгрузка в .dt через конфигуратор нужна, если требуется перенос между разными СУБД, сжатие раздувающегося файлового файла или пересоздание базы при логических повреждениях таблиц. Файловая копия в этих случаях просто переносит проблему вместе с данными.

Если база не открывается из-за повреждения, порядок действий такой: сначала копируете файл 1Cv8.1CD как есть (это страховка), затем прогоняете chdbfl.exe на второй копии, и только потом, если физическая проверка не помогла, — тестирование и исправление через конфигуратор. Каждый следующий шаг выполняется на новой копии, исходник остаётся нетронутым.

Маршрут решения

Как выбрать способ сохранения

Файловая база, все пользователи могут выйтиСкопируйте каталог базы или файл 1Cv8.1CD вручную или скриптом
Файловая база, пользователей выгнать нельзяИспользуйте теневую копию VSS как дополнительный уровень, основную копию делайте ночью
Клиент-серверная база на MS SQL или PostgreSQLНастройте регулярный BACKUP средствами СУБД, файлы СУБД напрямую не копируйте
База не открывается, есть подозрение на повреждениеСначала копия файла как есть, затем chdbfl.exe на копии, затем тестирование и исправление
Нужен перенос данных без конфигуратора внутри работающей базыИспользуйте обработку «Выгрузка и загрузка данных XML» в режиме Предприятие
Итог

Что важно запомнить

Файловую базу сохраняют копированием 1Cv8.1CD после завершения сеансов, клиент-серверную — бэкапом средствами СУБД. Конфигуратор для этого не нужен, но обязательны три вещи: отсутствие записи в базу при копировании, хранение нескольких поколений копий на другом носителе и регулярная проверка восстановления.

Частые вопросы

Можно ли скопировать базу 1С, пока пользователи работают?

Технически файл скопируется только через теневую копию тома (VSS), обычное копирование занятого файла либо не сработает, либо даст несогласованную копию. VSS-снимок фиксирует состояние на момент времени, но не гарантирует завершённость транзакций 1С. Правильная практика — копировать в часы без активности, а VSS использовать как дополнительную страховку.

Достаточно ли скопировать только файл 1Cv8.1CD?

Да, для восстановления базы достаточно одного этого файла: в нём хранятся и конфигурация, и данные, и пользователи. Журнал регистрации (1Cv8Log) и временные файлы можно не копировать, но если история событий важна для аудита, копируйте каталог целиком.

Как сохранить базу, если она не открывается ни в одном режиме?

Сначала скопируйте файл 1Cv8.1CD на уровне файловой системы — это работает независимо от состояния базы. Затем на второй копии запустите утилиту chdbfl.exe из каталога платформы для проверки физической целостности. Только после этого, если нужно, применяйте тестирование и исправление в конфигураторе — тоже на копии.

Чем отличается копия файла базы от выгрузки в .dt?

Копия файла — побайтовый дубликат базы, восстанавливается мгновенно, но переносит все внутренние повреждения и не подходит для переноса между СУБД. Выгрузка .dt — логическая выгрузка через конфигуратор: медленнее, но при загрузке база пересоздаётся заново, что лечит ряд внутренних проблем и позволяет сменить тип СУБД.

Как настроить автоматический бэкап файловой базы без сторонних программ?

Создайте bat-файл с командой robocopy, копирующей каталог базы в папку с датой в имени, и добавьте его в планировщик задач Windows на ночное время. Организационно запретите работу в базе в это время или добавьте завершение сеансов. Храните копии на другом физическом диске и оставляйте несколько последних поколений.

Нужно ли останавливать сервер 1С при бэкапе средствами SQL?

Нет, команды BACKUP DATABASE и pg_dump создают согласованную копию «горячим» способом, останавливать ни сервер 1С, ни СУБД не требуется. Пользователи могут продолжать работать — на момент начала бэкапа все данные будут транзакционно целостны.