feat(db-repo): сетевое хранилище проверено, различаем недоступный сервер

Установлен crserver 8.3.23, поднят на порту 1542 — сетевое хранилище перестало
быть непроверенным местом. Адрес tcp://<хост>[:<порт>]/<имя>, порт по умолчанию
1542; хранилище создаётся сервером по требованию. Весь цикл, файл списка
объектов и администрирование работают так же, как на файловом, и одинаково в
обоих портах. Отдельного поведения у сетевого хранилища не обнаружено.

Нашлась двусмысленность: недоступный сервер даёт «Соединение с хранилищем
конфигурации не установлено» — ровно то же сообщение, что и отсутствие
реквизитов. Прежняя подсказка «добавьте repository в реестр» в сетевом случае
уводила не туда. Теперь db-repo различает по схеме адреса и советует проверить
сервер и порт, а подсказка db-load-xml и db-load-git называет обе причины.

Документация больше не оговаривается «не проверено»: форма адреса подтверждена
на стенде.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-08-23 14:07:10 +03:00
co-authored by Claude Opus 5
parent 3cdba1f70c
commit 1c74843c05
8 changed files with 54 additions and 27 deletions
+12 -1
View File
@@ -1,4 +1,4 @@
# db-repo v1.8 — 1C configuration repository operations
# db-repo v1.9 — 1C configuration repository operations
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
# NB: движок только 1cv8 — ibcmd работу с хранилищем не поддерживает (нет такого режима).
<#
@@ -1222,6 +1222,17 @@ try {
}
# Реестр — не формальность: без repository реквизиты придётся передавать в каждом вызове,
# а update откажется работать вовсе. Модель об этом не вспомнит, поэтому даём готовый блок.
# «Соединение не установлено» у сетевого хранилища означает не отсутствие реквизитов,
# а недоступный сервер — трактовка «добавьте repository» увела бы не туда.
if ($verdict -ne 0 -and $logText -match 'Соединение с хранилищем конфигурации не установлено') {
if ($repo.Path -match '^(tcp|http)s?://') {
Write-Host "[hint] сервер хранилища недоступен по адресу $($repo.Path)." -ForegroundColor Yellow
Write-Host " Проверьте, запущен ли crserver и верен ли порт (по умолчанию 1542)." -ForegroundColor Yellow
} else {
Write-Host "[hint] хранилище недоступно по пути $($repo.Path) — проверьте путь и реквизиты." -ForegroundColor Yellow
}
}
# Признак — что путь задали аргументом: значит в реестре его нет (или он другой).
if ($verdict -eq 0 -and @('create', 'connect') -contains $cmd -and $RepositoryPath) {
# В строке замены -replace обратный слэш не спецсимвол: два символа дают два слэша.
+11 -1
View File
@@ -1,5 +1,5 @@
#!/usr/bin/env python3
# db-repo v1.8 — 1C configuration repository operations
# db-repo v1.9 — 1C configuration repository operations
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
# NB: движок только 1cv8 — ibcmd работу с хранилищем не поддерживает (нет такого режима).
"""Работа с хранилищем конфигурации 1С.
@@ -1175,6 +1175,16 @@ def main():
print("--- End ---")
# Реестр — не формальность: без repository реквизиты придётся передавать в каждом вызове,
# а update откажется работать вовсе. Модель об этом не вспомнит, поэтому даём готовый блок.
# «Соединение не установлено» у сетевого хранилища означает не отсутствие реквизитов,
# а недоступный сервер — трактовка «добавьте repository» увела бы не туда.
if verdict != 0 and "Соединение с хранилищем конфигурации не установлено" in log_text:
if re.match(r"^(tcp|http)s?://", repo["path"] or ""):
print("[hint] сервер хранилища недоступен по адресу %s." % repo["path"])
print(" Проверьте, запущен ли crserver и верен ли порт (по умолчанию 1542).")
else:
print("[hint] хранилище недоступно по пути %s — проверьте путь и реквизиты."
% repo["path"])
# Признак — что путь задали аргументом: значит в реестре его нет (или он другой).
if verdict == 0 and cmd in ("create", "connect") and args.RepositoryPath:
json_path = repo["path"].replace("\\", "\\\\")