mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-31 23:40:51 +03:00
fix(db-dump-xml,db-load-xml): список объектов задаёт частичную операцию
Список без режима давал молчаливо неверный результат, причём разный. У выгрузки умолчание Changes игнорировало -Objects и отдавало «изменённое с прошлой выгрузки». У загрузки на движке 1cv8 умолчание Full игнорировало -Files и заменяло всю конфигурацию базы, тогда как на ibcmd та же команда выполнялась частично — одни и те же аргументы вели себя по-разному. Теперь перечисленные объекты или файлы сами задают частичную операцию. Режим разрешается до ветвления на движки, поэтому расхождение исчезает по построению; проверено на стенде: обе ветки дают одинаковый результат. Заданный вместе со списком -Mode Full или Changes не отбрасывается молча — о нём сообщает [note]. Список с -Mode UpdateInfo отвергается: это другая операция, обновление ConfigDumpInfo без выгрузки файлов, и вывод подменил бы её. Инструкции намеренно не менялись: -Mode Partial остаётся каноничной формой, а вывод режима — прощающим вводом, который мы не документируем. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
7c37fe2ac2
commit
989f4c5526
@@ -1,4 +1,4 @@
|
||||
# db-load-xml v1.25 — Load 1C configuration from XML files
|
||||
# db-load-xml v1.26 — Load 1C configuration from XML files
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
# NB: *nix-раскладку платформы (/opt/1cv8/<ver>/1cv8, без .exe) знает только .py-порт — PS на *nix не исполняется.
|
||||
<#
|
||||
@@ -85,8 +85,10 @@ param(
|
||||
[string]$ConfigDir,
|
||||
|
||||
[Parameter(Mandatory=$false)]
|
||||
[ValidateSet("Full", "Partial")]
|
||||
[string]$Mode = "Full",
|
||||
# Пустое значение = режим не задан. Прежнее умолчание Full подставляется ниже, после того
|
||||
# как станет видно, перечислены ли файлы.
|
||||
[ValidateSet("", "Full", "Partial")]
|
||||
[string]$Mode = "",
|
||||
|
||||
[Parameter(Mandatory=$false)]
|
||||
[string]$Files,
|
||||
@@ -593,6 +595,16 @@ if (-not (Test-Path $ConfigDir)) {
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Перечислены файлы — загрузка частичная. Иначе список молча игнорировался бы, а умолчание Full
|
||||
# заменило бы всю конфигурацию базы.
|
||||
if ($Files -or $ListFile) {
|
||||
if ($Mode -eq "Full") {
|
||||
Write-Host "[note] перечислены файлы — загружаются только они; -Mode Full не применён" -ForegroundColor Yellow
|
||||
}
|
||||
$Mode = "Partial"
|
||||
}
|
||||
if (-not $Mode) { $Mode = "Full" }
|
||||
|
||||
# --- Validate Partial mode ---
|
||||
if ($Mode -eq "Partial" -and -not $Files -and -not $ListFile) {
|
||||
Write-Host "Error: -Files or -ListFile required for Partial mode" -ForegroundColor Red
|
||||
@@ -612,7 +624,7 @@ try {
|
||||
}
|
||||
if ($AllExtensions) {
|
||||
$arguments = @("infobase", "config", "import", "all-extensions", "$ConfigDir", "--db-path=$InfoBasePath")
|
||||
} elseif ($Mode -eq "Partial" -or $Files -or $ListFile) {
|
||||
} elseif ($Mode -eq "Partial") {
|
||||
# partial: import specific files (relative to ConfigDir)
|
||||
$fileList = @()
|
||||
if ($ListFile) {
|
||||
|
||||
Reference in New Issue
Block a user