mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-09-01 07:50:50 +03:00
fix(db-repo): порядок вывода и формулировки подсказок
Прогон всех веток вывода подряд показал, что длинный совет про перевыгрузку вставал МЕЖДУ фактами и вердиктом: строка «захват не выполнен» терялась в середине. Совет теперь печатается последним во всех ветках — сначала факты, затем вердикт. Убрана мёртвая подсказка про -Yes: флага больше нет. Снято утверждение «по убыванию частоты» у причин отказа commit — проверить его нечем. Сняты повтор слова «проверьте» и склонение «объект(ов)». Заголовок «Не были захвачены» дополнен пояснением, что снимать нечего. Примеры в шапке скрипта приведены к именованной подкоманде. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
1327b4fc5a
commit
67b8ad5b47
@@ -23,10 +23,10 @@
|
|||||||
Захватывать объект вместе с подчинёнными (формы, макеты, команды)
|
Захватывать объект вместе с подчинёнными (формы, макеты, команды)
|
||||||
|
|
||||||
.EXAMPLE
|
.EXAMPLE
|
||||||
.\db-repo.ps1 lock -InfoBasePath "C:\Bases\MyDB" -Objects "Справочник.Номенклатура"
|
.\db-repo.ps1 -Command lock -InfoBasePath "C:\Bases\MyDB" -Objects "Справочник.Номенклатура"
|
||||||
|
|
||||||
.EXAMPLE
|
.EXAMPLE
|
||||||
.\db-repo.ps1 commit -InfoBasePath "C:\Bases\MyDB" -Objects "Справочник.Номенклатура" -Comment "Артикул"
|
.\db-repo.ps1 -Command commit -InfoBasePath "C:\Bases\MyDB" -Objects "Справочник.Номенклатура" -Comment "Артикул"
|
||||||
#>
|
#>
|
||||||
|
|
||||||
[CmdletBinding(PositionalBinding=$false)]
|
[CmdletBinding(PositionalBinding=$false)]
|
||||||
@@ -717,7 +717,7 @@ function Write-ReceivedWarning {
|
|||||||
param([string[]]$Received)
|
param([string[]]$Received)
|
||||||
if (-not $Received -or $Received.Count -eq 0) { return }
|
if (-not $Received -or $Received.Count -eq 0) { return }
|
||||||
Write-Host ""
|
Write-Host ""
|
||||||
Write-Host "[warning] локальная конфигурация изменена: из хранилища получено $($Received.Count) объект(ов):" -ForegroundColor Yellow
|
Write-Host "[warning] локальная конфигурация изменена, получено объектов из хранилища: $($Received.Count)" -ForegroundColor Yellow
|
||||||
foreach ($n in $Received) { Write-Host " $n" -ForegroundColor Yellow }
|
foreach ($n in $Received) { Write-Host " $n" -ForegroundColor Yellow }
|
||||||
$owners = Get-OwnerObjects $Received
|
$owners = Get-OwnerObjects $Received
|
||||||
$hasRoot = @($Received | Where-Object { ($_ -split '\.').Count -eq 1 }).Count -gt 0
|
$hasRoot = @($Received | Where-Object { ($_ -split '\.').Count -eq 1 }).Count -gt 0
|
||||||
@@ -827,12 +827,13 @@ function Write-RepoVerdict {
|
|||||||
|
|
||||||
switch ($Cmd) {
|
switch ($Cmd) {
|
||||||
'lock' {
|
'lock' {
|
||||||
|
# Порядок вывода: факты, затем вердикт, и только потом совет. Совет длинный, и
|
||||||
|
# между фактами и вердиктом он прятал бы главную строку.
|
||||||
Write-RepoObjects "Захвачено" $Log.Locked
|
Write-RepoObjects "Захвачено" $Log.Locked
|
||||||
if ($Log.LockedByOther.Count -gt 0) {
|
if ($Log.LockedByOther.Count -gt 0) {
|
||||||
Write-Host "Не удалось захватить ($($Log.LockedByOther.Count)):" -ForegroundColor Yellow
|
Write-Host "Не удалось захватить ($($Log.LockedByOther.Count)):" -ForegroundColor Yellow
|
||||||
foreach ($o in $Log.LockedByOther) { Write-Host " $($o.Name) — держит $($o.Holder)" -ForegroundColor Yellow }
|
foreach ($o in $Log.LockedByOther) { Write-Host " $($o.Name) — держит $($o.Holder)" -ForegroundColor Yellow }
|
||||||
}
|
}
|
||||||
Write-ReceivedWarning $Log.Received
|
|
||||||
if ($Log.Locked.Count -eq 0 -and $Log.LockedByOther.Count -gt 0) {
|
if ($Log.Locked.Count -eq 0 -and $Log.LockedByOther.Count -gt 0) {
|
||||||
# «Уже захвачено мной» платформа не печатает вовсе, поэтому отличить его от
|
# «Уже захвачено мной» платформа не печатает вовсе, поэтому отличить его от
|
||||||
# «не захвачено» по логу нельзя — сверяем с тем, что просили. Заняты ВСЕ
|
# «не захвачено» по логу нельзя — сверяем с тем, что просили. Заняты ВСЕ
|
||||||
@@ -843,26 +844,32 @@ function Write-RepoVerdict {
|
|||||||
(@($requestedKeys | Where-Object { $blockedKeys -notcontains $_ }).Count -eq 0)
|
(@($requestedKeys | Where-Object { $blockedKeys -notcontains $_ }).Count -eq 0)
|
||||||
if ($allBlocked) {
|
if ($allBlocked) {
|
||||||
Write-Host "Захват не выполнен: все запрошенные объекты заняты." -ForegroundColor Red
|
Write-Host "Захват не выполнен: все запрошенные объекты заняты." -ForegroundColor Red
|
||||||
|
Write-ReceivedWarning $Log.Received
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
Write-Host "[warning] часть запрошенного занята другими; остальное уже было захвачено вами." -ForegroundColor Yellow
|
Write-Host "[warning] часть запрошенного занята другими; остальное уже было захвачено вами." -ForegroundColor Yellow
|
||||||
Write-Host " Захваченное можно править: код возврата 0 именно поэтому." -ForegroundColor Yellow
|
Write-Host " Захваченное можно править: код возврата 0 именно поэтому." -ForegroundColor Yellow
|
||||||
|
Write-ReceivedWarning $Log.Received
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
if ($Log.Locked.Count -eq 0 -and $PlatformExit -eq 0) {
|
if ($Log.Locked.Count -eq 0 -and $PlatformExit -eq 0) {
|
||||||
# Захват уже захваченного СОБОЙ: платформа не печатает ни блока операции, ни строк.
|
# Захват уже захваченного СОБОЙ: платформа не печатает ни блока операции, ни строк.
|
||||||
Write-Host "Объекты уже захвачены вами — изменений не потребовалось." -ForegroundColor Green
|
Write-Host "Объекты уже захвачены вами — изменений не потребовалось." -ForegroundColor Green
|
||||||
|
Write-ReceivedWarning $Log.Received
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
if ($Log.Locked.Count -eq 0) {
|
if ($Log.Locked.Count -eq 0) {
|
||||||
Write-Host "Захват не выполнен (код $PlatformExit)$(Get-ExitAnnotation $PlatformExit)" -ForegroundColor Red
|
Write-Host "Захват не выполнен (код $PlatformExit)$(Get-ExitAnnotation $PlatformExit)" -ForegroundColor Red
|
||||||
|
Write-ReceivedWarning $Log.Received
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
if ($Log.LockedByOther.Count -gt 0) {
|
if ($Log.LockedByOther.Count -gt 0) {
|
||||||
Write-Host "[warning] захват выполнен частично — перечисленные выше объекты остались у других пользователей." -ForegroundColor Yellow
|
Write-Host "[warning] захват выполнен частично — перечисленные выше объекты остались у других пользователей." -ForegroundColor Yellow
|
||||||
Write-Host " Захваченное можно править: код возврата 0 именно поэтому." -ForegroundColor Yellow
|
Write-Host " Захваченное можно править: код возврата 0 именно поэтому." -ForegroundColor Yellow
|
||||||
|
Write-ReceivedWarning $Log.Received
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
Write-ReceivedWarning $Log.Received
|
||||||
return $PlatformExit
|
return $PlatformExit
|
||||||
}
|
}
|
||||||
'unlock' {
|
'unlock' {
|
||||||
@@ -871,16 +878,16 @@ function Write-RepoVerdict {
|
|||||||
if ($Log.Modified.Count -gt 0) {
|
if ($Log.Modified.Count -gt 0) {
|
||||||
Write-Host "Отмена захвата не выполнена: у объектов есть локальные изменения ($($Log.Modified.Count)):" -ForegroundColor Red
|
Write-Host "Отмена захвата не выполнена: у объектов есть локальные изменения ($($Log.Modified.Count)):" -ForegroundColor Red
|
||||||
foreach ($n in $Log.Modified) { Write-Host " $n" -ForegroundColor Red }
|
foreach ($n in $Log.Modified) { Write-Host " $n" -ForegroundColor Red }
|
||||||
Write-Host "Поместите их (/db-repo commit) либо откажитесь от них: -Force -Yes перезапишет объекты версией из хранилища." -ForegroundColor Yellow
|
Write-Host "Поместите их (/db-repo commit) либо откажитесь от них: -Force перезапишет объекты версией из хранилища." -ForegroundColor Yellow
|
||||||
} else {
|
} else {
|
||||||
Write-Host "Отмена захвата не выполнена (код $PlatformExit)$(Get-ExitAnnotation $PlatformExit)" -ForegroundColor Red
|
Write-Host "Отмена захвата не выполнена (код $PlatformExit)$(Get-ExitAnnotation $PlatformExit)" -ForegroundColor Red
|
||||||
}
|
}
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
Write-RepoObjects "Захват отменён" $Log.Unlocked
|
Write-RepoObjects "Захват отменён" $Log.Unlocked
|
||||||
Write-RepoObjects "Не были захвачены" $Log.NotLocked 'Yellow'
|
Write-RepoObjects "Не были захвачены — снимать нечего" $Log.NotLocked 'Yellow'
|
||||||
Write-ReceivedWarning $Log.Received
|
|
||||||
if ($Log.Unlocked.Count -eq 0) { Write-Host "Изменений не потребовалось." -ForegroundColor Green }
|
if ($Log.Unlocked.Count -eq 0) { Write-Host "Изменений не потребовалось." -ForegroundColor Green }
|
||||||
|
Write-ReceivedWarning $Log.Received
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
'commit' {
|
'commit' {
|
||||||
@@ -888,10 +895,10 @@ function Write-RepoVerdict {
|
|||||||
# Платформа отдаёт голую «Ошибка помещения изменений объектов в хранилище» —
|
# Платформа отдаёт голую «Ошибка помещения изменений объектов в хранилище» —
|
||||||
# ни объекта, ни причины, одинаково для всех причин. Диагностику даём свою.
|
# ни объекта, ни причины, одинаково для всех причин. Диагностику даём свою.
|
||||||
Write-Host "Помещение не выполнено (код $PlatformExit)$(Get-ExitAnnotation $PlatformExit)" -ForegroundColor Red
|
Write-Host "Помещение не выполнено (код $PlatformExit)$(Get-ExitAnnotation $PlatformExit)" -ForegroundColor Red
|
||||||
Write-Host "Платформа не называет причину. Обычные причины, по убыванию частоты:" -ForegroundColor Yellow
|
Write-Host "Платформа не называет причину. Проверьте:" -ForegroundColor Yellow
|
||||||
Write-Host " - объект не захвачен вами (проверьте: /db-repo lock)" -ForegroundColor Yellow
|
Write-Host " - захвачен ли объект вами: /db-repo lock" -ForegroundColor Yellow
|
||||||
Write-Host " - объект захвачен другим пользователем" -ForegroundColor Yellow
|
Write-Host " - не держит ли его другой пользователь" -ForegroundColor Yellow
|
||||||
Write-Host " - у пользователя хранилища нет права на помещение" -ForegroundColor Yellow
|
Write-Host " - есть ли у пользователя хранилища право на помещение" -ForegroundColor Yellow
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
Write-RepoObjects "Помещено в хранилище" $Log.Committed
|
Write-RepoObjects "Помещено в хранилище" $Log.Committed
|
||||||
|
|||||||
@@ -621,7 +621,7 @@ def print_received_warning(received):
|
|||||||
if not received:
|
if not received:
|
||||||
return
|
return
|
||||||
print("")
|
print("")
|
||||||
print("[warning] локальная конфигурация изменена: из хранилища получено %d объект(ов):" % len(received))
|
print("[warning] локальная конфигурация изменена, получено объектов из хранилища: %d" % len(received))
|
||||||
for n in received:
|
for n in received:
|
||||||
print(" %s" % n)
|
print(" %s" % n)
|
||||||
owners = owner_objects(received)
|
owners = owner_objects(received)
|
||||||
@@ -726,12 +726,13 @@ def write_repo_verdict(cmd, log, platform_exit, requested, report_format="", out
|
|||||||
return 1
|
return 1
|
||||||
|
|
||||||
if cmd == "lock":
|
if cmd == "lock":
|
||||||
|
# Порядок вывода: факты, затем вердикт, и только потом совет. Совет длинный, и
|
||||||
|
# между фактами и вердиктом он прятал бы главную строку.
|
||||||
print_repo_objects("Захвачено", log["locked"])
|
print_repo_objects("Захвачено", log["locked"])
|
||||||
if log["locked_by_other"]:
|
if log["locked_by_other"]:
|
||||||
print("Не удалось захватить (%d):" % len(log["locked_by_other"]))
|
print("Не удалось захватить (%d):" % len(log["locked_by_other"]))
|
||||||
for o in log["locked_by_other"]:
|
for o in log["locked_by_other"]:
|
||||||
print(" %s — держит %s" % (o["name"], o["holder"]))
|
print(" %s — держит %s" % (o["name"], o["holder"]))
|
||||||
print_received_warning(log["received"])
|
|
||||||
if not log["locked"] and log["locked_by_other"]:
|
if not log["locked"] and log["locked_by_other"]:
|
||||||
# «Уже захвачено мной» платформа не печатает вовсе, поэтому отличить его от
|
# «Уже захвачено мной» платформа не печатает вовсе, поэтому отличить его от
|
||||||
# «не захвачено» по логу нельзя — сверяем с тем, что просили. Заняты ВСЕ
|
# «не захвачено» по логу нельзя — сверяем с тем, что просили. Заняты ВСЕ
|
||||||
@@ -741,21 +742,27 @@ def write_repo_verdict(cmd, log, platform_exit, requested, report_format="", out
|
|||||||
all_blocked = (not asked) or all(k in blocked for k in asked)
|
all_blocked = (not asked) or all(k in blocked for k in asked)
|
||||||
if all_blocked:
|
if all_blocked:
|
||||||
print("Захват не выполнен: все запрошенные объекты заняты.")
|
print("Захват не выполнен: все запрошенные объекты заняты.")
|
||||||
|
print_received_warning(log["received"])
|
||||||
return 1
|
return 1
|
||||||
print("[warning] часть запрошенного занята другими; остальное уже было захвачено вами.")
|
print("[warning] часть запрошенного занята другими; остальное уже было захвачено вами.")
|
||||||
print(" Захваченное можно править: код возврата 0 именно поэтому.")
|
print(" Захваченное можно править: код возврата 0 именно поэтому.")
|
||||||
|
print_received_warning(log["received"])
|
||||||
return 0
|
return 0
|
||||||
if not log["locked"] and platform_exit == 0:
|
if not log["locked"] and platform_exit == 0:
|
||||||
# Захват уже захваченного СОБОЙ: платформа не печатает ни блока операции, ни строк.
|
# Захват уже захваченного СОБОЙ: платформа не печатает ни блока операции, ни строк.
|
||||||
print("Объекты уже захвачены вами — изменений не потребовалось.")
|
print("Объекты уже захвачены вами — изменений не потребовалось.")
|
||||||
|
print_received_warning(log["received"])
|
||||||
return 0
|
return 0
|
||||||
if not log["locked"]:
|
if not log["locked"]:
|
||||||
print("Захват не выполнен (код %s)%s" % (platform_exit, describe_exit(platform_exit)))
|
print("Захват не выполнен (код %s)%s" % (platform_exit, describe_exit(platform_exit)))
|
||||||
|
print_received_warning(log["received"])
|
||||||
return 1
|
return 1
|
||||||
if log["locked_by_other"]:
|
if log["locked_by_other"]:
|
||||||
print("[warning] захват выполнен частично — перечисленные выше объекты остались у других пользователей.")
|
print("[warning] захват выполнен частично — перечисленные выше объекты остались у других пользователей.")
|
||||||
print(" Захваченное можно править: код возврата 0 именно поэтому.")
|
print(" Захваченное можно править: код возврата 0 именно поэтому.")
|
||||||
|
print_received_warning(log["received"])
|
||||||
return 0
|
return 0
|
||||||
|
print_received_warning(log["received"])
|
||||||
return platform_exit
|
return platform_exit
|
||||||
|
|
||||||
if cmd == "unlock":
|
if cmd == "unlock":
|
||||||
@@ -771,10 +778,10 @@ def write_repo_verdict(cmd, log, platform_exit, requested, report_format="", out
|
|||||||
print("Отмена захвата не выполнена (код %s)%s" % (platform_exit, describe_exit(platform_exit)))
|
print("Отмена захвата не выполнена (код %s)%s" % (platform_exit, describe_exit(platform_exit)))
|
||||||
return 1
|
return 1
|
||||||
print_repo_objects("Захват отменён", log["unlocked"])
|
print_repo_objects("Захват отменён", log["unlocked"])
|
||||||
print_repo_objects("Не были захвачены", log["not_locked"])
|
print_repo_objects("Не были захвачены — снимать нечего", log["not_locked"])
|
||||||
print_received_warning(log["received"])
|
|
||||||
if not log["unlocked"]:
|
if not log["unlocked"]:
|
||||||
print("Изменений не потребовалось.")
|
print("Изменений не потребовалось.")
|
||||||
|
print_received_warning(log["received"])
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
if cmd == "commit":
|
if cmd == "commit":
|
||||||
@@ -782,10 +789,10 @@ def write_repo_verdict(cmd, log, platform_exit, requested, report_format="", out
|
|||||||
# Платформа отдаёт голую «Ошибка помещения изменений объектов в хранилище» —
|
# Платформа отдаёт голую «Ошибка помещения изменений объектов в хранилище» —
|
||||||
# ни объекта, ни причины, одинаково для всех причин. Диагностику даём свою.
|
# ни объекта, ни причины, одинаково для всех причин. Диагностику даём свою.
|
||||||
print("Помещение не выполнено (код %s)%s" % (platform_exit, describe_exit(platform_exit)))
|
print("Помещение не выполнено (код %s)%s" % (platform_exit, describe_exit(platform_exit)))
|
||||||
print("Платформа не называет причину. Обычные причины, по убыванию частоты:")
|
print("Платформа не называет причину. Проверьте:")
|
||||||
print(" - объект не захвачен вами (проверьте: /db-repo lock)")
|
print(" - захвачен ли объект вами: /db-repo lock")
|
||||||
print(" - объект захвачен другим пользователем")
|
print(" - не держит ли его другой пользователь")
|
||||||
print(" - у пользователя хранилища нет права на помещение")
|
print(" - есть ли у пользователя хранилища право на помещение")
|
||||||
return 1
|
return 1
|
||||||
print_repo_objects("Помещено в хранилище", log["committed"])
|
print_repo_objects("Помещено в хранилище", log["committed"])
|
||||||
print_repo_objects("Без изменений — не помещались", log["unchanged"])
|
print_repo_objects("Без изменений — не помещались", log["unchanged"])
|
||||||
|
|||||||
Reference in New Issue
Block a user