docs(db-repo): в инструкциях только применение, http отделён от tcp

Перечитал изменённые инструкции свежим взглядом и убрал всё, что описывает
поведение навыка вместо способа им пользоваться: образец вывода отчёта (модель
увидит настоящий), фразу «навык подсказывает оба флага», объяснение, почему
длинный отчёт не печатается, и заверение, что неверная пара путь+расширение
ничего не ломает. Осталось действие: как назвать, что указать, чего ждать от
кода возврата.

Столбец «Что теряется» переименован в «Почему»: у lock -All не теряется ничего,
и строка «Ничего, но…» в таком столбце читалась криво.

Подсказка о недоступном хранилище разделена по схеме адреса: tcp ведёт к
серверу хранилища и порту, http — к веб-серверу и публикации. Прежний общий
текст советовал бы проверять сервер хранилища и порт 1542 для http-адреса, где
это неверно.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-08-23 14:14:18 +03:00
co-authored by Claude Opus 5
parent 8edacf39c8
commit 24579c2580
5 changed files with 33 additions and 43 deletions
+11 -12
View File
@@ -133,23 +133,22 @@ powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-repo.ps1" -Comma
## Результат ## Результат
Код возврата отражает, достигнуто ли запрошенное состояние, а не факт изменения: «уже захвачено», Нулевой код не означает, что что-то изменилось. Под нулём приходят «уже захвачено», «обновлять
«обновлять нечего», «помещать нечего» — это успех. Частичный захват тоже успех: захваченное можно нечего», «помещать нечего» и частичный захват — когда часть объектов занята другими, а остальное
править. захвачено и его можно править.
**Всегда читай текст вывода, а не только код.** Под нулевым кодом приходят «новая версия не **Читай текст вывода, а не только код.** Там же приходит список полученных из хранилища объектов,
создана», «часть объектов занята другими» и список полученных из хранилища объектов, требующий который требует перевыгрузки перед правкой.
перевыгрузки.
## Требуют подтверждения пользователя ## Требуют подтверждения пользователя
Перед этими операциями **спроси подтверждение** — они необратимы: Перед этими операциями **спроси подтверждение**:
| Операция | Что теряется | | Операция | Почему |
|----------|--------------| |----------|--------|
| `lock -All` | Ничего, но захватывает **всю конфигурацию**: на большой базе идёт долго и блокирует работу всей команде | | `lock -All` | Захватывает **всю конфигурацию**: на большой базе идёт долго и блокирует работу всей команде |
| `unlock -Force` | Локальные правки захваченных объектов | | `unlock -Force` | Теряются локальные правки захваченных объектов |
| `disconnect` | Подключение базы к хранилищу, в том числе на стороне хранилища | | `disconnect` | Теряется подключение базы к хранилищу, в том числе на стороне хранилища |
| `connect -ForceReplaceCfg` | Конфигурация базы заменяется конфигурацией из хранилища | | `connect -ForceReplaceCfg` | Конфигурация базы заменяется конфигурацией из хранилища |
`update` не выполнится, если у базы в реестре не объявлено `repository`, а реквизиты не заданы `update` не выполнится, если у базы в реестре не объявлено `repository`, а реквизиты не заданы
+5 -6
View File
@@ -13,9 +13,9 @@ powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-repo.ps1" -Comma
На пустой базе `-ForceReplaceCfg` не нужен. На пустой базе `-ForceReplaceCfg` не нужен.
**Переподключение** базы, которая уже была подключена, обычно требует обоих флагов: конфигурация **Переподключение** базы, которая уже была подключена, требует обоих флагов: конфигурация в базе
в базе не пустая (`-ForceReplaceCfg`), а за пользователем хранилища всё ещё числится эта база не пустая (`-ForceReplaceCfg`), а за пользователем хранилища всё ещё числится эта база
(`-ForceBindAlreadyBindedUser`). Навык подсказывает оба по сообщению платформы. (`-ForceBindAlreadyBindedUser`).
После подключения добавь `repository` в запись базы в `.v8-project.json` — иначе остальные После подключения добавь `repository` в запись базы в `.v8-project.json` — иначе остальные
подкоманды придётся каждый раз звать с явными реквизитами, а `update` откажется работать. подкоманды придётся каждый раз звать с явными реквизитами, а `update` откажется работать.
@@ -34,6 +34,5 @@ powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-repo.ps1" -Comma
## Расширения ## Расширения
У расширения своё хранилище: `-Extension "<Имя>"` вместе с путём именно к нему. Неверная пара У расширения своё хранилище: `-Extension "<Имя>"` указывай вместе с путём именно к нему, а не
«путь основного хранилища + `-Extension`» даёт ошибку `Конфигурация связана с другим хранилищем` к хранилищу основной конфигурации.
и ничего не ломает.
+5 -19
View File
@@ -8,7 +8,7 @@ powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-repo.ps1" -Comma
| Параметр | Описание | | Параметр | Описание |
|----------|----------| |----------|----------|
| `-OutputFile <путь>` | Куда положить отчёт. Без него — во временный файл, отчёт всё равно печатается | | `-OutputFile <путь>` | Куда сохранить отчёт. Необязателен |
| `-NBegin <номер>` | С какой версии. `-1` — только последняя | | `-NBegin <номер>` | С какой версии. `-1` — только последняя |
| `-NEnd <номер>` | По какую версию | | `-NEnd <номер>` | По какую версию |
| `-DateBegin` / `-DateEnd` | Границы по датам | | `-DateBegin` / `-DateEnd` | Границы по датам |
@@ -16,25 +16,11 @@ powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-repo.ps1" -Comma
| `-GroupByComment` | Группировать по комментарию | | `-GroupByComment` | Группировать по комментарию |
| `-ReportFormat <txt\|mxl>` | По умолчанию `txt` | | `-ReportFormat <txt\|mxl>` | По умолчанию `txt` |
`txt`табуляция-разделённый и легко читается: `txt`с разделителем-табуляцией, разбирается построчно.
``` > На боевом хранилище полный отчёт строить не надо — тысячи версий. Нужна головная
Версия: 2 > версия — `-NBegin -1`. Длинный отчёт в вывод не печатается: сузьте выборку
Пользователь: Admin > параметрами ниже.
Дата создания: 22.08.2026
Комментарий:
Добавлен реквизит Вес
Изменены 2
Справочник.Номенклатура
```
> На боевом хранилище полный отчёт строить не надо — тысячи версий. Нужна головная версия —
> `-NBegin -1`.
Короткий отчёт печатается в вывод целиком, длинный — не печатается вовсе: называется путь к файлу
и способы сузить выборку. Обрезанный отчёт по версиям читался бы как полный ответ, и по куску
можно было бы заключить, что объект не менялся.
## dump-cfg — выгрузить версию в CF ## dump-cfg — выгрузить версию в CF
+6 -3
View File
@@ -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 # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
# NB: движок только 1cv8 — ibcmd работу с хранилищем не поддерживает (нет такого режима). # NB: движок только 1cv8 — ibcmd работу с хранилищем не поддерживает (нет такого режима).
<# <#
@@ -1225,9 +1225,12 @@ try {
# «Соединение не установлено» у сетевого хранилища означает не отсутствие реквизитов, # «Соединение не установлено» у сетевого хранилища означает не отсутствие реквизитов,
# а недоступный сервер — трактовка «добавьте repository» увела бы не туда. # а недоступный сервер — трактовка «добавьте repository» увела бы не туда.
if ($verdict -ne 0 -and $logText -match 'Соединение с хранилищем конфигурации не установлено') { 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 "[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 { } else {
Write-Host "[hint] хранилище недоступно по пути $($repo.Path) — проверьте путь и реквизиты." -ForegroundColor Yellow Write-Host "[hint] хранилище недоступно по пути $($repo.Path) — проверьте путь и реквизиты." -ForegroundColor Yellow
} }
+6 -3
View File
@@ -1,5 +1,5 @@
#!/usr/bin/env python3 #!/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 # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
# NB: движок только 1cv8 — ibcmd работу с хранилищем не поддерживает (нет такого режима). # NB: движок только 1cv8 — ibcmd работу с хранилищем не поддерживает (нет такого режима).
"""Работа с хранилищем конфигурации 1С. """Работа с хранилищем конфигурации 1С.
@@ -1178,9 +1178,12 @@ def main():
# «Соединение не установлено» у сетевого хранилища означает не отсутствие реквизитов, # «Соединение не установлено» у сетевого хранилища означает не отсутствие реквизитов,
# а недоступный сервер — трактовка «добавьте repository» увела бы не туда. # а недоступный сервер — трактовка «добавьте repository» увела бы не туда.
if verdict != 0 and "Соединение с хранилищем конфигурации не установлено" in log_text: 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("[hint] сервер хранилища недоступен по адресу %s." % repo["path"])
print(" Проверьте, запущен ли crserver и верен ли порт (по умолчанию 1542).") print(" Проверьте, запущен ли сервер хранилища и верен ли порт (по умолчанию 1542).")
elif re.match(r"^https?://", repo["path"] or ""):
print("[hint] хранилище недоступно по адресу %s." % repo["path"])
print(" Проверьте веб-сервер и публикацию хранилища.")
else: else:
print("[hint] хранилище недоступно по пути %s — проверьте путь и реквизиты." print("[hint] хранилище недоступно по пути %s — проверьте путь и реквизиты."
% repo["path"]) % repo["path"])