mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-09-12 21:20:52 +03:00
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:
co-authored by
Claude Opus 5
parent
3cdba1f70c
commit
1c74843c05
@@ -106,7 +106,7 @@ allowed-tools:
|
||||
|
||||
| Поле | Тип | Обязательное | Описание |
|
||||
|------|-----|:------------:|----------|
|
||||
| `repository.path` | string | да | Каталог хранилища или адрес сервера хранилища |
|
||||
| `repository.path` | string | да | Каталог хранилища или `tcp://<хост>[:<порт>]/<имя>` |
|
||||
| `repository.user` | string | нет | Пользователь **хранилища**. Не наследуется от `user` базы |
|
||||
| `repository.password` | string | нет | Пароль пользователя хранилища |
|
||||
|
||||
@@ -120,11 +120,12 @@ allowed-tools:
|
||||
|
||||
Пароль хранилища — такой же секрет, как `password` базы; `.v8-project.json` в `.gitignore`.
|
||||
|
||||
> **Сетевое хранилище.** Путь передаётся платформе как есть, поэтому подходит любая форма,
|
||||
> которую она принимает, — в том числе адрес сервера хранилища. Конкретный синтаксис в
|
||||
> документации, которой мы располагаем (7.4.15 «Команды работы с хранилищем конфигурации»,
|
||||
> «Приложение 4»), не описан, и на серверном хранилище навык не проверялся: под рукой нет
|
||||
> сервера хранилища. Файловое хранилище проверено полностью.
|
||||
> **Сетевое хранилище.** Адрес — `tcp://<хост>[:<порт>]/<имя>`, порт по умолчанию 1542; хранилище
|
||||
> обслуживает сервер хранилища (`crserver`). В документации, которой мы располагаем (7.4.15
|
||||
> «Команды работы с хранилищем конфигурации», «Приложение 4»), эта форма не описана — проверена
|
||||
> на стенде 8.3.23: цикл, файл списка объектов и администрирование работают так же, как на
|
||||
> файловом. Недоступный сервер даёт «Соединение с хранилищем конфигурации не установлено» — то же
|
||||
> сообщение, что и при отсутствии реквизитов.
|
||||
|
||||
## Алгоритм разрешения базы данных
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# db-load-git v1.23 — Load Git changes into 1C database
|
||||
# db-load-git v1.24 — Load Git changes into 1C database
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
# NB: *nix-раскладку платформы (/opt/1cv8/<ver>/1cv8, без .exe) знает только .py-порт — PS на *nix не исполняется.
|
||||
<#
|
||||
@@ -238,8 +238,9 @@ function Write-RepositoryHints {
|
||||
}
|
||||
}
|
||||
if ($LogText -match 'Соединение с хранилищем конфигурации не установлено') {
|
||||
Write-Host "[hint] база подключена к хранилищу, но его реквизиты неизвестны." -ForegroundColor Yellow
|
||||
Write-Host " Добавьте `"repository`" в запись базы в .v8-project.json (см. /db-list)." -ForegroundColor Yellow
|
||||
Write-Host "[hint] соединение с хранилищем не установлено. Две причины:" -ForegroundColor Yellow
|
||||
Write-Host " реквизиты неизвестны — добавьте `"repository`" в запись базы в .v8-project.json (см. /db-list);" -ForegroundColor Yellow
|
||||
Write-Host " либо хранилище недоступно — для сетевого проверьте сервер хранилища и порт." -ForegroundColor Yellow
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env python3
|
||||
# db-load-git v1.23 — Load Git changes into 1C database
|
||||
# db-load-git v1.24 — Load Git changes into 1C database
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
|
||||
import argparse
|
||||
@@ -177,8 +177,9 @@ def write_repository_hints(log_text):
|
||||
else:
|
||||
print('[hint] объект не захвачен в хранилище: /db-repo lock <база> -Objects "%s"' % obj)
|
||||
if "Соединение с хранилищем конфигурации не установлено" in log_text:
|
||||
print("[hint] база подключена к хранилищу, но его реквизиты неизвестны.")
|
||||
print(' Добавьте "repository" в запись базы в .v8-project.json (см. /db-list).')
|
||||
print("[hint] соединение с хранилищем не установлено. Две причины:")
|
||||
print(' реквизиты неизвестны — добавьте "repository" в запись базы в .v8-project.json (см. /db-list);')
|
||||
print(" либо хранилище недоступно — для сетевого проверьте сервер хранилища и порт.")
|
||||
|
||||
|
||||
def arg_key_match(token, key):
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# db-load-xml v1.24 — Load 1C configuration from XML files
|
||||
# db-load-xml v1.25 — Load 1C configuration from XML files
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
# NB: *nix-раскладку платформы (/opt/1cv8/<ver>/1cv8, без .exe) знает только .py-порт — PS на *nix не исполняется.
|
||||
<#
|
||||
@@ -232,8 +232,9 @@ function Write-RepositoryHints {
|
||||
}
|
||||
}
|
||||
if ($LogText -match 'Соединение с хранилищем конфигурации не установлено') {
|
||||
Write-Host "[hint] база подключена к хранилищу, но его реквизиты неизвестны." -ForegroundColor Yellow
|
||||
Write-Host " Добавьте `"repository`" в запись базы в .v8-project.json (см. /db-list)." -ForegroundColor Yellow
|
||||
Write-Host "[hint] соединение с хранилищем не установлено. Две причины:" -ForegroundColor Yellow
|
||||
Write-Host " реквизиты неизвестны — добавьте `"repository`" в запись базы в .v8-project.json (см. /db-list);" -ForegroundColor Yellow
|
||||
Write-Host " либо хранилище недоступно — для сетевого проверьте сервер хранилища и порт." -ForegroundColor Yellow
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env python3
|
||||
# db-load-xml v1.24 — Load 1C configuration from XML files
|
||||
# db-load-xml v1.25 — Load 1C configuration from XML files
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
|
||||
import argparse
|
||||
@@ -177,8 +177,9 @@ def write_repository_hints(log_text):
|
||||
else:
|
||||
print('[hint] объект не захвачен в хранилище: /db-repo lock <база> -Objects "%s"' % obj)
|
||||
if "Соединение с хранилищем конфигурации не установлено" in log_text:
|
||||
print("[hint] база подключена к хранилищу, но его реквизиты неизвестны.")
|
||||
print(' Добавьте "repository" в запись базы в .v8-project.json (см. /db-list).')
|
||||
print("[hint] соединение с хранилищем не установлено. Две причины:")
|
||||
print(' реквизиты неизвестны — добавьте "repository" в запись базы в .v8-project.json (см. /db-list);')
|
||||
print(" либо хранилище недоступно — для сетевого проверьте сервер хранилища и порт.")
|
||||
|
||||
|
||||
def arg_key_match(token, key):
|
||||
|
||||
@@ -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 обратный слэш не спецсимвол: два символа дают два слэша.
|
||||
|
||||
@@ -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("\\", "\\\\")
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
// работать с базой, подключённой к хранилищу: платформа не примет от них ни одной
|
||||
// операции конфигуратора.
|
||||
"repository": {
|
||||
"path": "\\\\srv01\\repo\\MyApp", // каталог хранилища или адрес сервера хранилища
|
||||
"path": "\\\\srv01\\repo\\MyApp", // каталог или tcp://srv01:1542/MyApp
|
||||
"user": "Ivanov",
|
||||
"password": ""
|
||||
},
|
||||
@@ -115,7 +115,7 @@
|
||||
|
||||
| Поле | Тип | Обяз. | Описание |
|
||||
|------|-----|:-----:|----------|
|
||||
| `repository.path` | string | да | Каталог хранилища или адрес сервера хранилища |
|
||||
| `repository.path` | string | да | Каталог хранилища или `tcp://<хост>[:<порт>]/<имя>` |
|
||||
| `repository.user` | string | нет | Пользователь хранилища. **Не наследуется** от `user` базы — задаётся явно |
|
||||
| `repository.password` | string | нет | Пароль пользователя хранилища |
|
||||
|
||||
@@ -129,11 +129,12 @@
|
||||
|
||||
Пароль хранилища — такой же секрет, как `password` базы; `.v8-project.json` в `.gitignore`.
|
||||
|
||||
> **Сетевое хранилище.** Путь передаётся платформе как есть, поэтому подходит любая форма,
|
||||
> которую она принимает, — в том числе адрес сервера хранилища. Конкретный синтаксис в
|
||||
> документации, которой мы располагаем (7.4.15 «Команды работы с хранилищем конфигурации»,
|
||||
> «Приложение 4»), не описан, и на серверном хранилище навык не проверялся: под рукой нет
|
||||
> сервера хранилища. Файловое хранилище проверено полностью.
|
||||
> **Сетевое хранилище.** Адрес — `tcp://<хост>[:<порт>]/<имя>`, порт по умолчанию 1542; хранилище
|
||||
> обслуживает сервер хранилища (`crserver`). В документации, которой мы располагаем (7.4.15
|
||||
> «Команды работы с хранилищем конфигурации», «Приложение 4»), эта форма не описана — проверена
|
||||
> на стенде 8.3.23: цикл, файл списка объектов и администрирование работают так же, как на
|
||||
> файловом. Недоступный сервер даёт «Соединение с хранилищем конфигурации не установлено» — то же
|
||||
> сообщение, что и при отсутствии реквизитов.
|
||||
|
||||
`/db-repo update` отказывается работать, если у базы не объявлено `repository` и реквизиты не
|
||||
переданы явно: на базе, **не** подключённой к хранилищу, эта команда молча заменяет всю
|
||||
|
||||
Reference in New Issue
Block a user