mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-16 07:45:17 +03:00
feat(db): ibcmd для частичной выгрузки/загрузки из исходников
Закрыты частичные режимы, ранее дававшие «use 1cv8»: - db-dump-xml Mode=Partial → ibcmd config export objects <имена> --out=<dir> (выгрузка указанных объектов конфигурации); - db-load-xml Mode=Partial / -Files / -ListFile → ibcmd config import files <отн.пути> --base-dir=<ConfigDir> (--base-dir обязателен); - db-load-git → добавлена ibcmd-поддержка (раньше отсутствовала): config import files <изменённые из git> --base-dir=<ConfigDir>, с цепочкой config apply --force при -UpdateDB; DryRun не трогает движок. Несовместимое под ibcmd по-прежнему даёт чистую ошибку: -Format Plain, -AllExtensions, db-dump-xml Mode UpdateInfo. 1cv8-ветки без изменений. Версии: db-dump-xml 1.2→1.3, db-load-xml 1.6→1.7, db-load-git 1.5→1.6. E2E: export objects (только указанные объекты), import files round-trip (+apply), db-load-git staged→import files+apply, DryRun, error-кейсы, 1cv8-регресс Partial — всё зелёное. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
# db-load-xml v1.6 — Load 1C configuration from XML files
|
||||
# db-load-xml v1.7 — Load 1C configuration from XML files
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
<#
|
||||
.SYNOPSIS
|
||||
@@ -192,12 +192,29 @@ try {
|
||||
exit 1
|
||||
}
|
||||
if ($Mode -eq "Partial" -or $Files -or $ListFile) {
|
||||
Write-Host "Error: ibcmd config import supports full-directory import only; use 1cv8 for partial/file lists" -ForegroundColor Red
|
||||
exit 1
|
||||
# partial: import specific files (relative to ConfigDir)
|
||||
$fileList = @()
|
||||
if ($ListFile) {
|
||||
if (-not (Test-Path $ListFile)) {
|
||||
Write-Host "Error: list file not found: $ListFile" -ForegroundColor Red
|
||||
exit 1
|
||||
}
|
||||
$fileList = @(Get-Content -Path $ListFile -Encoding UTF8 | ForEach-Object { $_.Trim() } | Where-Object { $_ })
|
||||
} elseif ($Files) {
|
||||
$fileList = @($Files -split ',' | ForEach-Object { $_.Trim() } | Where-Object { $_ })
|
||||
}
|
||||
if ($fileList.Count -eq 0) {
|
||||
Write-Host "Error: -Files or -ListFile required for partial import" -ForegroundColor Red
|
||||
exit 1
|
||||
}
|
||||
$arguments = @("infobase", "config", "import", "files") + $fileList
|
||||
$arguments += "--base-dir=$ConfigDir", "--db-path=$InfoBasePath"
|
||||
if ($Extension) { $arguments += "--extension=$Extension" }
|
||||
} else {
|
||||
$arguments = @("infobase", "config", "import", "--db-path=$InfoBasePath")
|
||||
if ($Extension) { $arguments += "--extension=$Extension" }
|
||||
$arguments += "$ConfigDir"
|
||||
}
|
||||
$arguments = @("infobase", "config", "import", "--db-path=$InfoBasePath")
|
||||
if ($Extension) { $arguments += "--extension=$Extension" }
|
||||
$arguments += "$ConfigDir"
|
||||
Write-Host "Running: ibcmd $($arguments -join ' ')"
|
||||
$output = & $V8Path @arguments 2>&1
|
||||
$exitCode = $LASTEXITCODE
|
||||
|
||||
Reference in New Issue
Block a user