mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-26 21:19:42 +03:00
fix(db-repo): длинный отчёт по версиям не печатать вовсе, а не обрезать
Печать отчёта целиком стоит модели контекста, но опаснее другое: обрезанный отчёт по версиям читается как полный ответ. По куску легко заключить, что объект не менялся, — в отличие от списка объектов, где неполнота очевидна. Короткий отчёт (до ста строк) печатается целиком, длинный не печатается совсем: называется путь к файлу и способы сузить выборку. Порог не теоретический — даже стенд из девяти версий даёт 124 строки. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
ac20d95fea
commit
4f6bfd75eb
@@ -32,6 +32,10 @@ powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-repo.ps1" -Comma
|
||||
> На боевом хранилище полный отчёт строить не надо — тысячи версий. Нужна головная версия —
|
||||
> `-NBegin -1`.
|
||||
|
||||
Короткий отчёт печатается в вывод целиком, длинный — не печатается вовсе: называется путь к файлу
|
||||
и способы сузить выборку. Обрезанный отчёт по версиям читался бы как полный ответ, и по куску
|
||||
можно было бы заключить, что объект не менялся.
|
||||
|
||||
## dump-cfg — выгрузить версию в CF
|
||||
|
||||
```powershell
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# db-repo v1.7 — 1C configuration repository operations
|
||||
# db-repo v1.8 — 1C configuration repository operations
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
# NB: движок только 1cv8 — ibcmd работу с хранилищем не поддерживает (нет такого режима).
|
||||
<#
|
||||
@@ -985,14 +985,19 @@ function Write-RepoVerdict {
|
||||
if ($Cmd -eq 'report' -and $ReportFormat -eq 'txt' -and (Test-Path $OutputFile)) {
|
||||
$txt = [System.Text.Encoding]::UTF8.GetString([System.IO.File]::ReadAllBytes($OutputFile))
|
||||
if ($txt.Length -gt 0 -and $txt[0] -eq [char]0xFEFF) { $txt = $txt.Substring(1) }
|
||||
$lines = @($txt -split "`r?`n")
|
||||
$limit = 200
|
||||
Write-Host "--- $OutputFile ---"
|
||||
Write-Host (($lines | Select-Object -First $limit) -join [Environment]::NewLine)
|
||||
if ($lines.Count -gt $limit) {
|
||||
Write-Host "[... показаны первые $limit строк из $($lines.Count); полный отчёт в файле ...]" -ForegroundColor Yellow
|
||||
$lines = @($txt.TrimEnd() -split "`r?`n")
|
||||
# Короткий отчёт печатаем целиком, длинный — не печатаем ВОВСЕ. Обрезанный отчёт
|
||||
# по версиям опаснее длинного: он читается как полный ответ, и по куску легко
|
||||
# заключить «объект не менялся». Список объектов при обрезке хотя бы очевидно неполон.
|
||||
if ($lines.Count -le 100) {
|
||||
Write-Host "--- $OutputFile ---"
|
||||
Write-Host ($lines -join [Environment]::NewLine)
|
||||
Write-Host "--- End ---"
|
||||
} else {
|
||||
Write-Host "Отчёт не печатается целиком (строк: $($lines.Count)): $OutputFile" -ForegroundColor Yellow
|
||||
Write-Host "Сузьте выборку: -NBegin -1 (только последняя версия), -NBegin/-NEnd (диапазон)," -ForegroundColor Yellow
|
||||
Write-Host "-DateBegin/-DateEnd (период), -GroupByObject (сводка по объектам)." -ForegroundColor Yellow
|
||||
}
|
||||
Write-Host "--- End ---"
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env python3
|
||||
# db-repo v1.7 — 1C configuration repository operations
|
||||
# db-repo v1.8 — 1C configuration repository operations
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
# NB: движок только 1cv8 — ibcmd работу с хранилищем не поддерживает (нет такого режима).
|
||||
"""Работа с хранилищем конфигурации 1С.
|
||||
@@ -865,13 +865,18 @@ def write_repo_verdict(cmd, log, platform_exit, requested, report_format="", out
|
||||
print("Команда '%s' выполнена." % cmd)
|
||||
if cmd == "report" and report_format == "txt" and os.path.exists(output_file):
|
||||
with open(output_file, encoding="utf-8-sig") as f:
|
||||
lines = f.read().splitlines()
|
||||
limit = 200
|
||||
print("--- %s ---" % output_file)
|
||||
print("\n".join(lines[:limit]))
|
||||
if len(lines) > limit:
|
||||
print("[... показаны первые %d строк из %d; полный отчёт в файле ...]" % (limit, len(lines)))
|
||||
print("--- End ---")
|
||||
lines = f.read().rstrip().splitlines()
|
||||
# Короткий отчёт печатаем целиком, длинный — не печатаем ВОВСЕ. Обрезанный отчёт
|
||||
# по версиям опаснее длинного: он читается как полный ответ, и по куску легко
|
||||
# заключить «объект не менялся». Список объектов при обрезке хотя бы очевидно неполон.
|
||||
if len(lines) <= 100:
|
||||
print("--- %s ---" % output_file)
|
||||
print(chr(10).join(lines))
|
||||
print("--- End ---")
|
||||
else:
|
||||
print("Отчёт не печатается целиком (строк: %d): %s" % (len(lines), output_file))
|
||||
print("Сузьте выборку: -NBegin -1 (только последняя версия), -NBegin/-NEnd (диапазон),")
|
||||
print("-DateBegin/-DateEnd (период), -GroupByObject (сводка по объектам).")
|
||||
return 0
|
||||
|
||||
def main():
|
||||
|
||||
Reference in New Issue
Block a user