mcpField
D
db-list

db-list

github.com/nikolay-shirokov数据与数据库74151 次安装今天更新
代码仓库

关于 db-list

用于维护项目 1C 信息库注册表 .v8-project.json 的技能,支持查看、添加、删除和检查数据库详情。它还定义数据库与 Git 分支的匹配方式,供相关项目技能选择目标库和平台版本。

主要功能

  1. 01列出、添加和删除数据库
  2. 02查看数据库配置详情
  3. 03按 ID、别名或名称匹配
  4. 04按 Git 分支和默认项选择数据库
  5. 05配置平台版本及仓库凭据

适用场景

  1. 01登记项目的文件库和服务器库
  2. 02根据当前 Git 分支选择目标库
  3. 03检查或更新数据库连接与仓库设置

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/nikolay-shirokov/cc-1c-skills --skill db-list

安装后在 Claude Code 中输入/db-list确认已加载。

README 原文English

来自项目 README

README 暂无中文译文,以下为英文原文;中文介绍见上方。

/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/).

{
  "v8path": "C:\\Program Files\\1cv8\\8.3.25.1257\\bin",
  "v8args": ["/UseHwLicenses+"],
  "databases": [
    {
      "id": "dev",
      "name": "Разработка",
      "type": "file",
      "path": "C:\\Bases\\MyApp_Dev",
      "v8path": "C:\\Program Files\\1cv8\\8.3.27.1688\\bin",
      "user": "Admin",
      "password": "",
      "aliases": ["dev", "разработка"],
      "branches": ["dev", "develop", "feature/*"],
      "configSrc": "C:\\WS\\myapp\\cfsrc",
      "repository": {
        "path": "\\\\srv01\\repo\\MyApp",
        "user": "Ivanov",
        "password": ""
      },
      "extensions": [
        {
          "name": "МоёРасширение",
          "src": "src\\cfe\\МоёРасширение",
          "repository": { "path": "\\\\srv01\\repo\\MyApp_Ext", "user": "Ivanov", "password": "" }
        }
      ]
    },
    {
      "id": "test",
      "name": "Тестовая",
      "type": "server",
      "server": "srv01",
      "ref": "MyApp_Test",
      "user": "Admin",
      "password": "123",
      "aliases": ["test", "тест"]
    }
  ],
  "default": "dev"
}
Поля корневого объекта
ПолеТипОписание
v8pathstringКаталог bin платформы 1С. Необязательный — если не задан, автоопределение
v8argsarrayДоп. аргументы запуска 1cv8.exe для всех навыков, напр. ["/UseHwLicenses+"]
ibcmdargsarrayДоп. аргументы ibcmd (форма --ключ=значение)
newObjectPosition"end" / "byName"Куда попадает новый объект в составе конфигурации: в конец своего вида (по умолчанию) или на место по имени. Переопределяется в databases[]
extensionApplyCheckboolПроверять ли применимость расширения после загрузки в базу (по умолчанию true). Разово отключается ключом -NoApplyCheck
externalCheckboolПроверять ли исходники внешней обработки/отчёта платформой перед сборкой (по умолчанию true). Разово отключается ключом -Checks off
xsdPathstringКаталог XSD-схем платформы для проверки выгрузок по версиям формата; по умолчанию .v8-xsd рядом с этим файлом. Наполняется /v8-xsd-fetch
databasesarrayМассив баз данных
defaultstringid базы по умолчанию
Поля объекта базы данных
ПолеТипОбязательноеОписание
idstringдаУникальный идентификатор (латиница, без пробелов)
namestringдаЧеловекочитаемое имя
type"file" / "server"даТип подключения
pathstringдля fileПуть к каталогу файловой базы
serverstringдля serverАдрес сервера 1С
refstringдля serverИмя базы на сервере
v8pathstringнетПлатформа именно этой базы — перекрывает корневой v8path (см. ниже)
userstringнетИмя пользователя 1С
passwordstringнетПароль
aliasesstring[]нетАльтернативные имена для быстрого доступа
branchesstring[]нетGit-ветки или glob-паттерны (release/*, feature/*), привязанные к этой базе
configSrcstringнетКаталог XML-выгрузки конфигурации
repositoryobjectнетХранилище конфигурации: path, user, password (см. ниже)
extensionsarrayнетРасширения: name, src, необязательное repository (см. ниже)
Хранилище конфигурации

База, подключённая к хранилищу конфигурации 1С, не принимает ни одной операции конфигуратора без реквизитов доступа к хранилищу — это касается не только /db-repo, но и /db-load-xml, /db-dump-xml, /db-update, /db-load-git. Реквизиты берутся из repository записи базы, передавать их в каждом вызове не нужно.

ПолеТипОбязательноеОписание
repository.pathstringдаКаталог хранилища или tcp://<хост>[:<порт>]/<имя>
repository.userstringнетПользователь хранилища. Не наследуется от user базы
repository.passwordstringнетПароль пользователя хранилища

У расширения своё хранилище со своим путём, поэтому одного repository мало:

ПолеТипОбязательноеОписание
extensions[].namestringдаИмя расширения, как в конфигурации
extensions[].srcstringнетКаталог XML-исходников расширения
extensions[].repositoryobjectнетХранилище расширения. Расширение без хранилища — обычный случай

Пароль хранилища — такой же секрет, как password базы; .v8-project.json в .gitignore.

Сетевое хранилище. Адрес — tcp://<хост>[:<порт>]/<имя>, порт по умолчанию 1542. Обслуживается сервером хранилища. Если он недоступен, платформа отвечает «Соединение с хранилищем конфигурации не установлено» — тем же сообщением, что и при отсутствии реквизитов.

Алгоритм разрешения базы данных

Этот алгоритм используется ВСЕМИ навыками (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 в вызове → v8path записи базы → корневой v8path → автоопределение. Запись базы находит сам скрипт, сопоставляя параметры соединения с databases[], — передавать -V8Path руками не нужно. Поле у базы нужно, когда базы проекта живут на разных версиях платформы: формат XML-выгрузки задаёт та платформа, которая выгружает, а автоопределение берёт самую старшую установленную.

Если v8path не задан нигде:

$v8 = Get-ChildItem "C:\Program Files\1cv8\*\bin\1cv8.exe" | Sort-Object -Descending | Select-Object -First 1

Операции

Показать список баз

Прочитай .v8-project.json, выведи таблицу:

ID      Имя           Тип      Путь/Сервер              По умолч.
dev     Разработка    file     C:\Bases\MyApp_Dev       ✓
test    Тестовая      server   srv01/MyApp_Test
Добавить базу

Спроси у пользователя через AskUserQuestion:

  • id, name, type (file/server)
  • path (для file) или server + ref (для server)
  • user, password (необязательно)
  • aliases, branches (необязательно)
  • если база под хранилищем конфигурации — repository: путь, пользователь, пароль

Добавь в массив databases. Если это первая база — установи как default.

Удалить базу

Удали из массива databases по id. Если удаляемая была default — спросить новый default.

Подробности по базе

Выведи все поля конкретной базы.

Формирование строки подключения

Для использования в шаблонах команд других навыков:

Файловая база:

/F "<path>"

Серверная база:

/S "<server>/<ref>"

Аутентификация (добавляется если user задан):

/N"<user>" /P"<password>"

Важно: между /N и именем пробела нет. Между /P и паролем пробела нет. Если пароль пустой — опусти /P целиком.

Хранилище конфигурации (если у базы задан repository) — скрипты навыков подставляют сами, сопоставляя параметры соединения с записью реестра:

/ConfigurationRepositoryF"<path>" /ConfigurationRepositoryN"<user>" /ConfigurationRepositoryP"<password>"

评论

支持 Markdown