Files
cc-1c-skills/docs/db-guide.md
T
Nick ShirokovandClaude Opus 5 f6165c8d35 docs(db-guide,v8-project-guide): форма списка доп. аргументов
Список пишется одной строкой через запятую — так же, как -Objects/-Files;
отмечено ограничение: значение с запятой внутри не поддерживается.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-29 21:15:49 +03:00

172 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Базы данных 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
# разово; несколько аргументов — через запятую, как у -Objects/-Files
powershell.exe -NoProfile -File "…/epf-build.ps1" -SourceFile "src/Обработка.xml" `
-OutputFile "build/Обработка.epf" -AdditionalV8Arguments "/UseHwLicenses+,/L,ru"
```
Список пишется одной строкой через запятую: при запуске скрипта через `-File`
PowerShell не умеет собирать массив из отдельных токенов. Значение, содержащее запятую,
не поддерживается.
Проектные аргументы применяются первыми, параметр — после них. Аргументы уходят во **все** запуски
платформы, которые делает навык: `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, параметры, коды возврата)