From 23af4aa6a803ef81587d5a8021308086f8efd733 Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Tue, 23 Jun 2026 18:36:14 +0300 Subject: [PATCH] =?UTF-8?q?fix(db-*,epf-*):=20=D0=BF=D1=80=D0=BE=D0=B1?= =?UTF-8?q?=D1=80=D0=BE=D1=81=20--user/--password=20=D0=B2=20ibcmd-=D0=B2?= =?UTF-8?q?=D0=B5=D1=82=D0=BA=D0=B0=D1=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ibcmd-ветки игнорировали параметры авторизации (-UserName/-Password), хотя 1cv8-ветки передавали их через /N//P. На защищённой паролем базе ibcmd-операции падали с «Для выполнения операции требуется аутентификация в информационной базе». Затронуты: db-load-cf (config load), db-update (config apply), db-load-xml + db-load-git (config import + apply), db-dump-xml (config export), db-dump-cf (config save), epf-dump (export --file), epf-build (import --out). db-dump-dt/db-load-dt уже пробрасывали — не трогались. db-create/stub-db-create создают свежую базу — авторизация не нужна. E2E подтверждено на ERP 2.5.12.73 (ibcmd 8.3.24): без кред — auth-ошибка, с -UserName/-Password — выгрузка проходит. Паритет PS↔PY, EOL/BOM сохранены. Co-Authored-By: Claude Opus 4.8 (1M context) --- .claude/skills/db-dump-cf/scripts/db-dump-cf.ps1 | 4 +++- .claude/skills/db-dump-cf/scripts/db-dump-cf.py | 6 +++++- .claude/skills/db-dump-xml/scripts/db-dump-xml.ps1 | 4 +++- .claude/skills/db-dump-xml/scripts/db-dump-xml.py | 6 +++++- .claude/skills/db-load-cf/scripts/db-load-cf.ps1 | 4 +++- .claude/skills/db-load-cf/scripts/db-load-cf.py | 6 +++++- .claude/skills/db-load-git/scripts/db-load-git.ps1 | 6 +++++- .claude/skills/db-load-git/scripts/db-load-git.py | 10 +++++++++- .claude/skills/db-load-xml/scripts/db-load-xml.ps1 | 6 +++++- .claude/skills/db-load-xml/scripts/db-load-xml.py | 10 +++++++++- .claude/skills/db-update/scripts/db-update.ps1 | 4 +++- .claude/skills/db-update/scripts/db-update.py | 6 +++++- .claude/skills/epf-build/scripts/epf-build.ps1 | 4 +++- .claude/skills/epf-build/scripts/epf-build.py | 6 +++++- .claude/skills/epf-dump/scripts/epf-dump.ps1 | 4 +++- .claude/skills/epf-dump/scripts/epf-dump.py | 6 +++++- 16 files changed, 76 insertions(+), 16 deletions(-) diff --git a/.claude/skills/db-dump-cf/scripts/db-dump-cf.ps1 b/.claude/skills/db-dump-cf/scripts/db-dump-cf.ps1 index 78d90c9e..08e87ae5 100644 --- a/.claude/skills/db-dump-cf/scripts/db-dump-cf.ps1 +++ b/.claude/skills/db-dump-cf/scripts/db-dump-cf.ps1 @@ -1,4 +1,4 @@ -# db-dump-cf v1.3 — Dump 1C configuration to CF file +# db-dump-cf v1.4 — Dump 1C configuration to CF file # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills <# .SYNOPSIS @@ -152,6 +152,8 @@ try { $arguments = @("infobase", "config", "save", "--db-path=$InfoBasePath") if ($Extension) { $arguments += "--extension=$Extension" } $arguments += "$OutputFile" + if ($UserName) { $arguments += "--user=$UserName" } + if ($Password) { $arguments += "--password=$Password" } $arguments += "--data=$tempDir" Write-Host "Running: ibcmd $($arguments -join ' ')" $output = & $V8Path @arguments 2>&1 diff --git a/.claude/skills/db-dump-cf/scripts/db-dump-cf.py b/.claude/skills/db-dump-cf/scripts/db-dump-cf.py index 3ec4cff9..0400b6e3 100644 --- a/.claude/skills/db-dump-cf/scripts/db-dump-cf.py +++ b/.claude/skills/db-dump-cf/scripts/db-dump-cf.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# db-dump-cf v1.3 — Dump 1C configuration to CF file +# db-dump-cf v1.4 — Dump 1C configuration to CF file # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse @@ -112,6 +112,10 @@ def main(): arguments.append(args.OutputFile) ib_data = tempfile.mkdtemp(prefix="ibcmd_data_") atexit.register(shutil.rmtree, ib_data, ignore_errors=True) + if args.UserName: + arguments.append(f"--user={args.UserName}") + if args.Password: + arguments.append(f"--password={args.Password}") arguments.append(f"--data={ib_data}") print(f"Running: ibcmd {' '.join(arguments)}") result = subprocess.run([v8path] + arguments, capture_output=True, encoding="utf-8", errors="replace") diff --git a/.claude/skills/db-dump-xml/scripts/db-dump-xml.ps1 b/.claude/skills/db-dump-xml/scripts/db-dump-xml.ps1 index 8527bb2b..16c60fee 100644 --- a/.claude/skills/db-dump-xml/scripts/db-dump-xml.ps1 +++ b/.claude/skills/db-dump-xml/scripts/db-dump-xml.ps1 @@ -1,4 +1,4 @@ -# db-dump-xml v1.5 — Dump 1C configuration to XML files +# db-dump-xml v1.6 — Dump 1C configuration to XML files # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills <# .SYNOPSIS @@ -193,6 +193,8 @@ try { if ($Extension) { $arguments += "--extension=$Extension" } $arguments += "$ConfigDir" } + if ($UserName) { $arguments += "--user=$UserName" } + if ($Password) { $arguments += "--password=$Password" } $arguments += "--data=$tempDir" Write-Host "Running: ibcmd $($arguments -join ' ')" $output = & $V8Path @arguments 2>&1 diff --git a/.claude/skills/db-dump-xml/scripts/db-dump-xml.py b/.claude/skills/db-dump-xml/scripts/db-dump-xml.py index ce8a228d..fba0faa8 100644 --- a/.claude/skills/db-dump-xml/scripts/db-dump-xml.py +++ b/.claude/skills/db-dump-xml/scripts/db-dump-xml.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# db-dump-xml v1.5 — Dump 1C configuration to XML files +# db-dump-xml v1.6 — Dump 1C configuration to XML files # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse @@ -143,6 +143,10 @@ def main(): arguments.append(args.ConfigDir) ib_data = tempfile.mkdtemp(prefix="ibcmd_data_") atexit.register(shutil.rmtree, ib_data, ignore_errors=True) + if args.UserName: + arguments.append(f"--user={args.UserName}") + if args.Password: + arguments.append(f"--password={args.Password}") arguments.append(f"--data={ib_data}") print(f"Running: ibcmd {' '.join(arguments)}") result = subprocess.run([v8path] + arguments, capture_output=True, encoding="utf-8", errors="replace") diff --git a/.claude/skills/db-load-cf/scripts/db-load-cf.ps1 b/.claude/skills/db-load-cf/scripts/db-load-cf.ps1 index 1fa70603..e0a32f84 100644 --- a/.claude/skills/db-load-cf/scripts/db-load-cf.ps1 +++ b/.claude/skills/db-load-cf/scripts/db-load-cf.ps1 @@ -1,4 +1,4 @@ -# db-load-cf v1.3 — Load 1C configuration from CF file +# db-load-cf v1.4 — Load 1C configuration from CF file # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills <# .SYNOPSIS @@ -152,6 +152,8 @@ try { $arguments = @("infobase", "config", "load", "--db-path=$InfoBasePath") if ($Extension) { $arguments += "--extension=$Extension" } $arguments += "$InputFile" + if ($UserName) { $arguments += "--user=$UserName" } + if ($Password) { $arguments += "--password=$Password" } $arguments += "--data=$tempDir" Write-Host "Running: ibcmd $($arguments -join ' ')" $output = & $V8Path @arguments 2>&1 diff --git a/.claude/skills/db-load-cf/scripts/db-load-cf.py b/.claude/skills/db-load-cf/scripts/db-load-cf.py index c08cdd20..a1ca8cd5 100644 --- a/.claude/skills/db-load-cf/scripts/db-load-cf.py +++ b/.claude/skills/db-load-cf/scripts/db-load-cf.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# db-load-cf v1.3 — Load 1C configuration from CF file +# db-load-cf v1.4 — Load 1C configuration from CF file # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse @@ -112,6 +112,10 @@ def main(): arguments.append(args.InputFile) ib_data = tempfile.mkdtemp(prefix="ibcmd_data_") atexit.register(shutil.rmtree, ib_data, ignore_errors=True) + if args.UserName: + arguments.append(f"--user={args.UserName}") + if args.Password: + arguments.append(f"--password={args.Password}") arguments.append(f"--data={ib_data}") print(f"Running: ibcmd {' '.join(arguments)}") result = subprocess.run([v8path] + arguments, capture_output=True, encoding="utf-8", errors="replace") diff --git a/.claude/skills/db-load-git/scripts/db-load-git.ps1 b/.claude/skills/db-load-git/scripts/db-load-git.ps1 index 7fca7fe7..f9deb2db 100644 --- a/.claude/skills/db-load-git/scripts/db-load-git.ps1 +++ b/.claude/skills/db-load-git/scripts/db-load-git.ps1 @@ -1,4 +1,4 @@ -# db-load-git v1.7 — Load Git changes into 1C database +# db-load-git v1.8 — Load Git changes into 1C database # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills <# .SYNOPSIS @@ -339,6 +339,8 @@ try { $arguments = @("infobase", "config", "import", "files") + $configFiles $arguments += "--base-dir=$ConfigDir", "--db-path=$InfoBasePath" if ($Extension) { $arguments += "--extension=$Extension" } + if ($UserName) { $arguments += "--user=$UserName" } + if ($Password) { $arguments += "--password=$Password" } $arguments += "--data=$tempDir" Write-Host "Running: ibcmd $($arguments -join ' ')" $output = & $V8Path @arguments 2>&1 @@ -352,6 +354,8 @@ try { if ($output) { Write-Host ($output | Out-String) } if ($UpdateDB) { $applyArgs = @("infobase", "config", "apply", "--db-path=$InfoBasePath", "--force") + if ($UserName) { $applyArgs += "--user=$UserName" } + if ($Password) { $applyArgs += "--password=$Password" } $applyArgs += "--data=$tempDir" Write-Host "Running: ibcmd $($applyArgs -join ' ')" $applyOut = & $V8Path @applyArgs 2>&1 diff --git a/.claude/skills/db-load-git/scripts/db-load-git.py b/.claude/skills/db-load-git/scripts/db-load-git.py index afa82c9f..73cc823a 100644 --- a/.claude/skills/db-load-git/scripts/db-load-git.py +++ b/.claude/skills/db-load-git/scripts/db-load-git.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# db-load-git v1.7 — Load Git changes into 1C database +# db-load-git v1.8 — Load Git changes into 1C database # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse @@ -269,6 +269,10 @@ def main(): arguments.append(f"--extension={args.Extension}") ib_data = tempfile.mkdtemp(prefix="ibcmd_data_") atexit.register(shutil.rmtree, ib_data, ignore_errors=True) + if args.UserName: + arguments.append(f"--user={args.UserName}") + if args.Password: + arguments.append(f"--password={args.Password}") arguments.append(f"--data={ib_data}") print(f"Running: ibcmd {' '.join(arguments)}") result = subprocess.run([v8path] + arguments, capture_output=True, encoding="utf-8", errors="replace") @@ -285,6 +289,10 @@ def main(): exit_code = 0 if args.UpdateDB: apply_args = ["infobase", "config", "apply", f"--db-path={args.InfoBasePath}", "--force"] + if args.UserName: + apply_args.append(f"--user={args.UserName}") + if args.Password: + apply_args.append(f"--password={args.Password}") apply_args.append(f"--data={ib_data}") print(f"Running: ibcmd {' '.join(apply_args)}") ar = subprocess.run([v8path] + apply_args, capture_output=True, encoding="utf-8", errors="replace") diff --git a/.claude/skills/db-load-xml/scripts/db-load-xml.ps1 b/.claude/skills/db-load-xml/scripts/db-load-xml.ps1 index 3fa152fc..9ee53898 100644 --- a/.claude/skills/db-load-xml/scripts/db-load-xml.ps1 +++ b/.claude/skills/db-load-xml/scripts/db-load-xml.ps1 @@ -1,4 +1,4 @@ -# db-load-xml v1.9 — Load 1C configuration from XML files +# db-load-xml v1.10 — Load 1C configuration from XML files # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills <# .SYNOPSIS @@ -213,6 +213,8 @@ try { if ($Extension) { $arguments += "--extension=$Extension" } $arguments += "$ConfigDir" } + if ($UserName) { $arguments += "--user=$UserName" } + if ($Password) { $arguments += "--password=$Password" } $arguments += "--data=$tempDir" Write-Host "Running: ibcmd $($arguments -join ' ')" $output = & $V8Path @arguments 2>&1 @@ -227,6 +229,8 @@ try { if ($UpdateDB) { $applyArgs = @("infobase", "config", "apply", "--db-path=$InfoBasePath", "--force") + if ($UserName) { $applyArgs += "--user=$UserName" } + if ($Password) { $applyArgs += "--password=$Password" } $applyArgs += "--data=$tempDir" Write-Host "Running: ibcmd $($applyArgs -join ' ')" $applyOut = & $V8Path @applyArgs 2>&1 diff --git a/.claude/skills/db-load-xml/scripts/db-load-xml.py b/.claude/skills/db-load-xml/scripts/db-load-xml.py index 7a40334f..cc18569e 100644 --- a/.claude/skills/db-load-xml/scripts/db-load-xml.py +++ b/.claude/skills/db-load-xml/scripts/db-load-xml.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# db-load-xml v1.9 — Load 1C configuration from XML files +# db-load-xml v1.10 — Load 1C configuration from XML files # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse @@ -161,6 +161,10 @@ def main(): arguments.append(args.ConfigDir) ib_data = tempfile.mkdtemp(prefix="ibcmd_data_") atexit.register(shutil.rmtree, ib_data, ignore_errors=True) + if args.UserName: + arguments.append(f"--user={args.UserName}") + if args.Password: + arguments.append(f"--password={args.Password}") arguments.append(f"--data={ib_data}") print(f"Running: ibcmd {' '.join(arguments)}") result = subprocess.run([v8path] + arguments, capture_output=True, encoding="utf-8", errors="replace") @@ -177,6 +181,10 @@ def main(): exit_code = 0 if args.UpdateDB: apply_args = ["infobase", "config", "apply", f"--db-path={args.InfoBasePath}", "--force"] + if args.UserName: + apply_args.append(f"--user={args.UserName}") + if args.Password: + apply_args.append(f"--password={args.Password}") apply_args.append(f"--data={ib_data}") print(f"Running: ibcmd {' '.join(apply_args)}") ar = subprocess.run([v8path] + apply_args, capture_output=True, encoding="utf-8", errors="replace") diff --git a/.claude/skills/db-update/scripts/db-update.ps1 b/.claude/skills/db-update/scripts/db-update.ps1 index 89aecd5b..1bbbe4e8 100644 --- a/.claude/skills/db-update/scripts/db-update.ps1 +++ b/.claude/skills/db-update/scripts/db-update.ps1 @@ -1,4 +1,4 @@ -# db-update v1.3 — Update 1C database configuration +# db-update v1.4 — Update 1C database configuration # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills <# .SYNOPSIS @@ -160,6 +160,8 @@ try { if ($Dynamic -eq "+") { $arguments += "--dynamic=auto" } elseif ($Dynamic -eq "-") { $arguments += "--dynamic=disable" } if ($Extension) { $arguments += "--extension=$Extension" } + if ($UserName) { $arguments += "--user=$UserName" } + if ($Password) { $arguments += "--password=$Password" } $arguments += "--data=$tempDir" Write-Host "Running: ibcmd $($arguments -join ' ')" $output = & $V8Path @arguments 2>&1 diff --git a/.claude/skills/db-update/scripts/db-update.py b/.claude/skills/db-update/scripts/db-update.py index 2d98c862..331c84de 100644 --- a/.claude/skills/db-update/scripts/db-update.py +++ b/.claude/skills/db-update/scripts/db-update.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# db-update v1.3 — Update 1C database configuration +# db-update v1.4 — Update 1C database configuration # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse @@ -113,6 +113,10 @@ def main(): arguments.append(f"--extension={args.Extension}") ib_data = tempfile.mkdtemp(prefix="ibcmd_data_") atexit.register(shutil.rmtree, ib_data, ignore_errors=True) + if args.UserName: + arguments.append(f"--user={args.UserName}") + if args.Password: + arguments.append(f"--password={args.Password}") arguments.append(f"--data={ib_data}") print(f"Running: ibcmd {' '.join(arguments)}") result = subprocess.run([v8path] + arguments, capture_output=True, encoding="utf-8", errors="replace") diff --git a/.claude/skills/epf-build/scripts/epf-build.ps1 b/.claude/skills/epf-build/scripts/epf-build.ps1 index 31ac7e25..751ac2b2 100644 --- a/.claude/skills/epf-build/scripts/epf-build.ps1 +++ b/.claude/skills/epf-build/scripts/epf-build.ps1 @@ -1,4 +1,4 @@ -# epf-build v1.3 — Build external data processor or report (EPF/ERF) from XML sources +# epf-build v1.4 — Build external data processor or report (EPF/ERF) from XML sources # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills <# .SYNOPSIS @@ -157,6 +157,8 @@ try { # --- ibcmd branch: build EPF/ERF via config import --out --- $srcDir = Split-Path $SourceFile -Parent $arguments = @("infobase", "config", "import", "$srcDir", "--out=$OutputFile", "--db-path=$InfoBasePath") + if ($UserName) { $arguments += "--user=$UserName" } + if ($Password) { $arguments += "--password=$Password" } $arguments += "--data=$tempDir" Write-Host "Running: ibcmd $($arguments -join ' ')" $output = & $V8Path @arguments 2>&1 diff --git a/.claude/skills/epf-build/scripts/epf-build.py b/.claude/skills/epf-build/scripts/epf-build.py index 04abf2cb..fd1111c0 100644 --- a/.claude/skills/epf-build/scripts/epf-build.py +++ b/.claude/skills/epf-build/scripts/epf-build.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# epf-build v1.3 — Build external data processor or report (EPF/ERF) from XML sources +# epf-build v1.4 — Build external data processor or report (EPF/ERF) from XML sources # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse @@ -128,6 +128,10 @@ def main(): arguments = ["infobase", "config", "import", src_dir, f"--out={args.OutputFile}", f"--db-path={args.InfoBasePath}"] ib_data = tempfile.mkdtemp(prefix="ibcmd_data_") atexit.register(shutil.rmtree, ib_data, ignore_errors=True) + if args.UserName: + arguments.append(f"--user={args.UserName}") + if args.Password: + arguments.append(f"--password={args.Password}") arguments.append(f"--data={ib_data}") print(f"Running: ibcmd {' '.join(arguments)}") result = subprocess.run([v8path] + arguments, capture_output=True, encoding="utf-8", errors="replace") diff --git a/.claude/skills/epf-dump/scripts/epf-dump.ps1 b/.claude/skills/epf-dump/scripts/epf-dump.ps1 index fb01a70b..85e3b53a 100644 --- a/.claude/skills/epf-dump/scripts/epf-dump.ps1 +++ b/.claude/skills/epf-dump/scripts/epf-dump.ps1 @@ -1,4 +1,4 @@ -# epf-dump v1.3 — Dump external data processor or report (EPF/ERF) to XML sources +# epf-dump v1.4 — Dump external data processor or report (EPF/ERF) to XML sources # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills <# .SYNOPSIS @@ -158,6 +158,8 @@ try { if ($engine -eq "ibcmd") { # --- ibcmd branch: dump EPF/ERF via config export --file --- $arguments = @("infobase", "config", "export", "--file=$InputFile", "$OutputDir", "--db-path=$InfoBasePath") + if ($UserName) { $arguments += "--user=$UserName" } + if ($Password) { $arguments += "--password=$Password" } $arguments += "--data=$tempDir" Write-Host "Running: ibcmd $($arguments -join ' ')" $output = & $V8Path @arguments 2>&1 diff --git a/.claude/skills/epf-dump/scripts/epf-dump.py b/.claude/skills/epf-dump/scripts/epf-dump.py index 31c0140a..b29fdc29 100644 --- a/.claude/skills/epf-dump/scripts/epf-dump.py +++ b/.claude/skills/epf-dump/scripts/epf-dump.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# epf-dump v1.3 — Dump external data processor or report (EPF/ERF) to XML sources +# epf-dump v1.4 — Dump external data processor or report (EPF/ERF) to XML sources # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse @@ -125,6 +125,10 @@ def main(): arguments = ["infobase", "config", "export", f"--file={args.InputFile}", args.OutputDir, f"--db-path={args.InfoBasePath}"] ib_data = tempfile.mkdtemp(prefix="ibcmd_data_") atexit.register(shutil.rmtree, ib_data, ignore_errors=True) + if args.UserName: + arguments.append(f"--user={args.UserName}") + if args.Password: + arguments.append(f"--password={args.Password}") arguments.append(f"--data={ib_data}") print(f"Running: ibcmd {' '.join(arguments)}") result = subprocess.run([v8path] + arguments, capture_output=True, encoding="utf-8", errors="replace")