diff --git a/docs/db-guide.md b/docs/db-guide.md index 31e7109c..547a583f 100644 --- a/docs/db-guide.md +++ b/docs/db-guide.md @@ -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, параметры, коды возврата) diff --git a/docs/v8-project-guide.md b/docs/v8-project-guide.md index ab03cc86..1a8b826e 100644 --- a/docs/v8-project-guide.md +++ b/docs/v8-project-guide.md @@ -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