feat(db-*,epf-*,erf-*,web-publish): v8path на уровне записи базы

В одном проекте базы могут жить на разных версиях платформы, а версию формата
XML-выгрузки задаёт та платформа, которая выгружает: без выбора платформы по базе
срабатывает автопоиск и берёт самую старшую установленную — то есть самый новый
формат, который коллега на младшей платформе уже не загрузит.

Теперь порядок такой: явный -V8Path -> v8path записи базы -> корневой v8path ->
автопоиск. Запись базы ищет сам скрипт тем же матчем, которым добывал реквизиты
хранилища (Find-ProjectDatabase): файловую по path, серверную по server + ref.

- в 9 навыков, где матча не было, скопирован блок из авторитета db-repo;
- списки потребителей трёх семей в check-inline-drift расширены; заведена семья
  platform: resolve_v8path — обёртка меняла сигнатуру, а под гардом не была;
- раннер подставляет {workDir}/{fakePlatform} и в содержимое preRun.writeFile,
  иначе кейс про выбор платформы нельзя написать кроссплатформенно;
- в SKILL.md платформа теперь берётся ПОСЛЕ разрешения базы, строка про
  автоопределение через Program Files убрана как деталь реализации.

Живой прогон: две базы в одном проекте при корневом v8path = 8.5 дали формат
2.17 (8.3.24) и 2.20 (8.3.27), оба порта.

Closes #93

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-09-19 20:35:20 +03:00
co-authored by Claude Opus 5
parent 303db4e9f9
commit 874ae650ca
56 changed files with 1249 additions and 193 deletions
+33 -1
View File
@@ -22,6 +22,7 @@
"name": "Разработка", // отображаемое имя
"type": "file", // "file" или "server"
"path": "C:\\Bases\\MyApp_Dev", // каталог (для file)
"v8path": "C:\\Program Files\\1cv8\\8.3.27.1688\\bin", // платформа именно этой базы (см. ниже)
"user": "Admin", // пользователь 1С
"password": "", // пароль
"aliases": ["dev", "разработка"], // альтернативные имена
@@ -98,6 +99,7 @@
| `path` | string | для file | Каталог файловой базы | `/db-list add` |
| `server` | string | для server | Адрес сервера 1С | `/db-list add` |
| `ref` | string | для server | Имя базы на сервере | `/db-list add` |
| `v8path` | string | нет | Платформа этой базы — перекрывает корневой `v8path` (см. ниже) | Руками |
| `user` | string | нет | Пользователь 1С | `/db-list add` или руками |
| `password` | string | нет | Пароль | `/db-list add` или руками |
| `aliases` | string[] | нет | Альтернативные имена для обращения к базе | `/db-list add` или руками |
@@ -110,6 +112,33 @@
| `repository` | object | нет | Хранилище конфигурации: `path`, `user`, `password` (см. ниже) | Руками |
| `extensions` | array | нет | Расширения конфигурации: `name`, `src`, необязательное `repository` (см. ниже) | Руками |
### Платформа базы (`v8path`)
Корневой `v8path` — платформа проекта, `databases[].v8path` — платформа **этой** базы. Порядок
выбора у всех навыков, запускающих платформу:
1. явный `-V8Path` в вызове;
2. `v8path` записи базы, соответствующей переданному соединению;
3. корневой `v8path`;
4. автопоиск — **самая старшая** установленная платформа.
Запись ищет сам скрипт: сопоставляет параметры соединения с `databases[]` — файловую базу по
`path`, серверную по паре `server` + `ref`. Передавать `-V8Path` вручную не нужно.
Поле закрывает два случая:
- **базы проекта живут на разных версиях платформы** — каждая открывается своей;
- **формат XML-выгрузки** (`version` в `Configuration.xml`) задаёт та платформа, **которая
выгружает**; режим совместимости конфигурации на него не влияет. Выгрузка с 8.5 даёт формат 2.21,
и коллега на 8.3.27 её уже не загрузит: «Неизвестная версия формата». Прибив базе платформу, вы
прибиваете и формат её исходников. Без поля сработает автопоиск и возьмёт самую свежую
установленную платформу — то есть самый новый формат.
Значение — тот же вид пути, что и у корневого: каталог `bin`, либо сам `1cv8.exe`/`ibcmd.exe`
(см. «Движок: 1cv8 или ibcmd»). Путь машинный, а `.v8-project.json` у каждого свой — договориться
внутри команды о версии всё равно придётся, поле лишь не даёт ошибиться при переключении между
базами.
### Хранилище конфигурации (`repository`, `extensions[]`)
База, подключённая к хранилищу конфигурации, не принимает **ни одной** операции конфигуратора без
@@ -194,6 +223,8 @@
5. Если не найдено — Claude спросит пользователя
6. Если база не зарегистрирована — Claude предложит `/db-list add`
Платформу для найденной базы подставляет сам скрипт — см. «Платформа базы (`v8path`)».
## Настройки инструментов
### `webPath` — Apache HTTP Server
@@ -263,7 +294,8 @@ src/
- **разово, в самой задаче** — назвать полный путь к `ibcmd.exe`, например
`C:\\Program Files\\1cv8\\8.3.24.1691\\bin\\ibcmd.exe`;
- **в файле настроек** — прописать в `v8path` не каталог `bin`, а сам файл `...\\bin\\ibcmd.exe` (тогда через
`ibcmd` пойдут все операции).
`ibcmd` пойдут все операции). То же работает и в `v8path` записи базы — тогда через `ibcmd`
пойдут операции только с ней.
Через `ibcmd` навыки работают только с файловыми базами — для клиент-серверных `ibcmd` требует
прямых реквизитов СУБД, которые навыки не запрашивают. Список навыков, работающих через `ibcmd`, —