mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-14 14:55:16 +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,5 +1,5 @@
|
||||
#!/usr/bin/env python3
|
||||
# db-dump-xml v1.2 — Dump 1C configuration to XML files
|
||||
# db-dump-xml v1.3 — Dump 1C configuration to XML files
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
|
||||
import argparse
|
||||
@@ -127,13 +127,20 @@ def main():
|
||||
if args.AllExtensions:
|
||||
print("Error: ibcmd config export does not support -AllExtensions (use -Extension or 1cv8)", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
if args.Mode in ("Partial", "UpdateInfo"):
|
||||
print(f"Error: ibcmd config export supports Mode Full/Changes only; use 1cv8 for {args.Mode}", file=sys.stderr)
|
||||
if args.Mode == "UpdateInfo":
|
||||
print("Error: ibcmd config export does not support Mode UpdateInfo; use 1cv8", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
arguments = ["infobase", "config", "export", f"--db-path={args.InfoBasePath}"]
|
||||
if args.Extension:
|
||||
arguments.append(f"--extension={args.Extension}")
|
||||
arguments.append(args.ConfigDir)
|
||||
if args.Mode == "Partial":
|
||||
obj_list = [o.strip() for o in args.Objects.split(",") if o.strip()]
|
||||
arguments = ["infobase", "config", "export", "objects"] + obj_list
|
||||
arguments += [f"--out={args.ConfigDir}", f"--db-path={args.InfoBasePath}"]
|
||||
if args.Extension:
|
||||
arguments.append(f"--extension={args.Extension}")
|
||||
else:
|
||||
arguments = ["infobase", "config", "export", f"--db-path={args.InfoBasePath}"]
|
||||
if args.Extension:
|
||||
arguments.append(f"--extension={args.Extension}")
|
||||
arguments.append(args.ConfigDir)
|
||||
print(f"Running: ibcmd {' '.join(arguments)}")
|
||||
result = subprocess.run([v8path] + arguments, capture_output=True, encoding="utf-8", errors="replace")
|
||||
if result.returncode == 0:
|
||||
|
||||
Reference in New Issue
Block a user