Как выгрузить информационную базу 1С в формат .dt без использования монопольного режима

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

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

Природа формата .dt и причины монопольного режима

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

Выгрузка в .dt — это процесс логической сериализации. Платформа последовательно обходит все таблицы метаданных и записывает их содержимое в файл. Рассмотрим пример: если в процессе выгрузки, которая может длиться часы, пользователь создаст новый документ и проведет его, изменения могут попасть в одну таблицу (например, в заголовок документа), но не успеть попасть в другую (например, в таблицу движений или итогов), если платформа ее уже «пробежала». Это неизбежно приведет к логической несогласованности базы (битым ссылкам или расхождениям в остатках). Именно поэтому 1С требует монопольный режим — чтобы «заморозить» состояние данных на время чтения всей структуры.

Решение через утилиту ibcmd (Автономный сервер)

Несмотря на официальные ограничения, в современных версиях платформы (начиная с 8.3.14 и выше) существует техническая возможность выполнить выгрузку без проверки активных сеансов через сервер приложений 1С. Для этого мы будем использовать утилиту ibcmd.exe, которая входит в состав поставки платформы.

Эта утилита позволяет работать с базой напрямую, обращаясь к СУБД или файлу 1Cv8.1CD. Проанализируем, как составить командную строку для такой выгрузки. Важно учитывать, что в последних релизах (например, 8.3.22 и выше) фирма 1С ввела обязательную аутентификацию для выполнения подобных команд.

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


rem Указываем путь к бинарным файлам платформы
set v8path="C:\Program Files\1cv8\8.3.22.1750\bin"

rem Параметры подключения к СУБД и самой базе 1С
set dbms=MSSQLServer
set server=SQL_SERVER_NAME
set dbname=work_base
set dbuser=sa
set dbpwd=sql_password

rem Параметры пользователя 1С с правами администратора
set admin_user=Admin
set admin_pwd=admin_password

rem Путь для сохранения выгрузки
set backup_path="E:\Backups\base_%date%.dt"

%v8path%\ibcmd.exe infobase dump --dbms=%dbms% --db-server=%server% --db-name=%dbname% --db-user=%dbuser% --db-pwd=%dbpwd% --user=%admin_user% --password=%admin_pwd% %backup_path%

Разберем параметры подробнее:

  1. infobase dump — команда на создание выгрузки .dt.
  2. --dbms, --db-server, --db-name — параметры прямого доступа к SQL-серверу. Утилита подключается к данным «в обход» сервера 1С, поэтому ей не мешают активные сеансы пользователей.
  3. --user и --password — это логин и пароль пользователя в самой информационной базе 1С. Без них в новых версиях ibcmd откажется выполнять операцию.

Риски использования ibcmd при активных пользователях

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

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

Альтернативный «динамический» метод через БСП

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

Этот механизм работает следующим образом:

  1. Программа запускает фоновое задание.
  2. Фоновое задание порциями считывает данные всех объектов метаданных.
  3. Данные упаковываются в .zip архив в формате XML или JSON.

Этот способ официально не требует монопольного режима. Система сама управляет блокировками на уровне объектов и позволяет пользователям работать. Однако стоит учитывать, что такая выгрузка создает существенную нагрузку на сервер и дисковую подсистему.

Посмотрим, как найти этот функционал в типовых решениях (УТ 11, БП 3.0, ERP):

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

Почему нельзя сделать выгрузку .dt как динамическое обновление?

Часто возникает вопрос: почему динамическое обновление конфигурации реализовано, а выгрузка данных — нет? Разберем причину. Динамическое обновление затрагивает только метаданные (структуру описания таблиц), которые весят немного. Платформа просто подменяет версию конфигурации в специальной таблице. Выгрузка же .dt затрагивает физические данные (содержимое таблиц), объем которых может исчисляться сотнями гигабайт. Обеспечить версионность для такого объема данных на уровне платформы без использования механизмов СУБД крайне ресурсозатратно и сложно, поэтому разработчики 1С оставили этот функционал монопольным для обеспечения стопроцентной гарантии целостности.

Итоги и выводы

Мы рассмотрели несколько подходов к решению задачи. Подведем итоги:

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

← На главную