test-databases · git:20260826.f445837 · 2026-08-26 · sha256 01fd916f372fba20

test-databases git:20260826.f445837A

Immutable. This exact content is served forever at /api/v1/blob/01fd916f372fba20.

---
name: test-databases
description: >-
  Единственный источник параметров подключения к информационным базам 1С.
  Используй всегда, когда нужна база для Designer, ibcmd, web-publish, repo-update,
  db-dump-xml, db-load-xml, codex-test-bridge или любых других операций с ИБ.
  Запрещено подключаться к базам вне реестра test-databases.json.
allowed-tools:
  - Read
  - Glob
  - AskUserQuestion
---

# test-databases — только демобазы из реестра

## Главное правило

**Работай только с демобазами из реестра, разрешённого bundled-скриптом этого скила.**

- Не используй `ibases.v8i`, списки баз из конфигуратора, произвольные строки подключения и «боевые» базы, если их нет в реестре.
- Не придумывай `Srvr`, `Ref`, логин и пароль — бери их только из записи реестра.
- Если нужной базы нет в реестре — **остановись**, сообщи пользователю и предложи добавить запись в `test-databases.json`. Не подключайся к другой базе «по аналогии».

Этот скил имеет приоритет над локальными `.env`, `.v8-project.json` и любыми другими источниками подключения, если они противоречат реестру или содержат базу вне списка.

## Разрешение реестра

Запусти `scripts/resolve-registry.ps1` из каталога этого скила. Не угадывай путь и не копируй алгоритм разрешения в другие скилы.

Resolver использует первый настроенный источник:

1. `-RegistryPath` для явного override;
2. `CODEX_1C_TEST_DATABASES` для CI и временных окружений;
3. `testDatabasesPath` из приватного `%CODEX_HOME%\1c\local.json`; если `CODEX_HOME` не задан, используй профиль Codex текущего пользователя.

Локальный файл находится вне репозитория и имеет вид:

```json
{
  "testDatabasesPath": "<private-path>\\test-databases.json"
}
```

Resolver возвращает проверенный абсолютный путь и валидирует наличие массива `databases`. Если он завершился с ошибкой, остановись и сообщи, что реестр не настроен.

Структура:

```json
{
  "databases": [
    {
      "path": "C:\\workspace\\project",
      "Srvr": "server.example.invalid",
      "Ref": "Demo_Base",
      "IBConnectionString": "Srvr=\"server.example.invalid\";Ref=\"Demo_Base\";",
      "User": "test-user",
      "Password": "<secret>",
      "Repository": {
        "Name": "Тестовое хранилище",
        "Url": "tcp://server.example.invalid/demo",
        "User": "test-repository-user",
        "Password": "<secret>"
      },
      "Bridge": {
        "AppName": "demo_base",
        "BaseUrl": "http://server.example.invalid:9091/demo_base/hs/codex-test",
        "HealthUrl": "http://server.example.invalid:9091/demo_base/hs/codex-test/health"
      }
    }
  ]
}
```

Дополнительные поля (`Designer`, `Bridge`, `Repository`) используй только если они есть у выбранной записи.

## Выбор записи

1. **Текущий проект** — запись, у которой `path` совпадает с корнем проекта или является его родительским каталогом.  
   Пример: для `C:\workspace\project` → запись с `"path": "C:\\workspace\\project"`.
2. **Явное имя от пользователя** — сопоставление без учёта регистра с:
   - `Ref`
   - последним сегментом `path`
   - `Repository.Name`, `Repository.Url`
   - `Bridge.AppName`
   - `Srvr/Ref`, `IBConnectionString`
3. **Несколько совпадений** — покажи таблицу вариантов **без паролей** и спроси пользователя.
4. **Нет совпадений** — не подключайся. Сообщи, что база отсутствует в `test-databases.json`.

## Маппинг полей

| Поле реестра | Параметр 1С / скрипта |
|---|---|
| `Srvr` + `Ref` | `/S "<Srvr>/<Ref>"` или `-InfoBaseServer` / `-InfoBaseRef` |
| `IBConnectionString` | если нет `Srvr`/`Ref` — извлеки ключи парсером строки подключения |
| `User` | `/N"<User>"` или `-UserName` |
| `Password` | `/P"<Password>"` или `-Password` |
| `Repository.Url` | `/ConfigurationRepositoryF "<Url>"` |
| `Repository.User` | `/ConfigurationRepositoryN "<User>"` |
| `Repository.Password` | `/ConfigurationRepositoryP "<Password>"` |
| `Designer.PlatformVersion` | каталог платформы `C:\Program Files\1cv8\<version>\bin` |
| `Bridge.BaseUrl` | HTTP bridge codex-test |

## Безопасность

- **Никогда** не выводи `Password`, `Repository.Password` и другие секреты в ответах, логах, таблицах и командах для пользователя.
- В командах для логов маскируй пароли (`***`).
- Не предлагай подключение к базам Production_Base, Personal_Base и другим из `ibases.v8i`, если их нет в реестре.

## Зарегистрированные демобазы

Перед операцией получи путь через resolver, прочитай актуальный файл и выведи список без паролей. Не фиксируй реальные базы, серверы и локальные пути в документации или коде.

## Связанные скилы

После выбора записи из реестра делегируй выполнение:

| Задача | Скил |
|--------|------|
| Обновить из хранилища | `repo-update` |
| Выгрузить конфигурацию в XML | `db-dump-xml` |
| Загрузить XML в базу | `db-load-xml` |
| Запустить 1С | `db-run` |
| HTTP-тесты через bridge | `codex-test-bridge` |

Во всех случаях параметры подключения бери **только** из `test-databases.json`.

## Добавление новой демобазы

Если пользователь просит работать с базой вне реестра:

1. Объясни, что политика — только демобазы из `test-databases.json`.
2. Попроси подтвердить, что это тестовая база.
3. Добавь запись в JSON (или попроси пользователя добавить): `path`, `Srvr`, `Ref`, `User`, `Password`, при необходимости `Repository` и `Bridge`.
4. Только после этого выполняй операции с новой записью.