mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-09-01 07:50:50 +03:00
feat(db-repo): подсказки по отказам подключения, смоук каскадных операций
Административные и сервисные команды собирались по документации, а вживую гонялись сырыми вызовами платформы — сборка аргументов навыком не проверялась. Прогон через навык показал, что работают dump-cfg (включая -Version), set-label, add-user, clear-cache во всех областях, optimize, copy-users, create -NoBind. Нашлись два тупика подряд при переподключении базы: платформа сначала отвергает непустую конфигурацию, а после -ForceReplaceCfg — то, что за пользователем хранилища уже числится эта база. Оба раза действие не называется. Добавлены подсказки на оба сообщения, сценарий описан в references/connect.md. Заодно постусловие update сработало на настоящей аварии: после неудачного переподключения база осталась отключённой, и команда отказалась вместо тихой замены конфигурации. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
e64c48cdfd
commit
8faa1f77c0
@@ -13,6 +13,10 @@ powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-repo.ps1" -Comma
|
||||
|
||||
На пустой базе `-ForceReplaceCfg` не нужен.
|
||||
|
||||
**Переподключение** базы, которая уже была подключена, обычно требует обоих флагов: конфигурация
|
||||
в базе не пустая (`-ForceReplaceCfg`), а за пользователем хранилища всё ещё числится эта база
|
||||
(`-ForceBindAlreadyBindedUser`). Навык подсказывает оба по сообщению платформы.
|
||||
|
||||
После подключения добавь `repository` в запись базы в `.v8-project.json` — иначе остальные
|
||||
подкоманды придётся каждый раз звать с явными реквизитами, а `update` откажется работать.
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# db-repo v1.5 — 1C configuration repository operations
|
||||
# db-repo v1.6 — 1C configuration repository operations
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
# NB: движок только 1cv8 — ibcmd работу с хранилищем не поддерживает (нет такого режима).
|
||||
<#
|
||||
@@ -968,6 +968,16 @@ function Write-RepoVerdict {
|
||||
default {
|
||||
if ($PlatformExit -ne 0) {
|
||||
Write-Host "Команда '$Cmd' завершилась с ошибкой (код $PlatformExit)$(Get-ExitAnnotation $PlatformExit)" -ForegroundColor Red
|
||||
# Подключение базы, у которой конфигурация уже есть, платформа отклоняет без
|
||||
# подсказки — а действие ровно одно, и оно необратимо.
|
||||
if ($Log.Raw -match 'связанная с данным хранилищем') {
|
||||
Write-Host "[hint] за этим пользователем хранилища уже числится другая база." -ForegroundColor Yellow
|
||||
Write-Host " Подключить всё равно — -ForceBindAlreadyBindedUser." -ForegroundColor Yellow
|
||||
}
|
||||
if ($Log.Raw -match 'Конфигурация не пустая') {
|
||||
Write-Host "[hint] в базе уже есть конфигурация. Замена её конфигурацией из хранилища —" -ForegroundColor Yellow
|
||||
Write-Host " -ForceReplaceCfg. Операция необратима: спросите подтверждение у пользователя." -ForegroundColor Yellow
|
||||
}
|
||||
return 1
|
||||
}
|
||||
Write-Host "Команда '$Cmd' выполнена." -ForegroundColor Green
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env python3
|
||||
# db-repo v1.5 — 1C configuration repository operations
|
||||
# db-repo v1.6 — 1C configuration repository operations
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
# NB: движок только 1cv8 — ibcmd работу с хранилищем не поддерживает (нет такого режима).
|
||||
"""Работа с хранилищем конфигурации 1С.
|
||||
@@ -558,7 +558,7 @@ def read_repo_log(log_text):
|
||||
r = {
|
||||
"locked": [], "locked_by_other": [], "received": [], "committed": [],
|
||||
"unchanged": [], "unlocked": [], "not_locked": [], "modified": [], "missing": [],
|
||||
"has_operation_block": False,
|
||||
"has_operation_block": False, "raw": log_text,
|
||||
}
|
||||
if not log_text:
|
||||
return r
|
||||
@@ -852,6 +852,14 @@ def write_repo_verdict(cmd, log, platform_exit, requested, report_format="", out
|
||||
if platform_exit != 0:
|
||||
print("Команда '%s' завершилась с ошибкой (код %s)%s"
|
||||
% (cmd, platform_exit, describe_exit(platform_exit)))
|
||||
# Подключение базы, у которой конфигурация уже есть, платформа отклоняет без
|
||||
# подсказки — а действие ровно одно, и оно необратимо.
|
||||
if "связанная с данным хранилищем" in (log.get("raw") or ""):
|
||||
print("[hint] за этим пользователем хранилища уже числится другая база.")
|
||||
print(" Подключить всё равно — -ForceBindAlreadyBindedUser.")
|
||||
if "Конфигурация не пустая" in (log.get("raw") or ""):
|
||||
print("[hint] в базе уже есть конфигурация. Замена её конфигурацией из хранилища —")
|
||||
print(" -ForceReplaceCfg. Операция необратима: спросите подтверждение у пользователя.")
|
||||
return 1
|
||||
print("Команда '%s' выполнена." % cmd)
|
||||
if cmd == "report" and report_format == "txt" and os.path.exists(output_file):
|
||||
|
||||
Reference in New Issue
Block a user