Снимок базы 1С: выгрузка .dt, средства СУБД и запуск из кода

· 9 мин

Содержание

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

Для крупных клиент-серверных баз выгрузка .dt слишком медленная, поэтому снимок делают средствами СУБД — через BACKUP DATABASE на MS SQL или pg_dump на PostgreSQL. Ниже — все три способа (интерфейс, командная строка, код), плюс хранение архива и загрузка данных обратно.

Что такое снимок данных и когда он нужен

Под «снимком» в 1С понимают три разные вещи, и выбор способа зависит от того, что именно вам нужно:

  • 📦 Выгрузка в .dt — переносимый файл с конфигурацией и данными. Подходит для файловых баз и переноса базы между серверами.
  • 🗄️ Резервная копия СУБД (.bak, дамп PostgreSQL) — быстрый снимок клиент-серверной базы на уровне базы данных.
  • 📸 Снимок базы данных СУБД (database snapshot) — моментальное состояние «только для чтения» без остановки работы пользователей.

Снимок делают перед обновлением конфигурации, перед массовым изменением данных (обработки, групповые перепроведения), перед тестированием и исправлением базы, а также по расписанию для ежедневного бэкапа.

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

Какой снимок данных выбрать?

Выгрузка информационной базы через Конфигуратор

Это базовый способ для файловой базы и самый наглядный для серверной.

  1. Запустите базу в режиме Конфигуратор.
  2. Откройте меню Администрирование → Выгрузить информационную базу....
  3. Укажите папку и имя файла, например snapshot_2026-10-07.dt, и нажмите сохранить.
  4. Дождитесь сообщения об успешном завершении.

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

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

Чтобы гарантировать, что в базе никого нет, перед выгрузкой установите монопольный доступ: Администрирование → Блокировка соединений с информационной базой или просто попросите всех выйти и проверьте список активных сеансов.

Обратная операция — Администрирование → Загрузить информационную базу... — разбирается ниже, в разделе про восстановление.

Снимок из командной строки и по расписанию

Для автоматического ежедневного снимка интерфейс не годится — выгрузку запускают из командной строки через 1cv8 в пакетном режиме.

Для файловой базы:

"C:\Program Files\1cv8\8.3.24.1819\bin\1cv8.exe" DESIGNER ^
  /F"D:\Bases\Buh" /N"Администратор" /P"пароль" ^
  /DumpIB "E:\Snapshots\snapshot_2026-10-07.dt" ^
  /Out "E:\Snapshots\dump.log"

Для серверной базы вместо /F указывают сервер и имя базы:

"C:\Program Files\1cv8\8.3.24.1819\bin\1cv8.exe" DESIGNER ^
  /S"srv-1c\Buh" /N"Администратор" /P"пароль" ^
  /DumpIB "E:\Snapshots\snapshot_2026-10-07.dt" ^
  /Out "E:\Snapshots\dump.log"

Разберём ключи:

  • /F — путь к каталогу файловой базы; /S — сервер и имя серверной базы в формате сервер\база.
  • /N и /P — пользователь и пароль 1С с правами администратора.
  • /DumpIB — выгрузить информационную базу в указанный файл .dt.
  • /Out — файл для лога: туда попадут сообщения и текст ошибки, если выгрузка не прошла.

Путь к 1cv8.exe — это каталог bin конкретной версии платформы; подставьте свой номер релиза. Ключи подавления стартовых диалогов, если они нужны для фонового запуска без окон, смотрите в справке по пакетному режиму.

Этот .bat ставят в Планировщик заданий Windows на нужное время (например, ночью). Внутри файла удобно формировать имя снимка с датой, чтобы файлы не затирали друг друга:

set DT=%date:~6,4%-%date:~3,2%-%date:~0,2%
set FILE=E:\Snapshots\snapshot_%DT%.dt

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

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

Это способ, который часто ищут под словом «снимок», но пропускают в простых инструкциях. Для рабочей базы на SQL он и есть основной бэкап.

MS SQL Server. Полная резервная копия базы делается командой T-SQL:

BACKUP DATABASE [Buh]
TO DISK = N'E:\Snapshots\Buh_2026-10-07.bak'
WITH INIT, COMPRESSION;

Запускают её из SQL Server Management Studio или по расписанию через SQL Server Agent. Копия снимается на работающей базе, пользователей выгонять не нужно.

Отдельно MS SQL умеет делать снимок базы данных (database snapshot) — моментальное состояние «только для чтения», к которому можно откатиться:

CREATE DATABASE Buh_snap ON
( NAME = Buh_Data, FILENAME = 'E:\Snapshots\Buh_snap.ss' )
AS SNAPSHOT OF Buh;

Такой снимок создаётся мгновенно и удобен перед рискованной операцией: если что-то пошло не так, базу восстанавливают из снимка.

PostgreSQL. Логический дамп делают утилитой pg_dump:

pg_dump -U postgres -F c -f /snapshots/buh_2026-10-07.dump buh_db

Полный бэкап базы может занимать много места и времени. Чтобы снимать снимки чаще, а восстанавливаться на любой момент дня, на MS SQL добавляют к полной копии разностные копии (BACKUP DATABASE ... WITH DIFFERENTIAL) и копии журнала транзакций (BACKUP LOG). Полная копия раз в сутки, разностная — несколько раз в день, журнал — каждые 15–30 минут; тогда база восстанавливается почти до момента сбоя. Это работает только в полной модели восстановления базы (FULL).

Снимок средствами СУБД не содержит конфигурацию в виде, переносимом между разными платформами «из коробки»: он привязан к версии и настройкам СУБД. Для переноса базы на другой сервер и другую СУБД нужен именно .dt.

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

Запуск выгрузки из встроенного языка 1С

Прямой команды «выгрузить всю базу в .dt» во встроенном языке нет. Снимок из кода делают, запуская тот же пакетный Конфигуратор через метод ЗапуститьПриложение.

ПутьПлатформы = "C:\Program Files\1cv8\8.3.24.1819\bin\1cv8.exe";
ФайлСнимка    = "E:\Snapshots\snapshot_" + Формат(ТекущаяДата(), "ДФ=yyyy-MM-dd") + ".dt";

Команда = """" + ПутьПлатформы + """"
    + " DESIGNER /F""D:\Bases\Buh"" /N""Администратор"" /P""пароль"""
    + " /DumpIB """ + ФайлСнимка + """"
    + " /Out ""E:\Snapshots\dump.log""";

КодВозврата = 0;
ЗапуститьПриложение(Команда, , Истина, КодВозврата);

Если КодВозврата <> 0 Тогда
    Сообщить("Снимок не создан, код возврата: " + КодВозврата);
КонецЕсли;

Третий параметр Истина заставляет код дождаться завершения выгрузки, а в КодВозврата вернётся результат: 0 — успех, иначе разбирайтесь по логу /Out.

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

Хранить пароль администратора прямо в коде небезопасно. Храните учётные данные для снимка отдельно (константа с ограниченным доступом, параметр задания) и не выгружайте их в общий архив кода.

Если вам нужна не вся база, а выгрузка отдельных справочников или документов, это уже не «снимок», а сериализация объектов через ЗаписатьXML и СериализаторXDTO — другой инструмент под другую задачу.

Где хранить снимки и как управлять архивом

Снимок, лежащий на том же диске, что и база, не спасёт при отказе диска. Поэтому:

  • 📁 Храните копии вне сервера — на отдельном диске, в сетевой папке или NAS.
  • 🗓️ Называйте файлы с датой — snapshot_2026-10-07.dt. Так проще найти нужный и настроить ротацию.
  • 🔁 Настройте ротацию по схеме «дед-отец-сын»: ежедневные снимки за последнюю неделю, еженедельные за месяц, ежемесячные за год. Старые удаляйте скриптом.
  • 📦 Следите за размером. Рост файла снимка намекает на разрастание базы или журналов — повод проверить, не пора ли свёртка или обслуживание СУБД.

Простая очистка старых снимков в .bat (хранить файлы не старше 14 дней):

forfiles /p "E:\Snapshots" /m *.dt /d -14 /c "cmd /c del @path"

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

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

Проверка снимка перед тем, как положиться на него
Выполнено: 0 / 5

Загрузка данных из снимка и типичные ошибки

Восстановление из .dt — это Конфигуратор → Администрирование → Загрузить информационную базу..., затем выбор файла снимка.

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

Из командной строки загрузка идёт ключом /RestoreIB:

"C:\Program Files\1cv8\8.3.24.1819\bin\1cv8.exe" DESIGNER ^
  /F"D:\Bases\Buh" /N"Администратор" /P"пароль" ^
  /RestoreIB "E:\Snapshots\snapshot_2026-10-07.dt"

Что мешает загрузке чаще всего:

СимптомПричина и что делать
Операция не выполняется, с базой работают пользователиНужен монопольный доступ. Выгоните всех, завершите сеансы, повторите загрузку.
Файл не распознаётся как информационная база.dt сделан платформой более новой версии. Старая платформа не грузит снимок новой — обновите платформу до версии не ниже той, что делала снимок.
Загрузка обрывается на серединеФайл .dt повреждён (выгрузка прерывалась). Возьмите другой снимок из архива.
После загрузки база требует пересчёта итоговНормально при переносе: откройте Операции → Управление итогами (в конфигурациях на БП 3.0 — раздел администрирования учёта) и пересчитайте.

Для резервной копии СУБД восстановление идёт средствами самой СУБД: RESTORE DATABASE на MS SQL или pg_restore на PostgreSQL. После восстановления серверной базы на другом сервере базу заново регистрируют в кластере 1С.

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

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

Чем снимок `.dt` отличается от резервной копии СУБД?
.dt переносим между серверами и разными СУБД, но выгружается медленно. Копия СУБД снимается быстро и на работающей базе, но привязана к версии и типу СУБД. Для бэкапа рабочей базы — копия СУБД, для переноса — .dt.
Можно ли сделать снимок без выгона пользователей?
Копию средствами СУБД — да, она снимается на работающей базе. Выгрузку .dt лучше делать в монопольном режиме, иначе в снимок может попасть несогласованное состояние.
Почему `.dt` от новой платформы не грузится в старую?
Формат .dt зависит от версии платформы. Снимок, сделанный более новой версией, старая платформа не откроет. Загружать можно платформой той же версии или новее — обновите платформу на принимающей стороне.
Сколько снимков хранить?
По схеме «дед-отец-сын»: ежедневные за последнюю неделю, еженедельные за месяц, ежемесячные за год. Конкретную глубину подбирайте под объём диска и требования к восстановлению.
Можно ли загрузить `.dt` в существующую рабочую базу, не потеряв данные?
Нет. Загрузка .dt затирает базу целиком. Чтобы перенести только часть данных, используйте выгрузку-загрузку через планы обмена, обработки переноса или сериализацию объектов в XML.