mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-28 22:19:41 +03:00
feat(db-repo): правила захвата, нулевой шаг цикла и диагностика по отчёту субагента
Проверка навыка субагентом на сквозном сценарии вскрыла фактическую ошибку в инструкции: реквизиты и табличные части перечислялись наравне с формами как захватываемые объекты. Платформа их объектами не считает — список объектов получается пустым, причём без секции «отсутствующие в конфигурации». Правишь реквизит, табличную часть, измерение, ресурс или модуль — захватывай владельца; формы, макеты и команды захватываются отдельно. Сообщение «объект не найден» имеет три разные причины: опечатка, отставание базы от хранилища и попытка захватить то, что объектом не является. Теперь перечислены все три. В цикл добавлен нулевой шаг — получение актуального состояния перед началом работы: правки должны опираться на актуальные версии в том числе тех объектов, которые не меняются, но используются. Загрузка и обновление БД слиты в один шаг через -UpdateDB, поэтому цикл не удлинился. Захват корня конфигурации с -WithChildren отклоняется: это захват всей конфигурации, а выглядит как захват корня. Для всей конфигурации есть однозначная форма — вызов без -Objects. Текстовый отчёт печатается, а не только сохраняется в файл. Схема repository и extensions[] описана в docs/v8-project-guide.md, цикл под хранилищем — в docs/db-guide.md. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
478e7489f9
commit
3e816d3e12
@@ -15,6 +15,7 @@
|
||||
| `/db-update` | — | Обновление конфигурации БД |
|
||||
| `/db-run` | — | Запуск 1С:Предприятие |
|
||||
| `/db-load-git` | `.ps1` | Загрузка изменений из Git в базу |
|
||||
| `/db-repo` | `.ps1` | Хранилище конфигурации: захват, помещение, получение изменений |
|
||||
|
||||
## Рабочий цикл
|
||||
|
||||
@@ -35,6 +36,31 @@
|
||||
7. **Обновление** — `/db-update` применить
|
||||
8. **Запуск** — `/db-run` открыть предприятие
|
||||
|
||||
## Работа с хранилищем конфигурации
|
||||
|
||||
База, подключённая к хранилищу, живёт по другим правилам, и это меняет весь цикл:
|
||||
|
||||
- **полная загрузка XML в неё невозможна** — платформа отвечает «текущая конфигурация помещена в
|
||||
хранилище». Работает только `-Mode Partial`;
|
||||
- частичная загрузка проходит **только по захваченным** объектам, иначе отказ с именем объекта;
|
||||
- **новый объект требует захвата корня конфигурации** — без него частичная загрузка не пройдёт;
|
||||
- любой команде конфигуратора нужны реквизиты хранилища. Их берут из `repository` записи базы
|
||||
(см. [справочник .v8-project.json](v8-project-guide.md)), передавать в каждом вызове не нужно.
|
||||
|
||||
Цикл разработки под хранилищем:
|
||||
|
||||
```
|
||||
/db-repo update → /db-repo lock → /db-dump-xml -Mode Partial → правки
|
||||
↓
|
||||
/db-repo commit ← /db-load-xml -Mode Partial -UpdateDB
|
||||
```
|
||||
|
||||
Выгрузка после захвата обязательна: захват и обновление молча подтягивают из хранилища свежие
|
||||
версии объектов, и загрузка исходников, снятых раньше, откатит чужие изменения без единой ошибки.
|
||||
`/db-repo` печатает список полученных объектов и готовую команду выгрузки.
|
||||
|
||||
Подробности — в SKILL.md навыка `/db-repo`.
|
||||
|
||||
## Формат `.v8-project.json`
|
||||
|
||||
Полное описание формата — в [справочнике .v8-project.json](v8-project-guide.md).
|
||||
|
||||
@@ -27,7 +27,25 @@
|
||||
"aliases": ["dev", "разработка"], // альтернативные имена
|
||||
"branches": ["dev", "feature/*"], // привязка к Git-веткам
|
||||
"configSrc": "src\\cf", // каталог XML-выгрузки конфигурации (см. структуру ниже)
|
||||
"webUrl": "http://localhost:8081/dev" // URL веб-клиента (для /web-test)
|
||||
"webUrl": "http://localhost:8081/dev", // URL веб-клиента (для /web-test)
|
||||
|
||||
// Хранилище конфигурации (для /db-repo). Без него навыки группы db-* не смогут
|
||||
// работать с базой, подключённой к хранилищу: платформа не примет от них ни одной
|
||||
// операции конфигуратора.
|
||||
"repository": {
|
||||
"path": "\\\\srv01\\repo\\MyApp", // каталог или tcp://srv01/MyApp
|
||||
"user": "Ivanov",
|
||||
"password": ""
|
||||
},
|
||||
|
||||
// Расширения конфигурации: каталог исходников и, если есть, СВОЁ хранилище
|
||||
"extensions": [
|
||||
{
|
||||
"name": "МоёРасширение",
|
||||
"src": "src\\cfe\\МоёРасширение",
|
||||
"repository": { "path": "\\\\srv01\\repo\\MyApp_Ext", "user": "Ivanov", "password": "" }
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "test",
|
||||
@@ -85,6 +103,35 @@
|
||||
| `editingAllowedCheck` | `"deny"`/`"warn"`/`"off"` | нет | Override реакции support-guard для этой базы (см. ниже) | Руками |
|
||||
| `skillSuggester` | `"on"`/`"off"` | нет | Override подсказок навыков для этой базы (см. ниже) | Руками |
|
||||
| `webUrl` | string | нет | URL веб-клиента для `/web-test` | Руками |
|
||||
| `repository` | object | нет | Хранилище конфигурации: `path`, `user`, `password` (см. ниже) | Руками |
|
||||
| `extensions` | array | нет | Расширения конфигурации: `name`, `src`, необязательное `repository` (см. ниже) | Руками |
|
||||
|
||||
### Хранилище конфигурации (`repository`, `extensions[]`)
|
||||
|
||||
База, подключённая к хранилищу конфигурации, не принимает **ни одной** операции конфигуратора без
|
||||
реквизитов доступа к хранилищу — это касается не только `/db-repo`, но и `/db-load-xml`,
|
||||
`/db-dump-xml`, `/db-update`, `/db-load-git`. Реквизиты берутся из `repository` записи базы, поэтому
|
||||
передавать их в каждом вызове не нужно.
|
||||
|
||||
| Поле | Тип | Обяз. | Описание |
|
||||
|------|-----|:-----:|----------|
|
||||
| `repository.path` | string | да | Каталог хранилища или `tcp://<сервер>/<имя>` |
|
||||
| `repository.user` | string | нет | Пользователь хранилища. **Не наследуется** от `user` базы — задаётся явно |
|
||||
| `repository.password` | string | нет | Пароль пользователя хранилища |
|
||||
|
||||
У **расширения своё хранилище** со своим путём — одного `repository` на запись базы недостаточно:
|
||||
|
||||
| Поле | Тип | Обяз. | Описание |
|
||||
|------|-----|:-----:|----------|
|
||||
| `extensions[].name` | string | да | Имя расширения, как в конфигурации |
|
||||
| `extensions[].src` | string | нет | Каталог XML-исходников расширения (напр. `src/cfe/<Имя>`) |
|
||||
| `extensions[].repository` | object | нет | Хранилище расширения. Расширение без хранилища — обычный случай |
|
||||
|
||||
Пароль хранилища — такой же секрет, как `password` базы; `.v8-project.json` в `.gitignore`.
|
||||
|
||||
`/db-repo update` отказывается работать, если у базы не объявлено `repository` и реквизиты не
|
||||
переданы явно: на базе, **не** подключённой к хранилищу, эта команда молча заменяет всю
|
||||
конфигурацию содержимым хранилища и рапортует успех.
|
||||
|
||||
### Support-guard и `editingAllowedCheck`
|
||||
|
||||
|
||||
Reference in New Issue
Block a user