Управление реестром баз данных 1С (.v8-project.json). Используй когда пользователь говорит про базы данных, список баз, "добавь базу", "какие базы есть"
Installs into .claude/skills of the current project.
Are you the author of 1c Db List?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/desko77-1c-db-list)
---
name: 1c-db-list
description: Управление реестром баз данных 1С (.v8-project.json). Используй когда пользователь говорит про базы данных, список баз, "добавь базу", "какие базы есть"
argument-hint: "[add|remove|show]"
allowed-tools:
- Read
- Write
- Glob
- AskUserQuestion
---
# /db-list - Управление реестром баз данных
Управляет файлом `.v8-project.json` - реестром информационных баз проекта. Файл хранит параметры подключения, алиасы, привязку к веткам Git.
## Usage
```
/db-list - показать список баз
/db-list add - добавить базу (интерактивно)
/db-list remove <id> - удалить базу из реестра
/db-list show <id|alias> - подробности по базе
```
## Формат `.v8-project.json`
Файл размещается в корне проекта (рядом с `.git/`).
```json
{
"v8path": "C:\\Program Files\\1cv8\\8.3.25.1257\\bin",
"databases": [
{
"id": "dev",
"name": "Разработка",
"type": "file",
"role": "dev",
"path": "C:\\Bases\\MyApp_Dev",
"user": "Admin",
"password": "",
"aliases": ["dev", "разработка"],
"branches": ["dev", "develop", "feature/*"],
"configSrc": "C:\\WS\\myapp\\cfsrc"
},
{
"id": "test",
"name": "Тестовая",
"type": "server",
"role": "test",
"server": "srv01",
"ref": "MyApp_Test",
"user": "Admin",
"password": "123",
"aliases": ["test", "тест"]
}
],
"default": "dev"
}
```
### Поля корневого объекта
| Поле | Тип | Описание |
|------|-----|----------|
| `v8path` | string | Каталог bin платформы 1С. Необязательный - если не задан, автоопределение |
| `databases` | array | Массив баз данных |
| `default` | string | id базы по умолчанию |
### Поля объекта базы данных
| Поле | Тип | Обязательное | Описание |
|------|-----|:------------:|----------|
| `id` | string | да | Уникальный идентификатор (латиница, без пробелов) |
| `name` | string | да | Человекочитаемое имя |
| `type` | `"file"` / `"server"` | да | Тип подключения |
| `role` | `"dev"` / `"test"` / `"prod"` | нет | Роль базы. Нет поля - то же, что `dev`. `prod` включает защиту боевой базы |
| `path` | string | для file | Путь к каталогу файловой базы |
| `server` | string | для server | Адрес сервера 1С |
| `ref` | string | для server | Имя базы на сервере |
| `user` | string | нет | Имя пользователя 1С |
| `password` | string | нет | Пароль |
| `aliases` | string[] | нет | Альтернативные имена для быстрого доступа |
| `branches` | string[] | нет | Git-ветки или glob-паттерны (`release/*`, `feature/*`), привязанные к этой базе |
| `configSrc` | string | нет | Каталог XML-выгрузки конфигурации |
## Алгоритм разрешения базы данных
Этот алгоритм используется ВСЕМИ навыками (`db-*`, `epf-build`, `epf-dump`, `erf-build`, `erf-dump`) для определения целевой базы.
1. Если пользователь указал **параметры подключения** (путь, сервер) - используй напрямую
2. Если пользователь указал **базу по имени** - ищи совпадение в таком порядке:
1. По `id` (точное совпадение)
2. По `aliases` (совпадение в массиве с учетом морфологии: "тестовую" = "тестовая" = "тестовой")
3. По `name` (нечеткое совпадение с учетом морфологии и регистра)
3. Если пользователь **не указал** базу - сопоставь текущую ветку Git с `databases[].branches`:
- Точное совпадение: ветка `dev` → `"branches": ["dev"]`
- Glob-паттерн: ветка `release/2.1` → `"branches": ["release/*"]`
4. Если ветка не совпала - используй `default`
5. Если не найдено или неоднозначно - спроси пользователя
6. Если файл `.v8-project.json` не найден - спроси параметры подключения и предложи создать файл
После выполнения: если использованная база не зарегистрирована - предложи добавить через `/db-list add`.
### Автоопределение платформы
Если `v8path` не задан в конфиге:
```powershell
$v8 = Get-ChildItem "C:\Program Files\1cv8\*\bin\1cv8.exe" | Sort-Object -Descending | Select-Object -First 1
```
## Операции
### Показать список баз
Прочитай `.v8-project.json`, выведи таблицу. Колонка Роль - поле `role`; если поля нет, выводи `dev`.
```
ID Имя Тип Роль Путь/Сервер По умолч.
dev Разработка file dev C:\Bases\MyApp_Dev ✓
test Тестовая server test srv01/MyApp_Test
```
### Добавить базу
Спроси у пользователя через AskUserQuestion:
- id, name, type (file/server)
- role: `dev`, `test` или `prod`
- path (для file) или server + ref (для server)
- user, password (необязательно)
- aliases, branches (необязательно)
Если пользователь не выбрал роль, поле `role` не записывай: это то же, что `dev`. Добавь в массив `databases`. Если это первая база - установи как `default`.
### Удалить базу
Удали из массива `databases` по id. Если удаляемая была `default` - спросить новый default.
### Подробности по базе
Выведи все поля конкретной базы. Роль показывай всегда: нет поля `role` - это `dev`.
## Формирование строки подключения
Для использования в шаблонах команд других навыков:
**Файловая база:**
```
/F "<path>"
```
**Серверная база:**
```
/S "<server>/<ref>"
```
**Аутентификация** (добавляется если user задан):
```
/N"<user>" /P"<password>"
```
> **Важно**: между `/N` и именем пробела нет. Между `/P` и паролем пробела нет. Если пароль пустой - опусти `/P` целиком.