docs(db-guide,v8-project-guide): дополнительные аргументы платформы

Разбор escape hatch для вызывающего: два параметра по движкам, ключи
v8args/ibcmdargs в реестре проекта, что отклоняется и почему,
маскирование секретов и известные пределы разбора (/Psecret, /@).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-07-29 20:44:24 +03:00
co-authored by Claude Opus 5
parent efee7f8f2b
commit 545b32a55f
2 changed files with 63 additions and 0 deletions
+39
View File
@@ -123,6 +123,45 @@ Claude вызовет `/db-run dev`.
- если запрошен режим, который `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, параметры, коды возврата)
+24
View File
@@ -57,6 +57,8 @@
| Поле | Тип | Обяз. | По умолчанию | Описание | Кто заполняет |
|------|-----|:-----:|-------------|----------|---------------|
| `v8path` | string | да | — | Путь к каталогу `bin` платформы 1С (или к файлу `1cv8.exe`/`ibcmd.exe`, см. ниже) | `/db-list add` или руками |
| `v8args` | array | нет | `[]` | Дополнительные аргументы запуска `1cv8.exe` для всех навыков (см. ниже) | Руками |
| `ibcmdargs` | array | нет | `[]` | То же для `ibcmd`, в форме `--ключ=значение` | Руками |
| `databases` | array | да | — | Список баз данных | `/db-list add` |
| `default` | string | нет | — | `id` базы по умолчанию | `/db-list` |
| `editingAllowedCheck` | `"deny"`/`"warn"`/`"off"` | нет | `deny` | Глобальная реакция support-guard на правку объектов на замке (см. ниже) | Руками |
@@ -187,6 +189,28 @@ src/
Через `ibcmd` поддерживаются только файловые базы. Какие именно навыки это умеют — в [руководстве по базам](db-guide.md#движок-1cv8-или-ibcmd).
## Дополнительные аргументы платформы (`v8args`, `ibcmdargs`)
У платформы есть общие ключи запуска, которых нет среди параметров навыков: `/UseHwLicenses+`,
`/L`, `/ClearCache`, `/DebuggerURL` и другие. Их перечисляют в `v8args` — и каждый навык,
запускающий `1cv8.exe`, добавит их в свою командную строку:
```json
{
"v8path": "C:\\Program Files\\1cv8\\8.3.27.2074\\bin",
"v8args": ["/UseHwLicenses+"]
}
```
Типичный случай — машина с аппаратной лицензией: без `/UseHwLicenses+` пакетные запуски падают
с «Не найдена лицензия». Ключ машинно-специфичный, поэтому и задаётся один раз на проект.
`ibcmdargs` — то же самое для `ibcmd`; его ключи пишутся в форме `--ключ=значение`. Списки не
пересекаются: каждый применяется только к своему движку, «чужой» просто не используется. Разово
те же аргументы можно передать параметрами `-AdditionalV8Arguments` / `-AdditionalIbcmdArguments`
— они дописываются после проектных. Подробности и ограничения — в
[руководстве по базам](db-guide.md#дополнительные-аргументы-платформы).
## Минимальный пример
```json