Копирование информационной базы 1С 8.3: от папки до SQL

· 9 мин

Содержание

Самая частая ошибка — скопировать папку файловой базы, пока в ней работают люди. Копия получится битой: файл 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

Для файловой базы есть два рабочих приёма.

Способ 1. Копирование папки целиком. Подходит, когда переносите базу на другой диск или компьютер «как есть».

  1. Попросите всех пользователей закрыть базу. Пока база открыта хотя бы одним сеансом, копия будет повреждена.
  2. Откройте папку базы (путь из параметра File).
  3. Скопируйте всю папку, а не только 1Cv8.1CD: рядом лежат служебные файлы 1Cv8.cfl, журнал регистрации и каталог кэша.
  4. На новом месте добавьте базу в список: в окне запуска Добавить → Добавление в список существующей информационной базы и укажите скопированную папку.

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

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

  1. Запустите базу в режиме Конфигуратор.
  2. Меню Администрирование → Выгрузить информационную базу, укажите путь к файлу, например D:\copy_buh.dt.
  3. Создайте приёмник: в окне запуска Добавить → Создание новой информационной базы → Создание информационной базы без конфигурации.
  4. Откройте новую базу в Конфигураторе и выполните Администрирование → Загрузить информационную базу, выберите .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 — выгрузка средствами платформы, не зависит от типа СУБД, но медленная и требует монопольного режима. Бэкап СУБД работает с файлами базы данных напрямую, быстрее и снимается без остановки работы, но привязан к конкретной СУБД.
Как перенести базу с файлового варианта на сервер SQL?
Выгрузите файловую базу в .dt, создайте в кластере новую пустую серверную базу и загрузите в неё этот .dt через Конфигуратор.
Копия базы не повлияет на лицензии и ключи?
Копирование данных ключей не касается. Чтобы открыть копию, на рабочем месте должна быть доступна действующая лицензия (программная или аппаратный ключ), как и для любой базы.
Нужно ли переносить вместе с базой каталог шаблонов и конфигурации?
Нет. Папка файловой базы и .dt уже содержат конфигурацию и все данные. Каталоги шаблонов и дистрибутивов платформы к копии базы не относятся.