mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-20 01:20:59 +03:00
feat(form-compile): не эмитить HorizontalAlign по умолчанию + чистка SKILL.md
- HorizontalAlign не эмитится, если не задан явно через autoCmdBar.horizontalAlign. Раньше был хардкод Right; платформенный дефолт — Left, эталонные формы типовых (Бригады/ФормаСписка) тег вообще не содержат. - horizontalAlign принимает Left/Center/Right. - SKILL.md: убран раздел «Эвристики компилятора» (внутренняя кухня скрипта), сжато описание autoCmdBar и main — модель пишет DSL явно, помощь компилятора видна в [INFO]/[WARN]-логе. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.7
parent
13174b63b1
commit
6b63177687
@@ -73,8 +73,8 @@ powershell.exe -NoProfile -File .claude/skills/form-compile/scripts/form-compile
|
||||
| `"picture"` | PictureDecoration | имя |
|
||||
| `"picField"` | PictureField | имя |
|
||||
| `"calendar"` | CalendarField | имя |
|
||||
| `"cmdBar"` | CommandBar | имя (синоним: `"commandBar"`) |
|
||||
| `"autoCmdBar"` | AutoCommandBar формы | имя (синоним: `"autoCommandBar"`) — наполняет главную АКП формы (id=-1), не попадает в `<ChildItems>` |
|
||||
| `"cmdBar"` | CommandBar | имя |
|
||||
| `"autoCmdBar"` | AutoCommandBar формы | имя — наполняет главную АКП формы (id=-1), не попадает в `<ChildItems>` |
|
||||
| `"popup"` | Popup | имя |
|
||||
|
||||
### Общие свойства (все типы элементов)
|
||||
@@ -212,13 +212,13 @@ powershell.exe -NoProfile -File .claude/skills/form-compile/scripts/form-compile
|
||||
|
||||
### Главная автокомандная панель формы (autoCmdBar)
|
||||
|
||||
Наполняет встроенную AutoCommandBar формы (id=-1) — ту самую верхнюю панель, на которой платформа автоматически размещает «Создать», «Записать», «Провести», «Заполнить» и т.п. По умолчанию `autoCmdBar` НЕ нужно указывать — компилятор сам решит, нужно ли отключать автозаполнение (см. «Эвристики» ниже). Используйте `autoCmdBar`, когда хотите добавить кастомные кнопки в эту главную панель или явно управлять автозаполнением.
|
||||
Наполняет встроенную AutoCommandBar формы (id=-1) кастомными кнопками. Указывать только если нужно добавить свои кнопки на главную панель или явно управлять автозаполнением.
|
||||
|
||||
| Ключ | Описание |
|
||||
|------|----------|
|
||||
| `autofill: true/false` | Явно включить/выключить автозаполнение стандартными командами |
|
||||
| `horizontalAlign` | `"Left"` / `"Right"` (по умолчанию `"Right"`) |
|
||||
| `children: [...]` | Кастомные кнопки/popup, добавляемые в главную панель |
|
||||
| `autofill: true/false` | Автозаполнение стандартными командами |
|
||||
| `horizontalAlign` | `"Left"` / `"Center"` / `"Right"` |
|
||||
| `children: [...]` | Кнопки/popup |
|
||||
|
||||
```json
|
||||
{ "autoCmdBar": "ФормаКоманднаяПанель", "autofill": true, "children": [
|
||||
@@ -227,13 +227,6 @@ powershell.exe -NoProfile -File .claude/skills/form-compile/scripts/form-compile
|
||||
]}
|
||||
```
|
||||
|
||||
### Эвристики компилятора (что делается автоматически)
|
||||
|
||||
1. **Автозаполнение главной АКП.** Если в DSL нет ни одного `cmdBar` и нет `autoCmdBar` — главная АКП формы оставляется с автозаполнением `true` (нативное поведение платформы; платформа сама насыпает стандартные команды). Если есть хотя бы один `cmdBar` — автозаполнение выключается, чтобы команды не дублировались. Перекрывается явным `autoCmdBar`.
|
||||
2. **Главный реквизит выводится по типу.** Если ни у одного реквизита не указан `main: true`, компилятор пробует определить главный по типу: `*Object.*`, `*RecordSet.*`, `DynamicList`, `ConstantsSet`. Ровно один кандидат → проставляется `main: true` молча (с `[INFO]`-логом). Несколько → предупреждение, угадывания нет — нужно указать явно. Чтобы запретить инференс — поставьте `"main": false`.
|
||||
3. **Динамический список → командная панель таблицы.** Если главный реквизит формы — `DynamicList`, то для `table` с `path`, равным имени этого реквизита, автоматически: `tableAutofill: false` и `commandBarLocation: "None"` (если не заданы явно). Это убирает дублирование команд между главной АКП и панелью таблицы — типовой паттерн форм списков.
|
||||
4. **Косметика.** `<Autofill>true</Autofill>` не эмитится явно — соответствует поведению Конфигуратора и эталонным формам типовых.
|
||||
|
||||
### Выпадающее меню (popup)
|
||||
|
||||
| Ключ | Описание |
|
||||
@@ -266,7 +259,7 @@ powershell.exe -NoProfile -File .claude/skills/form-compile/scripts/form-compile
|
||||
```
|
||||
|
||||
- `savedData: true` — сохраняемые данные
|
||||
- `main: true` — главный реквизит формы. Если не указан ни у одного реквизита, компилятор сам выводит главный по типу: `*Object.*`, `*RecordSet.*`, `DynamicList`, `ConstantsSet`. Ровно один кандидат → проставляется молча. Несколько → нужно указать явно. Чтобы запретить инференс — поставьте `"main": false`.
|
||||
- `main: true` — главный реквизит формы (например, основной `*Object.*`, `DynamicList`, `*RecordSet.*`)
|
||||
|
||||
### Команды (commands)
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# form-compile v1.8 — Compile 1C managed form from JSON or object metadata
|
||||
# form-compile v1.9 — Compile 1C managed form from JSON or object metadata
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
param(
|
||||
[string]$JsonPath,
|
||||
@@ -2826,7 +2826,7 @@ if ($def.excludedCommands -and $def.excludedCommands.Count -gt 0) {
|
||||
# 12d. AutoCommandBar (always present, id=-1)
|
||||
$acbAutofill = Compute-MainAcbAutofill
|
||||
$acbName = "ФормаКоманднаяПанель"
|
||||
$acbHAlign = "Right"
|
||||
$acbHAlign = $null
|
||||
if ($script:mainAcbDef) {
|
||||
if ($null -ne $script:mainAcbDef.PSObject.Properties["autoCmdBar"] -and "$($script:mainAcbDef.autoCmdBar)" -ne "") {
|
||||
$acbName = "$($script:mainAcbDef.autoCmdBar)"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env python3
|
||||
# form-compile v1.8 — Compile 1C managed form from JSON or object metadata
|
||||
# form-compile v1.9 — Compile 1C managed form from JSON or object metadata
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
import argparse
|
||||
import copy
|
||||
@@ -2691,7 +2691,7 @@ def main():
|
||||
# AutoCommandBar (always present, id=-1)
|
||||
acb_autofill = _compute_main_acb_autofill()
|
||||
acb_name = '\u0424\u043e\u0440\u043c\u0430\u041a\u043e\u043c\u0430\u043d\u0434\u043d\u0430\u044f\u041f\u0430\u043d\u0435\u043b\u044c'
|
||||
acb_halign = 'Right'
|
||||
acb_halign = None
|
||||
if main_acb_def is not None:
|
||||
v = main_acb_def.get('autoCmdBar')
|
||||
if v:
|
||||
|
||||
Reference in New Issue
Block a user