Как сделать бэкап базы 1С: выгрузка .dt, файловая и SQL-база

В базе 1С — бухгалтерия, склад, зарплата, и потеря даже одного дня работы обычно стоит дороже любого сервера. При этом способов сделать бэкап несколько, и они не взаимозаменяемы. Выгрузка .dt переносится между любыми установками 1С, копия файла 1Cv8.1CD делается быстро, но только когда в базе никого нет, а бэкап средствами СУБД не требует выгонять пользователей. Ниже — как работает каждый способ, как поставить выгрузку на расписание и как убедиться, что копия действительно восстанавливается.

Файловая или клиент-серверная: что именно копировать

У 1С:Предприятия два режима работы, и от режима зависит, что считать бэкапом.

  • Файловая база. Каталог, в котором лежит файл 1Cv8.1CD — все данные и конфигурация, — и папка 1Cv8Log с журналом регистрации. Пользователи открывают базу по пути: локальному или сетевому. Так работают небольшие организации и бухгалтерии на 1–10 человек.
  • Клиент-серверная база. Работает сервер 1С (кластер), а данные лежат в СУБД: Microsoft SQL Server или PostgreSQL, реже IBM Db2 и Oracle. Пользователи подключаются к базе по имени сервера и базы, например srv1c\buh.

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

Выгрузка .dt через конфигуратор

Ручной способ, с которого всё начинается: откройте базу в режиме «Конфигуратор» и выберите «Администрирование → Выгрузить информационную базу». Укажите имя файла — и через несколько минут (для больших баз — дольше) получите .dt.

В файл попадают конфигурация, все данные и список пользователей. Журнал регистрации в выгрузку не входит, его при необходимости сохраняют отдельно — копией папки 1Cv8Log. Файл .dt сжат, поэтому обычно он заметно меньше самой базы.

Главное ограничение: выгрузку надёжнее всего делать без других пользователей в базе. В большинстве версий платформы конфигуратор требует монопольного режима и при активных сеансах выдаёт ошибку его установки; даже там, где это ограничение ослаблено, выгрузка под нагрузкой идёт дольше и может дать несогласованный срез. О том, как завершить сеансы, — ниже.

Выгрузка .dt из командной строки

Тот же результат даёт пакетный режим конфигуратора: 1cv8.exe с параметром DESIGNER. Это основа любого автоматического бэкапа.

Файловая база

"C:\Program Files\1cv8\8.3.XX.XXXX\bin\1cv8.exe" DESIGNER ^
  /F "D:\1C\Buh" ^
  /N "Администратор" /P "пароль" ^
  /DisableStartupDialogs /DisableStartupMessages ^
  /DumpIB "D:\Backup\buh-2026-10-07.dt" ^
  /Out "D:\Backup\buh-dump.log"

Вместо 8.3.XX.XXXX подставьте установленную версию платформы. /F — путь к каталогу базы. /N и /P — пользователь 1С с правами администратора, их можно не указывать, если в базе нет пользователей. /DisableStartupDialogs и /DisableStartupMessages не дают платформе остановиться на диалоге, который никто не увидит. /Out пишет протокол: при ошибке ищите причину именно там.

Клиент-серверная база

"C:\Program Files\1cv8\8.3.XX.XXXX\bin\1cv8.exe" DESIGNER ^
  /S "srv1c\buh" ^
  /N "Администратор" /P "пароль" ^
  /DisableStartupDialogs /DisableStartupMessages ^
  /DumpIB "D:\Backup\buh-2026-10-07.dt" ^
  /Out "D:\Backup\buh-dump.log"

/S — сервер и имя базы в кластере. Если кластер работает не на стандартном порту, порт указывается после имени сервера: srv1c:2541\buh.

Пароль в командной строке виден в списке процессов и остаётся в файле скрипта. Заведите для бэкапа отдельного пользователя 1С с правами администрирования и закройте доступ к скрипту через права NTFS. Другой вариант — привязать пользователя 1С к учётной записи Windows (аутентификация операционной системы) и запускать задачу от этой учётной записи, тогда /N и /P не нужны.

Монопольный режим: как завершить сеансы

Пока в базе работает хотя бы один пользователь или фоновое задание, ни выгрузка, ни загрузка .dt не выполнятся.

Файловая база. Сервера 1С нет, сеансы — это процессы 1cv8.exe / 1cv8c.exe на компьютерах пользователей или терминальном сервере. Попросите всех выйти или воспользуйтесь штатной блокировкой: в типовых конфигурациях на БСП это «Администрирование → Обслуживание → Блокировка работы пользователей». Блокировка завершает сеансы и не пускает новые. Если при её установке задан код разрешения, в пакетный запуск добавьте /UC <код>, иначе конфигуратор тоже не войдёт. Зависшие процессы на терминальном сервере придётся завершать вручную.

Клиент-серверная база. Администраторы используют консоль администрирования серверов 1С. В свойствах информационной базы включается «Блокировка начала сеансов» и «Блокировка регламентных заданий», задаётся код разрешения, а активные сеансы завершаются из списка сеансов. Для скриптов есть утилита rac, которая работает через сервер администрирования ras. Общий вид команд:

rac cluster list
rac infobase summary list --cluster=<id кластера>
rac session list --cluster=<id кластера> --infobase=<id базы>
rac session terminate --cluster=<id кластера> --session=<id сеанса>

Блокировку новых сеансов на время бэкапа ставит rac infobase update с параметрами --sessions-deny=on, --scheduled-jobs-deny=on и --permission-code. Если в кластере заданы администраторы, добавьте --cluster-user и --cluster-pwd, для изменения параметров базы — ещё --infobase-user и --infobase-pwd. Не забудьте снять блокировку после бэкапа: забытая --sessions-deny=on утром не пустит в базу всю бухгалтерию.

Копия файла 1Cv8.1CD

Для файловой базы самый быстрый бэкап — скопировать каталог базы целиком: 1Cv8.1CD и 1Cv8Log. Восстановление тоже простое: вернуть файлы на место.

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

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

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

Если база работает на MS SQL Server или PostgreSQL, основной бэкап обычно делают средствами СУБД:

  • MS SQL Server: BACKUP DATABASE с полными, разностными бэкапами и бэкапами журнала. Подробно — в статье бэкап MS SQL Server.
  • PostgreSQL: pg_dump -Fc для логической копии, pg_basebackup и архивирование WAL для восстановления на момент времени. 1С работает со специальными сборками PostgreSQL, и бэкап нужно делать утилитами той же сборки и версии. Общие приёмы — в статье про pg_dump по cron.

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

Зачем тогда .dt? Это единственный формат, который не зависит от СУБД. Бэкап MS SQL восстанавливается только в MS SQL, дамп PostgreSQL — только в PostgreSQL. Через .dt базу можно перенести из файлового режима в клиент-серверный, с MS SQL на PostgreSQL, на другой сервер или отдать в поддержку франчайзи. Минусы — монопольный режим и время: выгрузка и загрузка базы в десятки гигабайт занимают часы. Практичная схема для клиент-серверной базы: ежедневный бэкап средствами СУБД плюс периодическая выгрузка .dt, например еженедельная, в ночь без пользователей.

Расписание в планировщике Windows

Пакетный запуск удобно обернуть в PowerShell-скрипт. 1cv8.exe — графическое приложение, и PowerShell не ждёт его завершения при обычном вызове через &. Поэтому используйте Start-Process -Wait и проверяйте код возврата.

# C:\Scripts\backup-1c.ps1
$ErrorActionPreference = 'Stop'
$exe = Get-ChildItem 'C:\Program Files\1cv8\8.3.*\bin\1cv8.exe' |
  Sort-Object { [version]$_.Directory.Parent.Name } | Select-Object -Last 1
$dir   = 'D:\Backup\1c'
$stamp = (Get-Date).ToUniversalTime().ToString('yyyy-MM-ddTHHmmssZ')
$dt    = Join-Path $dir "buh-$stamp.dt"
$log   = Join-Path $dir "buh-$stamp.log"

$args1c = @('DESIGNER', '/F', '"D:\1C\Buh"', '/N', '"backup"', '/P', '"пароль"',
  '/DisableStartupDialogs', '/DisableStartupMessages',
  '/DumpIB', "`"$dt`"", '/Out', "`"$log`"")
$p = Start-Process -FilePath $exe.FullName -ArgumentList $args1c -Wait -PassThru

if ($p.ExitCode -ne 0 -or -not (Test-Path $dt) -or (Get-Item $dt).Length -eq 0) {
  Get-Content $log -Tail 20
  throw "Выгрузка не удалась, код $($p.ExitCode)"
}

Get-ChildItem $dir -Filter 'buh-*.dt' |
  Where-Object LastWriteTime -lt (Get-Date).AddDays(-14) | Remove-Item

Регистрация задачи на 02:00 каждую ночь:

$action  = New-ScheduledTaskAction -Execute 'powershell.exe' `
  -Argument '-NoProfile -ExecutionPolicy Bypass -File C:\Scripts\backup-1c.ps1'
$trigger = New-ScheduledTaskTrigger -Daily -At 2:00
Register-ScheduledTask -TaskName 'backup-1c-buh' -Action $action -Trigger $trigger `
  -User 'SRV01\backup1c' -Password '…' -RunLevel Highest

Учётной записи, от которой работает задача, нужны права на каталог базы и каталог бэкапов. Ставьте выгрузку на время, когда в базе гарантированно никого нет, и учитывайте регламентные задания: обмены и загрузки, запланированные на ночь, держат сеансы и мешают монопольному режиму. Копии на том же диске недостаточно — по правилу 3-2-1 хотя бы одна копия должна лежать вне сервера. Общие принципы расписаний и ротации — в статье о настройке автоматических бэкапов.

Восстановление: /RestoreIB и «Загрузить информационную базу»

Вручную: конфигуратор → «Администрирование → Загрузить информационную базу» → выбрать .dt. Загрузка полностью заменяет конфигурацию и данные базы и тоже требует монопольного режима. В пакетном режиме:

"C:\Program Files\1cv8\8.3.XX.XXXX\bin\1cv8.exe" DESIGNER /F "D:\1C\Buh_restore" ^
  /DisableStartupDialogs /RestoreIB "D:\Backup\buh-2026-10-07.dt" /Out "D:\Backup\restore.log"

Не загружайте выгрузку сразу поверх рабочей базы. Сначала сделайте выгрузку текущего состояния, даже если оно испорчено: в нём могут быть документы, введённые после последнего бэкапа. Потом восстановите копию рядом, проверьте её и только после этого заменяйте рабочую базу. Тот же порядок для других СУБД описан в статье как восстановить базу из бэкапа.

Проверка: развернуть копию в тестовую базу

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

"C:\Program Files\1cv8\8.3.XX.XXXX\bin\1cv8.exe" CREATEINFOBASE File="D:\1C\Test_Buh" /Out "D:\1C\create.log"
"C:\Program Files\1cv8\8.3.XX.XXXX\bin\1cv8.exe" DESIGNER /F "D:\1C\Test_Buh" ^
  /DisableStartupDialogs /RestoreIB "D:\Backup\buh-2026-10-07.dt" /Out "D:\1C\test-restore.log"

Затем откройте тестовую базу и сверьте то, что видно глазами: последние документы за день бэкапа, остатки по ключевым счетам, оборотно-сальдовую ведомость. Будьте осторожны с копией: она может начать выполнять регламентные задания — обмены, отправку почты, загрузку банковских выписок. Типовые конфигурации на БСП обычно замечают, что база открыта по другому пути, и предлагают заблокировать работу с внешними ресурсами. Соглашайтесь. Проверку стоит повторять регулярно, например раз в месяц; подход описан в статье как проверить, что бэкап рабочий.

Как это сделать в dbsend

dbsend хранит бэкапы как версии и сообщает, если очередной бэкап не пришёл. Для 1С в CLI версии 0.4.0 и новее есть команда dbsend 1c — пока в статусе бета. Она запускает конфигуратор в пакетном режиме, выгружает базу в .dt, проверяет код возврата и что файл не пустой, и загружает его в dbsend:

npm install --global @dbsend/sdk
dbsend login --key sqv_pk_…

# файловая база
dbsend 1c --file "D:\1C\Buh" -d <id>

# клиент-серверная база, пароль пользователя 1С — только через переменную окружения
$env:ONEC_PASSWORD = 'пароль'
dbsend 1c --server srv1c --ib buh --user backup -d <id>

CLI сам находит последнюю установленную платформу; если нужна другая, укажите путь через --bin. Монопольный режим остаётся вашей задачей: если в базе есть сеансы, выгрузка не пройдёт, а CLI покажет хвост протокола конфигуратора и подскажет завершить сеансы. Запускать команду по ночам удобно из планировщика Windows, как в примере выше.

Альтернативы, если у вас уже есть свои скрипты:

  • загрузить готовую выгрузку: dbsend backup "D:\Backup\buh.dt" --engine onec_dt -d <id>;
  • для файловой базы — копию 1Cv8.1CD, только когда в базе никого нет: dbsend backup "D:\1C\Buh\1Cv8.1CD" --engine onec_dt -d <id>;
  • для клиент-серверной базы на MS SQL — бэкап средствами СУБД через dbsend mssql --sql-database buh -d <id>.

Восстановление: dbsend restore <snapshotId> D:\Restore\buh.dt --yes скачивает версию и сверяет SHA-256, дальше — /RestoreIB или «Загрузить информационную базу».

Ограничения, о которых лучше знать заранее. Формат .dt закрытый, поэтому dbsend не показывает его содержимое и не строит diff между версиями. Он хранит файл, размер, контрольную сумму и историю. Есть лимит на размер одного файла: 100 МБ на бесплатном тарифе, 500 МБ на «Старте», 2 ГБ на «Про» и «Команде», 50 ГБ на «Бизнесе». Лимит считается по исходному размеру, поэтому .dt здесь выгоднее, чем 1Cv8.1CD. Для крупных баз есть тариф «Бизнес»: файлы до 50 ГБ и 1 ТБ хранилища. Большой файл CLI загружает частями, а на всю загрузку отводится 24 часа, так что для выгрузки на десятки гигабайт нужен стабильный канал. Если выгрузка больше 50 ГБ, напишите нам на hello@dbsend.ru. Уведомления о пропущенном бэкапе в Telegram, на почту или в webhook доступны на платных тарифах. Подробнее — на странице бэкапа базы 1С, в документации CLI и на странице тарифов.

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

Можно ли сделать бэкап 1С, не выгоняя пользователей?

Для клиент-серверной базы — да, средствами СУБД: BACKUP DATABASE в MS SQL или pg_dump в PostgreSQL работают на живой базе. Выгрузка .dt и копия 1Cv8.1CD требуют, чтобы в базе никого не было.

Что лучше для файловой базы: .dt или копия 1Cv8.1CD?

Копия 1Cv8.1CD быстрее и восстанавливается простым копированием файла. .dt компактнее и переносится в любой режим и на любую СУБД. Удобная схема — ежедневная выгрузка .dt ночью и копия каталога базы перед обновлением конфигурации.

Входит ли журнал регистрации в выгрузку .dt?

Нет. Если журнал нужен, например для разбора, кто и когда изменил документ, копируйте папку 1Cv8Log вместе с бэкапом.

Почему выгрузка падает с ошибкой монопольного режима ночью, когда все ушли?

Чаще всего базу держат регламентные задания — обмены, загрузка курсов валют, отправка почты — или забытый сеанс на терминальном сервере. Включите блокировку регламентных заданий на время бэкапа и проверьте список сеансов в консоли администрирования или через rac session list.

Как часто делать бэкап базы 1С?

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