mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-31 15:30: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-dump-xml v1.18 — Dump 1C configuration to XML files
|
||||
# db-dump-xml v1.19 — Dump 1C configuration to 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", "Changes", "Partial", "UpdateInfo")]
|
||||
[string]$Mode = "Changes",
|
||||
# Пустое значение = режим не задан. Прежнее умолчание Changes подставляется ниже, после
|
||||
# того как станет видно, перечислены ли объекты.
|
||||
[ValidateSet("", "Full", "Changes", "Partial", "UpdateInfo")]
|
||||
[string]$Mode = "",
|
||||
|
||||
[Parameter(Mandatory=$false)]
|
||||
[string]$Objects,
|
||||
@@ -522,6 +524,20 @@ if ($ObjectsFile) {
|
||||
ForEach-Object { $_.Trim() } | Where-Object { $_ -and -not $_.StartsWith('#') })
|
||||
$Objects = (@(@($Objects -split ',' | ForEach-Object { $_.Trim() } | Where-Object { $_ }) + $fromFile) -join ',')
|
||||
}
|
||||
# Перечислены объекты — операция частичная. Иначе список молча игнорировался бы: умолчание
|
||||
# Changes выгружает «изменённое с прошлой выгрузки», а не то, что просили.
|
||||
if ($Objects) {
|
||||
if ($Mode -eq "UpdateInfo") {
|
||||
# Не «шире/уже», а другая операция: обновление ConfigDumpInfo без выгрузки файлов.
|
||||
Write-Host "Error: -Mode UpdateInfo does not take an object list — it only refreshes ConfigDumpInfo.xml" -ForegroundColor Red
|
||||
exit 1
|
||||
}
|
||||
if ($Mode -eq "Full" -or $Mode -eq "Changes") {
|
||||
Write-Host "[note] перечислены объекты — выгружаются только они; -Mode $Mode не применён" -ForegroundColor Yellow
|
||||
}
|
||||
$Mode = "Partial"
|
||||
}
|
||||
if (-not $Mode) { $Mode = "Changes" }
|
||||
if ($Mode -eq "Partial" -and -not $Objects) {
|
||||
Write-Host "Error: -Objects or -ObjectsFile required for Partial mode" -ForegroundColor Red
|
||||
exit 1
|
||||
|
||||
Reference in New Issue
Block a user