mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-31 16:57:46 +03:00
Разбор escape hatch для вызывающего: два параметра по движкам, ключи v8args/ibcmdargs в реестре проекта, что отклоняется и почему, маскирование секретов и известные пределы разбора (/Psecret, /@). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
168 lines
10 KiB
Markdown
168 lines
10 KiB
Markdown
# Базы данных 1С
|
||
|
||
Навыки группы `/db-*` позволяют управлять информационными базами 1С из Claude Code: создавать базы, загружать и выгружать конфигурации, обновлять БД, запускать предприятие, загружать изменения из Git.
|
||
|
||
## Навыки
|
||
|
||
| Навык | Скрипт | Описание |
|
||
|-------|:------:|----------|
|
||
| `/db-list` | — | Управление реестром баз (.v8-project.json) |
|
||
| `/db-create` | — | Создание информационной базы |
|
||
| `/db-dump-cf` | — | Выгрузка конфигурации в CF-файл |
|
||
| `/db-load-cf` | — | Загрузка конфигурации из CF-файла |
|
||
| `/db-dump-xml` | `.ps1` | Выгрузка конфигурации в XML-файлы (полная/инкрементальная/частичная) |
|
||
| `/db-load-xml` | `.ps1` | Загрузка конфигурации из XML-файлов (полная/частичная) |
|
||
| `/db-update` | — | Обновление конфигурации БД |
|
||
| `/db-run` | — | Запуск 1С:Предприятие |
|
||
| `/db-load-git` | `.ps1` | Загрузка изменений из Git в базу |
|
||
|
||
## Рабочий цикл
|
||
|
||
```
|
||
.v8-project.json → /db-create → /db-load-cf или /db-load-xml → /db-update → /db-run
|
||
↑
|
||
/db-dump-xml ←→ правки в исходниках → /db-load-git → /db-update
|
||
```
|
||
|
||
### Типичный цикл разработки
|
||
|
||
1. **Настройка** — `/db-list add` зарегистрировать базу в `.v8-project.json`
|
||
2. **Создание** — `/db-create` создать базу (если нет)
|
||
3. **Загрузка** — `/db-load-xml` или `/db-load-cf` загрузить конфигурацию
|
||
4. **Обновление** — `/db-update` применить к БД
|
||
5. **Работа** — редактирование XML-исходников
|
||
6. **Синхронизация** — `/db-load-git` загрузить изменения из Git
|
||
7. **Обновление** — `/db-update` применить
|
||
8. **Запуск** — `/db-run` открыть предприятие
|
||
|
||
## Формат `.v8-project.json`
|
||
|
||
Полное описание формата — в [справочнике .v8-project.json](v8-project-guide.md).
|
||
|
||
### Разрешение базы
|
||
|
||
Все навыки `db-*` (а также `epf-build`, `epf-dump`, `erf-build`, `erf-dump`) используют единый алгоритм:
|
||
|
||
1. Если пользователь указал **параметры подключения** (путь, сервер) — используй напрямую
|
||
2. Если указал **базу по имени** — ищи: `id` → `aliases` (с учётом морфологии) → `name` (нечёткое)
|
||
3. Если **не указал** — сопоставь текущую ветку Git с `branches` (точно или по glob-паттерну)
|
||
4. Fallback на `default`
|
||
5. Если не найдено — спроси пользователя
|
||
6. После выполнения: если использованная база не зарегистрирована — предложи добавить через `/db-list add`
|
||
|
||
## Сценарии использования
|
||
|
||
### Создать базу и загрузить конфигурацию
|
||
|
||
```
|
||
> Создай файловую базу C:\Bases\Test и загрузи в неё конфигурацию из C:\WS\cfsrc
|
||
```
|
||
|
||
Claude вызовет `/db-create` → `/db-load-xml -Mode Full` → предложит `/db-update`.
|
||
|
||
### Загрузить изменения из Git
|
||
|
||
```
|
||
> Загрузи мои последние правки в базу разработки
|
||
```
|
||
|
||
Claude вызовет `/db-load-git dev -Source All` → предложит `/db-update`.
|
||
|
||
### Выгрузить конфигурацию
|
||
|
||
```
|
||
> Выгрузи конфигурацию из тестовой базы в C:\WS\cfsrc
|
||
```
|
||
|
||
Claude вызовет `/db-dump-xml test C:\WS\cfsrc -Mode Full`.
|
||
|
||
### Работа с расширениями
|
||
|
||
```
|
||
> Выгрузи расширение МоёРасширение из базы dev в C:\WS\ext_src
|
||
```
|
||
|
||
Claude вызовет `/db-dump-xml dev C:\WS\ext_src -Extension МоёРасширение`.
|
||
|
||
```
|
||
> Загрузи расширение обратно в базу
|
||
```
|
||
|
||
Claude вызовет `/db-load-xml C:\WS\ext_src dev -Extension МоёРасширение` → предложит `/db-update -Extension МоёРасширение`.
|
||
|
||
### Запустить предприятие
|
||
|
||
```
|
||
> Запусти базу разработки
|
||
```
|
||
|
||
Claude вызовет `/db-run dev`.
|
||
|
||
## Движок: 1cv8 или ibcmd
|
||
|
||
По умолчанию навыки группы работают через конфигуратор (`1cv8.exe`; путь к нему определяется
|
||
автоматически по каталогу `v8path`) — менять это не нужно. При желании ту же операцию можно выполнить
|
||
через автономный сервер `ibcmd`. Для этого навыку нужно передать путь к самому файлу `ibcmd.exe`
|
||
(каталог `bin` всегда трактуется как `1cv8.exe`; отдельного поля-переключателя в `.v8-project.json` нет).
|
||
Путь указывают одним из двух способов:
|
||
|
||
- **разово, в самой задаче** — назвать полный путь к `ibcmd.exe`:
|
||
|
||
```
|
||
> Собери обработку, платформа C:\Program Files\1cv8\8.3.24.1691\bin\ibcmd.exe
|
||
```
|
||
- **в файле настроек** — прописать в `v8path` не каталог `bin`, а сам файл `...\bin\ibcmd.exe`
|
||
(тогда через `ibcmd` пойдут все операции).
|
||
|
||
Через `ibcmd` работают: `db-create`, `db-load-xml`/`db-dump-xml` (в том числе по отдельным объектам
|
||
и со всеми расширениями), `db-load-cf`/`db-dump-cf`, `db-load-dt`/`db-dump-dt`, `db-update`,
|
||
`db-load-git`, `epf-build`/`epf-dump`, `erf-build`/`erf-dump`.
|
||
|
||
Ограничения:
|
||
- только **файловые** базы (для серверных используйте конфигуратор);
|
||
- если запрошен режим, который `ibcmd` не поддерживает (например, выгрузка в «плоском» формате),
|
||
навык остановится с понятным сообщением и предложит конфигуратор.
|
||
|
||
## Дополнительные аргументы платформы
|
||
|
||
Набор аргументов, который скрипт формирует сам, закрыт: подключение, пакетная операция, `/Out`.
|
||
Общие ключи платформы, которых нет среди параметров навыка (`/UseHwLicenses+`, `/L`, `/ClearCache`,
|
||
`/DebuggerURL`, …), передаются через escape hatch — по одному параметру на движок:
|
||
|
||
| Движок | Параметр | Ключ в `.v8-project.json` |
|
||
|--------|----------|---------------------------|
|
||
| `1cv8.exe` | `-AdditionalV8Arguments` | `v8args` |
|
||
| `ibcmd` | `-AdditionalIbcmdArguments` | `ibcmdargs` |
|
||
|
||
```powershell
|
||
# разово
|
||
powershell.exe -NoProfile -File "…/epf-build.ps1" -SourceFile "src/Обработка.xml" `
|
||
-OutputFile "build/Обработка.epf" -AdditionalV8Arguments '/UseHwLicenses+'
|
||
```
|
||
|
||
Проектные аргументы применяются первыми, параметр — после них. Аргументы уходят во **все** запуски
|
||
платформы, которые делает навык: `epf-build` без указания базы прогоняет `CREATEINFOBASE`,
|
||
`/LoadConfigFromFiles`, `/UpdateDBCfg` и саму сборку — ключ получит каждый.
|
||
|
||
Что отклоняется до запуска, с указанием штатного параметра:
|
||
|
||
- аргумент, которым управляет сам скрипт: режим (`DESIGNER`, `ENTERPRISE`, `CREATEINFOBASE`),
|
||
подключение (`/F`, `/S`, `/N`, `/P`), `/Out`, пакетная операция (`/Load*`, `/Dump*`,
|
||
`/UpdateDBCfg`, …). Платформа допускает лишь одну пакетную операцию, а дубль ключа подключения
|
||
даёт невнятную ошибку 1С;
|
||
- для `ibcmd` — позиционный токен: команда (`infobase create`, `config import`) принадлежит навыку,
|
||
поэтому значения передаются только в форме `--ключ=значение`;
|
||
- параметр «не своего» движка (`-AdditionalV8Arguments` при выбранном `ibcmd`). Ключи из
|
||
`.v8-project.json` в этом случае просто не применяются — реестр проекта может описывать оба движка.
|
||
|
||
В строке `Running: …` значения секрето-опасных ключей (`/P`, `/UC`, `--password`, `--token`)
|
||
заменяются на `***`. Ограничения разбора, о которых стоит знать:
|
||
|
||
- слитое значение, начинающееся с буквы (`/Psecret` вместо `/P"secret"`), неотличимо от более
|
||
длинного ключа — такой аргумент не будет ни распознан как конфликт, ни замаскирован;
|
||
- содержимое файла параметров `/@` не разбирается — за его состав отвечает вызывающий.
|
||
|
||
## Спецификации
|
||
|
||
- [build-spec.md](build-spec.md) — пакетный режим конфигуратора 1С (CREATEINFOBASE, DESIGNER, ENTERPRISE, параметры, коды возврата)
|