$npx -y skills add Arman-Kudaibergenov/1c-ai-development-kit --skill db-listЭтот скилл MUST быть вызван когда пользователь говорит про базы данных, список баз, "добавь базу", "какие базы есть", управление реестром .v8-project.json. SHOULD также вызывать в начале сессии для получения списка доступных баз. Do NOT использовать для создания новой базы — испо
| 1 | # /db-list — Управление реестром баз данных |
| 2 | |
| 3 | Управляет файлом `.v8-project.json` — реестром информационных баз проекта. Файл хранит параметры подключения, алиасы, привязку к веткам Git. |
| 4 | |
| 5 | ## Usage |
| 6 | |
| 7 | ``` |
| 8 | /db-list — показать список баз |
| 9 | /db-list add — добавить базу (интерактивно) |
| 10 | /db-list remove <id> — удалить базу из реестра |
| 11 | /db-list show <id|alias> — подробности по базе |
| 12 | ``` |
| 13 | |
| 14 | ## Формат `.v8-project.json` |
| 15 | |
| 16 | Файл размещается в корне проекта (рядом с `.git/`). |
| 17 | |
| 18 | ```json |
| 19 | { |
| 20 | "v8path": "C:\\Program Files\\1cv8\\8.3.25.1257\\bin", |
| 21 | "databases": [ |
| 22 | { |
| 23 | "id": "dev", |
| 24 | "name": "Разработка", |
| 25 | "type": "file", |
| 26 | "path": "C:\\Bases\\MyApp_Dev", |
| 27 | "user": "Admin", |
| 28 | "password": "", |
| 29 | "aliases": ["dev", "разработка"], |
| 30 | "branches": ["dev", "develop", "feature/*"], |
| 31 | "configSrc": "C:\\WS\\myapp\\cfsrc" |
| 32 | }, |
| 33 | { |
| 34 | "id": "test", |
| 35 | "name": "Тестовая", |
| 36 | "type": "server", |
| 37 | "server": "srv01", |
| 38 | "ref": "MyApp_Test", |
| 39 | "user": "Admin", |
| 40 | "password": "123", |
| 41 | "aliases": ["test", "тест"] |
| 42 | } |
| 43 | ], |
| 44 | "default": "dev" |
| 45 | } |
| 46 | ``` |
| 47 | |
| 48 | ### Поля корневого объекта |
| 49 | |
| 50 | | Поле | Тип | Описание | |
| 51 | |------|-----|----------| |
| 52 | | `v8path` | string | Каталог bin платформы 1С. Необязательный — если не задан, автоопределение | |
| 53 | | `databases` | array | Массив баз данных | |
| 54 | | `default` | string | id базы по умолчанию | |
| 55 | |
| 56 | ### Поля объекта базы данных |
| 57 | |
| 58 | | Поле | Тип | Обязательное | Описание | |
| 59 | |------|-----|:------------:|----------| |
| 60 | | `id` | string | да | Уникальный идентификатор (латиница, без пробелов) | |
| 61 | | `name` | string | да | Человекочитаемое имя | |
| 62 | | `type` | `"file"` / `"server"` | да | Тип подключения | |
| 63 | | `path` | string | для file | Путь к каталогу файловой базы | |
| 64 | | `server` | string | для server | Адрес сервера 1С | |
| 65 | | `ref` | string | для server | Имя базы на сервере | |
| 66 | | `user` | string | нет | Имя пользователя 1С | |
| 67 | | `password` | string | нет | Пароль | |
| 68 | | `aliases` | string[] | нет | Альтернативные имена для быстрого доступа | |
| 69 | | `branches` | string[] | нет | Git-ветки или glob-паттерны (`release/*`, `feature/*`), привязанные к этой базе | |
| 70 | | `configSrc` | string | нет | Каталог XML-выгрузки конфигурации | |
| 71 | |
| 72 | ## Алгоритм разрешения базы данных |
| 73 | |
| 74 | Этот алгоритм используется ВСЕМИ навыками (`db-*`, `epf-build`, `epf-dump`, `erf-build`, `erf-dump`) для определения целевой базы. |
| 75 | |
| 76 | 1. Если пользователь указал **параметры подключения** (путь, сервер) — используй напрямую |
| 77 | 2. Если пользователь указал **базу по имени** — ищи совпадение в таком порядке: |
| 78 | 1. По `id` (точное совпадение) |
| 79 | 2. По `aliases` (совпадение в массиве с учётом морфологии: «тестовую» = «тестовая» = «тестовой») |
| 80 | 3. По `name` (нечёткое совпадение с учётом морфологии и регистра) |
| 81 | 3. Если пользователь **не указал** базу — сопоставь текущую ветку Git с `databases[].branches`: |
| 82 | - Точное совпадение: ветка `dev` → `"branches": ["dev"]` |
| 83 | - Glob-паттерн: ветка `release/2.1` → `"branches": ["release/*"]` |
| 84 | 4. Если ветка не совпала — используй `default` |
| 85 | 5. Если не найдено или неоднозначно — спроси пользователя |
| 86 | 6. Если файл `.v8-project.json` не найден — спроси параметры подключения и предложи создать файл |
| 87 | |
| 88 | После выполнения: если использованная база не зарегистрирована — предложи добавить через `/db-list add`. |
| 89 | |
| 90 | ### Автоопределение платформы |
| 91 | |
| 92 | Если `v8path` не задан в конфиге: |
| 93 | |
| 94 | ```powershell |
| 95 | $v8 = Get-ChildItem "C:\Program Files\1cv8\*\bin\1cv8.exe" | Sort-Object -Descending | Select-Object -First 1 |
| 96 | ``` |
| 97 | |
| 98 | ## Операции |
| 99 | |
| 100 | ### Показать список баз |
| 101 | |
| 102 | Прочитай `.v8-project.json`, выведи таблицу: |
| 103 | |
| 104 | ``` |
| 105 | ID Имя Тип Путь/Сервер По умолч. |
| 106 | dev Разработка file C:\Bases\MyApp_Dev ✓ |
| 107 | test Тестовая server srv01/MyApp_Test |
| 108 | ``` |
| 109 | |
| 110 | ### Добавить базу |
| 111 | |
| 112 | Спроси у пользователя через AskUserQuestion: |
| 113 | - id, name, type (file/server) |
| 114 | - path (для file) или server + ref (для server) |
| 115 | - user, password (необязательно) |
| 116 | - aliases, branches (необязательно) |
| 117 | |
| 118 | Добавь в массив `databases`. Если это первая база — установи как `default`. |
| 119 | |
| 120 | ### Удалить базу |
| 121 | |
| 122 | Удали из массива `databases` по id. Если удаляемая была `default` — спросить новый default. |
| 123 | |
| 124 | ### Подробности по базе |
| 125 | |
| 126 | Выведи все поля конкретной базы. |
| 127 | |
| 128 | ## Формирование строки подключения |
| 129 | |
| 130 | Для использования в шаблонах команд других навыков: |
| 131 | |
| 132 | **Файловая база:** |
| 133 | ``` |
| 134 | /F "<path>" |
| 135 | ``` |
| 136 | |
| 137 | **Серверная база:** |
| 138 | ``` |
| 139 | /S "<server>/<ref>" |
| 140 | ``` |
| 141 | |
| 142 | **Аутентификация** (добавляется если user задан): |
| 143 | ``` |
| 144 | /N"<user>" /P"<password>" |
| 145 | ``` |
| 146 | |
| 147 | > **Важно**: между `/N` и именем пробела нет. Между `/P` и |