diff --git a/.claude/skills/db-repo/SKILL.md b/.claude/skills/db-repo/SKILL.md index d7561a15c..e07529a2d 100644 --- a/.claude/skills/db-repo/SKILL.md +++ b/.claude/skills/db-repo/SKILL.md @@ -133,23 +133,22 @@ powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-repo.ps1" -Comma ## Результат -Код возврата отражает, достигнуто ли запрошенное состояние, а не факт изменения: «уже захвачено», -«обновлять нечего», «помещать нечего» — это успех. Частичный захват тоже успех: захваченное можно -править. +Нулевой код не означает, что что-то изменилось. Под нулём приходят «уже захвачено», «обновлять +нечего», «помещать нечего» и частичный захват — когда часть объектов занята другими, а остальное +захвачено и его можно править. -**Всегда читай текст вывода, а не только код.** Под нулевым кодом приходят «новая версия не -создана», «часть объектов занята другими» и список полученных из хранилища объектов, требующий -перевыгрузки. +**Читай текст вывода, а не только код.** Там же приходит список полученных из хранилища объектов, +который требует перевыгрузки перед правкой. ## Требуют подтверждения пользователя -Перед этими операциями **спроси подтверждение** — они необратимы: +Перед этими операциями **спроси подтверждение**: -| Операция | Что теряется | -|----------|--------------| -| `lock -All` | Ничего, но захватывает **всю конфигурацию**: на большой базе идёт долго и блокирует работу всей команде | -| `unlock -Force` | Локальные правки захваченных объектов | -| `disconnect` | Подключение базы к хранилищу, в том числе на стороне хранилища | +| Операция | Почему | +|----------|--------| +| `lock -All` | Захватывает **всю конфигурацию**: на большой базе идёт долго и блокирует работу всей команде | +| `unlock -Force` | Теряются локальные правки захваченных объектов | +| `disconnect` | Теряется подключение базы к хранилищу, в том числе на стороне хранилища | | `connect -ForceReplaceCfg` | Конфигурация базы заменяется конфигурацией из хранилища | `update` не выполнится, если у базы в реестре не объявлено `repository`, а реквизиты не заданы diff --git a/.claude/skills/db-repo/references/connect.md b/.claude/skills/db-repo/references/connect.md index 576d85a5f..53990b6db 100644 --- a/.claude/skills/db-repo/references/connect.md +++ b/.claude/skills/db-repo/references/connect.md @@ -13,9 +13,9 @@ powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-repo.ps1" -Comma На пустой базе `-ForceReplaceCfg` не нужен. -**Переподключение** базы, которая уже была подключена, обычно требует обоих флагов: конфигурация -в базе не пустая (`-ForceReplaceCfg`), а за пользователем хранилища всё ещё числится эта база -(`-ForceBindAlreadyBindedUser`). Навык подсказывает оба по сообщению платформы. +**Переподключение** базы, которая уже была подключена, требует обоих флагов: конфигурация в базе +не пустая (`-ForceReplaceCfg`), а за пользователем хранилища всё ещё числится эта база +(`-ForceBindAlreadyBindedUser`). После подключения добавь `repository` в запись базы в `.v8-project.json` — иначе остальные подкоманды придётся каждый раз звать с явными реквизитами, а `update` откажется работать. @@ -34,6 +34,5 @@ powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-repo.ps1" -Comma ## Расширения -У расширения своё хранилище: `-Extension "<Имя>"` вместе с путём именно к нему. Неверная пара -«путь основного хранилища + `-Extension`» даёт ошибку `Конфигурация связана с другим хранилищем` -и ничего не ломает. +У расширения своё хранилище: `-Extension "<Имя>"` указывай вместе с путём именно к нему, а не +к хранилищу основной конфигурации. diff --git a/.claude/skills/db-repo/references/history.md b/.claude/skills/db-repo/references/history.md index be125b7e2..795f078c6 100644 --- a/.claude/skills/db-repo/references/history.md +++ b/.claude/skills/db-repo/references/history.md @@ -8,7 +8,7 @@ powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-repo.ps1" -Comma | Параметр | Описание | |----------|----------| -| `-OutputFile <путь>` | Куда положить отчёт. Без него — во временный файл, отчёт всё равно печатается | +| `-OutputFile <путь>` | Куда сохранить отчёт. Необязателен | | `-NBegin <номер>` | С какой версии. `-1` — только последняя | | `-NEnd <номер>` | По какую версию | | `-DateBegin` / `-DateEnd` | Границы по датам | @@ -16,25 +16,11 @@ powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-repo.ps1" -Comma | `-GroupByComment` | Группировать по комментарию | | `-ReportFormat ` | По умолчанию `txt` | -`txt` — табуляция-разделённый и легко читается: +`txt` — с разделителем-табуляцией, разбирается построчно. -``` -Версия: 2 -Пользователь: Admin -Дата создания: 22.08.2026 -Комментарий: -Добавлен реквизит Вес - - Изменены 2 - Справочник.Номенклатура -``` - -> На боевом хранилище полный отчёт строить не надо — тысячи версий. Нужна головная версия — -> `-NBegin -1`. - -Короткий отчёт печатается в вывод целиком, длинный — не печатается вовсе: называется путь к файлу -и способы сузить выборку. Обрезанный отчёт по версиям читался бы как полный ответ, и по куску -можно было бы заключить, что объект не менялся. +> На боевом хранилище полный отчёт строить не надо — тысячи версий. Нужна головная +> версия — `-NBegin -1`. Длинный отчёт в вывод не печатается: сузьте выборку +> параметрами ниже. ## dump-cfg — выгрузить версию в CF diff --git a/.claude/skills/db-repo/scripts/db-repo.ps1 b/.claude/skills/db-repo/scripts/db-repo.ps1 index 66c2747fd..594791769 100644 --- a/.claude/skills/db-repo/scripts/db-repo.ps1 +++ b/.claude/skills/db-repo/scripts/db-repo.ps1 @@ -1,4 +1,4 @@ -# db-repo v1.9 — 1C configuration repository operations +# db-repo v1.10 — 1C configuration repository operations # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills # NB: движок только 1cv8 — ibcmd работу с хранилищем не поддерживает (нет такого режима). <# @@ -1225,9 +1225,12 @@ try { # «Соединение не установлено» у сетевого хранилища означает не отсутствие реквизитов, # а недоступный сервер — трактовка «добавьте repository» увела бы не туда. if ($verdict -ne 0 -and $logText -match 'Соединение с хранилищем конфигурации не установлено') { - if ($repo.Path -match '^(tcp|http)s?://') { + if ($repo.Path -match '^tcp://') { Write-Host "[hint] сервер хранилища недоступен по адресу $($repo.Path)." -ForegroundColor Yellow - Write-Host " Проверьте, запущен ли crserver и верен ли порт (по умолчанию 1542)." -ForegroundColor Yellow + Write-Host " Проверьте, запущен ли сервер хранилища и верен ли порт (по умолчанию 1542)." -ForegroundColor Yellow + } elseif ($repo.Path -match '^https?://') { + Write-Host "[hint] хранилище недоступно по адресу $($repo.Path)." -ForegroundColor Yellow + Write-Host " Проверьте веб-сервер и публикацию хранилища." -ForegroundColor Yellow } else { Write-Host "[hint] хранилище недоступно по пути $($repo.Path) — проверьте путь и реквизиты." -ForegroundColor Yellow } diff --git a/.claude/skills/db-repo/scripts/db-repo.py b/.claude/skills/db-repo/scripts/db-repo.py index bc804baa0..de446d84e 100644 --- a/.claude/skills/db-repo/scripts/db-repo.py +++ b/.claude/skills/db-repo/scripts/db-repo.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# db-repo v1.9 — 1C configuration repository operations +# db-repo v1.10 — 1C configuration repository operations # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills # NB: движок только 1cv8 — ibcmd работу с хранилищем не поддерживает (нет такого режима). """Работа с хранилищем конфигурации 1С. @@ -1178,9 +1178,12 @@ def main(): # «Соединение не установлено» у сетевого хранилища означает не отсутствие реквизитов, # а недоступный сервер — трактовка «добавьте repository» увела бы не туда. if verdict != 0 and "Соединение с хранилищем конфигурации не установлено" in log_text: - if re.match(r"^(tcp|http)s?://", repo["path"] or ""): + if re.match(r"^tcp://", repo["path"] or ""): print("[hint] сервер хранилища недоступен по адресу %s." % repo["path"]) - print(" Проверьте, запущен ли crserver и верен ли порт (по умолчанию 1542).") + print(" Проверьте, запущен ли сервер хранилища и верен ли порт (по умолчанию 1542).") + elif re.match(r"^https?://", repo["path"] or ""): + print("[hint] хранилище недоступно по адресу %s." % repo["path"]) + print(" Проверьте веб-сервер и публикацию хранилища.") else: print("[hint] хранилище недоступно по пути %s — проверьте путь и реквизиты." % repo["path"])