1c-db-load-dt

Восстановление информационной базы 1С из DT-файла (полная замена базы - данные, конфигурация, пользователи). Используй когда пользователь просит восстановить базу из dt, развернуть dt-файл, загрузить

SKILL.md

GitHub

/db-load-dt - Восстановление информационной базы из DT-файла

Загружает DT-файл в информационную базу: конфигурация, данные, список пользователей, настройки - все содержимое базы замещается содержимым DT.

Usage

/db-load-dt <input.dt> [database]
/db-load-dt backup.dt dev

ДЕСТРУКТИВНАЯ ОПЕРАЦИЯ: восстановление из DT полностью уничтожает текущее содержимое базы - данные, конфигурацию, пользователей, настройки. Откат невозможен. Перед выполнением ОБЯЗАТЕЛЬНО:

  1. Предложи сначала снять бэкап текущего состояния через /db-dump-dt (точка отката).
  2. Назови пользователю базу-приемник и DT-файл (путь, дата изменения, размер).
  3. Предупреди, что текущие данные базы будут потеряны, а список пользователей заменится списком из DT (учетные записи могут смениться).
  4. Запроси явное подтверждение через AskUserQuestion. Без подтверждения не запускай.

Параметры подключения

Прочитай .v8-project.json из корня проекта. Возьми v8path (путь к платформе) и разреши базу:

  1. Если пользователь указал параметры подключения (путь, сервер) - используй напрямую
  2. Если указал базу по имени - ищи по id / alias / name в .v8-project.json
  3. Если не указал - сопоставь текущую ветку Git с databases[].branches
  4. Если ветка не совпала - используй default Если v8path не задан - автоопределение: Get-ChildItem "C:\Program Files\1cv8\*\bin\1cv8.exe" | Sort -Desc | Select -First 1 Если файла нет - предложи /db-list add. Если использованная база не зарегистрирована - после выполнения предложи добавить через /db-list add. База с ролью prod в .v8-project.json отказывает изменяющей операции: скрипт завершается кодом 1, пока не передан -AllowProd.

Команда

powershell.exe -NoProfile -File skills/1c-db-load-dt/scripts/db-load-dt.ps1 <параметры>

Параметры скрипта

Параметр Обязательный Описание
-V8Path <путь> нет Каталог bin платформы (или полный путь к 1cv8.exe)
-InfoBasePath <путь> * Файловая база
-InfoBaseServer <сервер> * Сервер 1С (для серверной базы)
-InfoBaseRef <имя> * Имя базы на сервере
-UserName <имя> нет Имя пользователя (текущей базы, до восстановления)
-Password <пароль> нет Пароль
-AllowProd нет Разрешить операцию над базой, помеченной боевой (role: prod в .v8-project.json)
-InputFile <путь> да Путь к DT-файлу
-JobsCount <N> нет Число фоновых заданий загрузки (0 = решает платформа)
-UnlockCode <код> нет Код разрешения начала сеансов, если база заблокирована (/UC)
-StrictLog нет Отказ в журнале поднимает код возврата до 1, даже если платформа вернула 0

* - нужен либо -InfoBasePath, либо пара -InfoBaseServer + -InfoBaseRef

Восстановление требует монопольного доступа: активные сеансы должны быть завершены.

Коды возврата

Код Описание
0 Успешно
1 Ошибка (см. лог)
2 Неверные аргументы (python-версия, argparse)

После выполнения

  1. Прочитай лог-файл и покажи результат. Типовые причины ошибок: активные сеансы (нужен монопольный доступ), поврежденный или несовместимый DT. Если серверная база заблокирована с кодом разрешения - повтори с -UnlockCode.
  2. /db-update НЕ нужен: DT содержит согласованную базу целиком.
  3. Напомни, что аутентификация теперь идет по пользователям из DT.

Примеры

# Восстановление файловой базы
powershell.exe -NoProfile -File skills/1c-db-load-dt/scripts/db-load-dt.ps1 -InfoBasePath "C:\Bases\MyDB" -UserName "Admin" -InputFile "C:\backup\MyDB.dt"

# Серверная база
powershell.exe -NoProfile -File skills/1c-db-load-dt/scripts/db-load-dt.ps1 -InfoBaseServer "srv01" -InfoBaseRef "MyApp_Test" -UserName "Admin" -Password "secret" -InputFile "MyApp_Dev.dt"