mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-09-05 17:50:53 +03:00
fix(db-update): -Dynamic принимает on/off — значение "-" парсер PowerShell не связывает
Документированная форма -Dynamic <+/-> работала наполовину: `-Dynamic "+"` через powershell.exe -File связывается, а `-Dynamic "-"` парсер не связывает вовсе — процесс выходит с кодом 2, не напечатав ни строки, и до скрипта управление не доходит. То есть «отключить динамическое обновление» из навыка было недостижимо, и притом молча. Склеенная форма из примера SKILL.md (-Dynamic+) — тоже ошибка разбора. В .py-порте все формы связывались, так что расхождение было ещё и между портами. Каноническая форма теперь словесная: -Dynamic on / off. "+"/"-" и yes/no принимаются для совместимости, но в инструкции не значатся. Значение нормализуется сразу после разбора, обе ветки (1cv8 -Dynamic+/-, ibcmd --dynamic=auto/disable) получают прежний вход. Кейсы dynamic-on / dynamic-off фиксируют, что именно уходит платформе; на прежнем скрипте dynamic-off падает. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QoAJmoNbgWKobA7JGgN5S3
This commit is contained in:
co-authored by
Claude Opus 5
parent
a0f2c4988a
commit
057c1044d9
@@ -11,14 +11,16 @@ allowed-tools:
|
|||||||
|
|
||||||
# /db-update — Обновление конфигурации БД
|
# /db-update — Обновление конфигурации БД
|
||||||
|
|
||||||
Применяет изменения основной конфигурации к конфигурации базы данных (`/UpdateDBCfg`). Обязательный шаг после `/db-load-cf`, `/db-load-xml`, `/db-load-git`.
|
Применяет изменения основной конфигурации к конфигурации базы данных (`/UpdateDBCfg`) —
|
||||||
|
отдельным шагом после загрузки. У `/db-load-xml` и `/db-load-git` то же самое делает
|
||||||
|
ключ `-UpdateDB`.
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
```
|
```
|
||||||
/db-update [database]
|
/db-update [database]
|
||||||
/db-update dev
|
/db-update dev
|
||||||
/db-update dev -Dynamic+
|
/db-update dev -Dynamic on
|
||||||
```
|
```
|
||||||
|
|
||||||
## Параметры подключения
|
## Параметры подключения
|
||||||
@@ -50,7 +52,7 @@ powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-update.ps1" <п
|
|||||||
| `-Password <пароль>` | нет | Пароль |
|
| `-Password <пароль>` | нет | Пароль |
|
||||||
| `-Extension <имя>` | нет | Обновить расширение |
|
| `-Extension <имя>` | нет | Обновить расширение |
|
||||||
| `-AllExtensions` | нет | Обновить все расширения |
|
| `-AllExtensions` | нет | Обновить все расширения |
|
||||||
| `-Dynamic <+/->` | нет | `+` — динамическое обновление, `-` — отключить |
|
| `-Dynamic <on/off>` | нет | `on` — динамическое обновление, без монопольного доступа к базе; `off` — отключить |
|
||||||
| `-Server` | нет | Обновление на стороне сервера |
|
| `-Server` | нет | Обновление на стороне сервера |
|
||||||
| `-WarningsAsErrors` | нет | Предупреждения считать ошибками |
|
| `-WarningsAsErrors` | нет | Предупреждения считать ошибками |
|
||||||
| `-AdditionalV8Arguments <список>` | нет | Доп. аргументы запуска `1cv8.exe` через запятую, напр. `/UseHwLicenses+` |
|
| `-AdditionalV8Arguments <список>` | нет | Доп. аргументы запуска `1cv8.exe` через запятую, напр. `/UseHwLicenses+` |
|
||||||
@@ -68,20 +70,14 @@ powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-update.ps1" <п
|
|||||||
| `-BackgroundSuspend` | Приостановить |
|
| `-BackgroundSuspend` | Приостановить |
|
||||||
| `-BackgroundResume` | Возобновить |
|
| `-BackgroundResume` | Возобновить |
|
||||||
|
|
||||||
## Предупреждения
|
|
||||||
|
|
||||||
- Если обновление **не динамическое** — потребуется **монопольный доступ** к базе (все пользователи должны выйти)
|
|
||||||
- Для серверных баз рекомендуется `-Dynamic+` для обновления без остановки
|
|
||||||
- Если структура данных существенно изменилась (удаление реквизитов, изменение типов) — динамическое обновление может быть невозможно
|
|
||||||
|
|
||||||
## Примеры
|
## Примеры
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
# Обычное обновление (файловая база)
|
# Обычное обновление (файловая база)
|
||||||
powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-update.ps1" -InfoBasePath "C:\Bases\MyDB" -UserName "Admin"
|
powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-update.ps1" -InfoBasePath "C:\Bases\MyDB" -UserName "Admin"
|
||||||
|
|
||||||
# Динамическое обновление (серверная база)
|
# Динамическое обновление
|
||||||
powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-update.ps1" -InfoBaseServer "srv01" -InfoBaseRef "MyDB" -UserName "Admin" -Password "secret" -Dynamic "+"
|
powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-update.ps1" -InfoBaseServer "srv01" -InfoBaseRef "MyDB" -UserName "Admin" -Password "secret" -Dynamic on
|
||||||
|
|
||||||
# Обновление расширения
|
# Обновление расширения
|
||||||
powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-update.ps1" -InfoBasePath "C:\Bases\MyDB" -UserName "Admin" -Extension "МоёРасширение"
|
powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-update.ps1" -InfoBasePath "C:\Bases\MyDB" -UserName "Admin" -Extension "МоёРасширение"
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# db-update v1.19 — Update 1C database configuration
|
# db-update v1.20 — Update 1C database configuration
|
||||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||||
# NB: *nix-раскладку платформы (/opt/1cv8/<ver>/1cv8, без .exe) знает только .py-порт — PS на *nix не исполняется.
|
# NB: *nix-раскладку платформы (/opt/1cv8/<ver>/1cv8, без .exe) знает только .py-порт — PS на *nix не исполняется.
|
||||||
<#
|
<#
|
||||||
@@ -34,7 +34,7 @@
|
|||||||
Обновить все расширения
|
Обновить все расширения
|
||||||
|
|
||||||
.PARAMETER Dynamic
|
.PARAMETER Dynamic
|
||||||
Динамическое обновление: "+" включить, "-" отключить
|
Динамическое обновление: on включить, off отключить
|
||||||
|
|
||||||
.PARAMETER Server
|
.PARAMETER Server
|
||||||
Обновление на стороне сервера
|
Обновление на стороне сервера
|
||||||
@@ -81,8 +81,10 @@ param(
|
|||||||
[Parameter(Mandatory=$false)]
|
[Parameter(Mandatory=$false)]
|
||||||
[switch]$AllExtensions,
|
[switch]$AllExtensions,
|
||||||
|
|
||||||
|
# on/off, а не +/-: значение "-" через powershell.exe -File парсер не связывает и молча
|
||||||
|
# выходит с кодом 2, без единого сообщения. "+"/"-" принимаются, но в инструкции не значатся.
|
||||||
[Parameter(Mandatory=$false)]
|
[Parameter(Mandatory=$false)]
|
||||||
[ValidateSet("+", "-")]
|
[ValidateSet("on", "off", "yes", "no", "+", "-")]
|
||||||
[string]$Dynamic,
|
[string]$Dynamic,
|
||||||
|
|
||||||
[Parameter(Mandatory=$false)]
|
[Parameter(Mandatory=$false)]
|
||||||
@@ -113,6 +115,8 @@ param(
|
|||||||
[string[]]$AdditionalIbcmdArguments = @()
|
[string[]]$AdditionalIbcmdArguments = @()
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if ($Dynamic) { $Dynamic = if (@('on', 'yes', '+') -contains $Dynamic.ToLower()) { '+' } else { '-' } }
|
||||||
|
|
||||||
$OutputEncoding = [System.Text.Encoding]::UTF8
|
$OutputEncoding = [System.Text.Encoding]::UTF8
|
||||||
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
|
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
# db-update v1.19 — Update 1C database configuration
|
# db-update v1.20 — Update 1C database configuration
|
||||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
@@ -544,7 +544,9 @@ def main():
|
|||||||
parser.add_argument("-RepositoryPassword", default="")
|
parser.add_argument("-RepositoryPassword", default="")
|
||||||
parser.add_argument("-Extension", default="")
|
parser.add_argument("-Extension", default="")
|
||||||
parser.add_argument("-AllExtensions", action="store_true")
|
parser.add_argument("-AllExtensions", action="store_true")
|
||||||
parser.add_argument("-Dynamic", default="", choices=["", "+", "-"])
|
# on/off, а не +/-: значение "-" через powershell.exe -File парсер PS не связывает и молча
|
||||||
|
# выходит с кодом 2. "+"/"-" принимаются, но в инструкции не значатся.
|
||||||
|
parser.add_argument("-Dynamic", default="", choices=["", "on", "off", "yes", "no", "+", "-"])
|
||||||
parser.add_argument("-Server", action="store_true")
|
parser.add_argument("-Server", action="store_true")
|
||||||
parser.add_argument("-WarningsAsErrors", action="store_true")
|
parser.add_argument("-WarningsAsErrors", action="store_true")
|
||||||
# Ключ для регрессов и верификации снапшотов, не для повседневного вызова: в SKILL.md
|
# Ключ для регрессов и верификации снапшотов, не для повседневного вызова: в SKILL.md
|
||||||
@@ -559,6 +561,9 @@ def main():
|
|||||||
argv, v8_extra, ibcmd_extra = extract_extra_args(sys.argv[1:], known_opts)
|
argv, v8_extra, ibcmd_extra = extract_extra_args(sys.argv[1:], known_opts)
|
||||||
args = ci_parse_args(parser, argv)
|
args = ci_parse_args(parser, argv)
|
||||||
|
|
||||||
|
if args.Dynamic:
|
||||||
|
args.Dynamic = "+" if args.Dynamic.lower() in ("on", "yes", "+") else "-"
|
||||||
|
|
||||||
args.V8Path = clean_path(args.V8Path, "-V8Path")
|
args.V8Path = clean_path(args.V8Path, "-V8Path")
|
||||||
args.InfoBasePath = clean_path(args.InfoBasePath, "-InfoBasePath")
|
args.InfoBasePath = clean_path(args.InfoBasePath, "-InfoBasePath")
|
||||||
assert_infobase_exists(args.InfoBasePath)
|
assert_infobase_exists(args.InfoBasePath)
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"name": "-Dynamic off передаётся платформе как -Dynamic-",
|
||||||
|
"fakePlatform": {
|
||||||
|
"log": "Обновление конфигурации успешно завершено\r\n"
|
||||||
|
},
|
||||||
|
"args_extra": [
|
||||||
|
"-V8Path",
|
||||||
|
"{fakePlatform}",
|
||||||
|
"-InfoBasePath",
|
||||||
|
"{workDir}/ib",
|
||||||
|
"-Dynamic",
|
||||||
|
"off"
|
||||||
|
],
|
||||||
|
"expect": {
|
||||||
|
"stdoutContains": "/UpdateDBCfg -Dynamic-"
|
||||||
|
},
|
||||||
|
"noSnapshot": "навык ничего не пишет в рабочий каталог — проверяется командная строка"
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"name": "-Dynamic on передаётся платформе как -Dynamic+",
|
||||||
|
"fakePlatform": {
|
||||||
|
"log": "Обновление конфигурации успешно завершено\r\n"
|
||||||
|
},
|
||||||
|
"args_extra": [
|
||||||
|
"-V8Path",
|
||||||
|
"{fakePlatform}",
|
||||||
|
"-InfoBasePath",
|
||||||
|
"{workDir}/ib",
|
||||||
|
"-Dynamic",
|
||||||
|
"on"
|
||||||
|
],
|
||||||
|
"expect": {
|
||||||
|
"stdoutContains": "/UpdateDBCfg -Dynamic+"
|
||||||
|
},
|
||||||
|
"noSnapshot": "навык ничего не пишет в рабочий каталог — проверяется командная строка"
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user