Копирование информационной базы 1С 8.3: от папки до SQL
Содержание
Самая частая ошибка — скопировать папку файловой базы, пока в ней работают люди. Копия получится битой: файл 1Cv8.1CD в этот момент открыт и меняется. Чтобы копия завелась, базу копируют одним из трёх способов в зависимости от того, файловая она или клиент-серверная.
Файловая база — это папка с единственным большим файлом 1Cv8.1CD. Клиент-серверная живёт в СУБД (чаще MS SQL Server или PostgreSQL), а в списке баз 1С хранится только её регистрация в кластере. Отсюда и разные приёмы: файловую проще скопировать как папку или выгрузить в .dt, серверную — забэкапить средствами СУБД.
Ниже — конкретные пути меню и команды для платформы 8.3 (интерфейс «Такси»). Начнём с того, как понять, что у вас за база.
Как определить тип базы перед копированием
Откройте окно запуска 1С (список информационных баз). Выделите нужную базу и посмотрите строку адреса под списком:
- 🗂 путь вида
File="D:\Bases\Buh";— это файловая база, копировать будем папку или.dt; - 🖥 строка вида
Srvr="SRV-1C";Ref="buh_prod";— это клиент-серверная база, её имя в SQL совпадает с параметромRef.
Для серверной базы сразу выпишите три вещи: имя сервера 1С (Srvr), имя сервера СУБД и имя базы данных на СУБД. Их видно в консоли администрирования серверов или в свойствах базы в окне запуска (кнопка Изменить).
Если вам нужна копия «на всякий случай», а не для переноса, подумайте про штатную автоматическую архивацию: для файловых баз — через механизм резервного копирования, для серверных — регулярный бэкап средствами СУБД по расписанию.
Выбор способа копирования
Способ зависит от типа базы, её размера и от того, куда переносите копию.
.dt через Конфигуратор и загрузите его в новую базу..dt потребует монопольного режима и займёт часы.Копирование файловой базы через папку и через .dt
Для файловой базы есть два рабочих приёма.
Способ 1. Копирование папки целиком. Подходит, когда переносите базу на другой диск или компьютер «как есть».
- Попросите всех пользователей закрыть базу. Пока база открыта хотя бы одним сеансом, копия будет повреждена.
- Откройте папку базы (путь из параметра
File). - Скопируйте всю папку, а не только
1Cv8.1CD: рядом лежат служебные файлы1Cv8.cfl, журнал регистрации и каталог кэша. - На новом месте добавьте базу в список: в окне запуска
Добавить → Добавление в список существующей информационной базыи укажите скопированную папку.
Каталог кэша (1Cv8FTxt, служебные подпапки) можно не переносить — платформа создаст его заново при первом запуске. А вот сам файл 1Cv8.1CD — это и есть вся база; без него копия бессмысленна. Если на диске включено сжатие или антивирус держит файл, скопируйте базу, предварительно закрыв её и приостановив проверку каталога.
Способ 2. Выгрузка в файл .dt через Конфигуратор. Один компактный файл, не зависит от СУБД — удобно пересылать и заливать в базу другого типа.
- Запустите базу в режиме
Конфигуратор. - Меню
Администрирование → Выгрузить информационную базу, укажите путь к файлу, напримерD:\copy_buh.dt. - Создайте приёмник: в окне запуска
Добавить → Создание новой информационной базы → Создание информационной базы без конфигурации. - Откройте новую базу в Конфигураторе и выполните
Администрирование → Загрузить информационную базу, выберите.dt.
Выгрузка и загрузка .dt идут в монопольном режиме — все пользователи должны выйти из базы. На больших базах (десятки гигабайт) выгрузка занимает заметное время, а восстановление из .dt ещё дольше. Для таких объёмов копия через папку быстрее.
Загрузка .dt полностью перезаписывает базу-приёмник, поэтому приёмник и должен быть пустым.
Копия клиент-серверной базы средствами SQL
Клиент-серверную базу копируют не из 1С, а на уровне СУБД. Схема одинаковая для MS SQL Server и PostgreSQL: снять бэкап исходной базы, восстановить его под новым именем, затем зарегистрировать новую базу в кластере 1С.
Шаг 1. Сделать резервную копию базы
данных. В MS SQL Server — через SQL Server Management Studio: правой кнопкой на базе → Tasks → Back Up, тип Full, получите файл .bak. В PostgreSQL — утилитой pg_dump в файл дампа. Бэкап снимается онлайн, останавливать 1С не нужно.
Шаг 2. Восстановить под новым именем БД. В SSMS: Restore Database, в поле имени задайте новое, например buh_test, и в разделе Files переназначьте пути к файлам данных, чтобы не затереть оригинал. В PostgreSQL — создайте пустую базу и залейте в неё дамп утилитой pg_restore (или psql для текстового дампа). Проследите, чтобы владельцем восстановленной базы и схем стал тот же пользователь СУБД, под которым 1С подключается к серверу, — иначе платформа не получит прав на таблицы.
Шаг 3. Зарегистрировать копию в кластере 1С. В консоли администрирования серверов 1С: на узле кластера Информационные базы → Создать. В окне укажите:
- имя новой базы в кластере (как она будет видна в списке);
- сервер СУБД и имя восстановленной базы (
buh_test); - снимите флаг «Создать базу данных в случае её отсутствия» — база уже существует, иначе платформа попытается создать пустую и перезатереть данные.
После этого новая база появится в списке информационных баз и откроется как обычная копия.
После первого открытия копии полезно разово запустить в Конфигураторе Администрирование → Тестирование и исправление информационной базы с проверкой логической и ссылочной целостности. Это отсекает ситуацию, когда проблема уже была в оригинале и переехала в копию вместе с данными.
Бэкап и восстановление в самой СУБД работают с «сырыми» данными и не зависят от версии платформы. Это и быстрее .dt, и безопаснее: оригинальная база всё время остаётся онлайн.
Автоматизация: пакетный режим и утилита rac
Если копии нужны регулярно (например, ночная копия боевой базы на тестовый сервер), процесс автоматизируют.
Пакетный режим Конфигуратора. Выгрузку и загрузку .dt можно запускать без интерфейса, строкой запуска 1cv8 DESIGNER:
"C:\Program Files\1cv8\8.3.xx.xxxx\bin\1cv8.exe" DESIGNER /S "SRV-1C\buh_prod" /N "Администратор" /P "пароль" /DumpIB "D:\copy_buh.dt"
Параметр /DumpIB выгружает базу в .dt, /RestoreIB — загружает её обратно. Такую команду удобно поставить в планировщик задач. Минус тот же: монопольный режим и медленно на больших базах.
На платформе 8.3.14 и новее ту же выгрузку умеет консольная утилита ibcmd (операции ibcmd infobase dump и ibcmd infobase restore). Она работает напрямую с базой, без запуска толстого клиента, и удобна в скриптах на сервере. Как и у Конфигуратора, восстановление из дампа перезаписывает базу-приёмник целиком.
Утилита администрирования rac. rac — консольный клиент для кластера серверов. Сам по себе он базу не бэкапит, но им удобно управлять базами и регистрировать восстановленную копию без графической консоли.
rac cluster list
rac infobase summary list --cluster=<uuid-кластера>
Первая команда покажет идентификатор кластера, вторая — список баз с их идентификаторами. Для регистрации новой базы, восстановленной в СУБД, служит rac infobase create с указанием сервера и имени базы данных. Набор флагов зависит от версии платформы — точные параметры всегда сверяйте командой rac help infobase, чтобы не передать --create-database по ошибке и не создать пустую базу
поверх данных.
Останавливать службу агента сервера (1C:Enterprise 8.3 Server Agent) для копирования не нужно и опасно — это оборвёт все сеансы пользователей. Бэкап СУБД снимается на работающем сервере.
Сравнение способов копирования
| Способ | Тип базы | Скорость | Нужен монопольный режим | Когда выбирать |
|---|---|---|---|---|
| Копирование папки | Файловая | Высокая | Да (все выходят) | Перенос файловой базы «как есть» |
Выгрузка в .dt | Любая | Низкая на больших | Да | Один файл, смена типа СУБД |
| Бэкап СУБД | Клиент-серверная | Высокая | Нет | Серверные базы, копия без простоя |
Пакетный 1cv8 /DumpIB | Любая | Низкая на больших | Да | Автоматизация копий .dt |
Коротко: файловую базу
до пары гигабайт быстрее скопировать папкой, большую серверную — бэкапом СУБД. Формат .dt берут, когда копию нужно переслать одним файлом или перенести с MS SQL на PostgreSQL и наоборот.
Что настроить в копии после переноса
Копия боевой базы опасна тем, что продолжает считать себя боевой: шлёт реальные документы по обмену, отправляет письма, подаёт отчётность. Перед работой с копией её «обезвреживают».
- 🔌 Отключите синхронизацию и обмены данными. Копия не должна слать документы в реальные базы-приёмники и в сервисы отправки отчётности.
- ⏰ Заблокируйте регламентные задания. В клиент-серверной базе это флаг «Блокировка регламентных заданий включена» в свойствах базы в консоли кластера. Тогда копия не станет сама выполнять фоновые операции.
- 📧 Выключите учётные записи электронной почты, чтобы из копии не ушли письма клиентам.
- 🏷 Переименуйте базу в списке запуска так, чтобы её нельзя было спутать с боевой: например, добавьте
(ТЕСТ)или(КОПИЯ).
Самая болезненная ошибка — забыть отключить обмен и отправку отчётности в копии. Тогда из тестовой базы уходят настоящие документы и декларации. Отключайте обмены сразу после того, как копия открылась.
Если копия нужна для демонстрации или передачи сторонним людям, дополнительно почистите персональные данные и смените пароли пользователей.
Частые ошибки при копировании
Большинство проблем связано не с самим копированием, а с состоянием базы в момент копии или с настройками приёмника.
.dt выгружен на более новой версии платформы, а загружаете на старой. Загружайте на версии не ниже той, где делали выгрузку.Частые вопросы
Можно ли скопировать базу, пока в ней работают пользователи?
.dt при открытой базе нельзя: нужен монопольный режим.Чем отличается выгрузка в `.dt` от резервной копии СУБД?
.dt — выгрузка средствами платформы, не зависит от типа СУБД, но медленная и требует монопольного режима. Бэкап СУБД работает с файлами базы данных напрямую, быстрее и снимается без остановки работы, но привязан к конкретной СУБД.Как перенести базу с файлового варианта на сервер SQL?
.dt, создайте в кластере новую пустую серверную базу и загрузите в неё этот .dt через Конфигуратор.Копия базы не повлияет на лицензии и ключи?
Нужно ли переносить вместе с базой каталог шаблонов и конфигурации?
.dt уже содержат конфигурацию и все данные. Каталоги шаблонов и дистрибутивов платформы к копии базы не относятся.