mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-30 00:16:56 +03:00
feat(form-compile): add --from-object mode for auto form generation from metadata
Read 1C object XML (Document/Catalog), apply ERP preset, generate Form.xml automatically. Supports Item/List/Choice/Folder purposes with auto-resolve of object path and purpose from OutputPath convention. Also extends DSL with DynamicList Settings, Table choiceMode/initialTreeView/enableDrag. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.6
parent
3c48451704
commit
076bbcb9d5
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
name: form-compile
|
name: form-compile
|
||||||
description: Компиляция управляемой формы 1С из компактного JSON-определения. Используй когда нужно создать форму с нуля по описанию элементов
|
description: Компиляция управляемой формы 1С из JSON-определения или из метаданных объекта. Используй когда нужно создать форму с нуля по описанию элементов или сгенерировать типовую форму
|
||||||
argument-hint: <JsonPath> <OutputPath>
|
argument-hint: <JsonPath> <OutputPath> | -FromObject <OutputPath>
|
||||||
allowed-tools:
|
allowed-tools:
|
||||||
- Bash
|
- Bash
|
||||||
- Read
|
- Read
|
||||||
@@ -9,29 +9,30 @@ allowed-tools:
|
|||||||
- Glob
|
- Glob
|
||||||
---
|
---
|
||||||
|
|
||||||
# /form-compile — Генерация Form.xml из JSON DSL
|
# /form-compile — Генерация Form.xml
|
||||||
|
|
||||||
Принимает компактное JSON-определение формы (20–50 строк) и генерирует полный корректный Form.xml (100–500+ строк) с namespace-декларациями, автогенерированными companion-элементами, последовательными ID.
|
Два режима:
|
||||||
|
1. **JSON DSL** — из JSON-определения формы
|
||||||
|
2. **From object** (`-FromObject`) — автоматически из метаданных объекта 1С по пресету ERP
|
||||||
|
|
||||||
> **При проектировании формы с нуля (5+ элементов или нечёткие требования)** — вызовите `/form-patterns` для загрузки справочника: архетипы, конвенции именования, продвинутые паттерны. Для простых форм (1–3 поля, пользователь описал что нужно) — не нужно.
|
> **При проектировании формы с нуля (5+ элементов или нечёткие требования)** — вызовите `/form-patterns` для загрузки справочника. Для простых форм (1–3 поля) — не нужно.
|
||||||
|
|
||||||
## Использование
|
|
||||||
|
|
||||||
```
|
|
||||||
/form-compile <JsonPath> <OutputPath>
|
|
||||||
```
|
|
||||||
|
|
||||||
## Параметры
|
## Параметры
|
||||||
|
|
||||||
| Параметр | Обязательный | Описание |
|
| Параметр | Обязательный | Описание |
|
||||||
|------------|:------------:|-----------------------------------|
|
|------------|:------------:|---------------------------------|
|
||||||
| JsonPath | да | Путь к JSON-определению формы |
|
| JsonPath | режим 1 | Путь к JSON-определению формы |
|
||||||
| OutputPath | да | Путь к выходному файлу Form.xml |
|
| OutputPath | да | Путь к выходному Form.xml |
|
||||||
|
| FromObject | режим 2 | Флаг (без значения) — генерация по метаданным объекта |
|
||||||
|
|
||||||
## Команда
|
## Команда
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
powershell.exe -NoProfile -File .claude/skills/form-compile/scripts/form-compile.ps1 -JsonPath "<json>" -OutputPath "<xml>"
|
# Режим JSON DSL
|
||||||
|
powershell.exe -NoProfile -File .claude/skills/form-compile/scripts/form-compile.ps1 -JsonPath "<json>" -OutputPath "<Form.xml>"
|
||||||
|
|
||||||
|
# Режим from-object (объект и purpose выводятся из OutputPath; Document и Catalog)
|
||||||
|
powershell.exe -NoProfile -File .claude/skills/form-compile/scripts/form-compile.ps1 -FromObject -OutputPath "<.../TypePlural/ObjectName/Forms/FormName/Ext/Form.xml>"
|
||||||
```
|
```
|
||||||
|
|
||||||
## JSON DSL — справка
|
## JSON DSL — справка
|
||||||
@@ -167,6 +168,12 @@ powershell.exe -NoProfile -File .claude/skills/form-compile/scripts/form-compile
|
|||||||
| `footer: true` | Показать подвал |
|
| `footer: true` | Показать подвал |
|
||||||
| `commandBarLocation` | `"None"`, `"Top"`, `"Auto"` |
|
| `commandBarLocation` | `"None"`, `"Top"`, `"Auto"` |
|
||||||
| `searchStringLocation` | `"None"`, `"Top"`, `"Auto"` |
|
| `searchStringLocation` | `"None"`, `"Top"`, `"Auto"` |
|
||||||
|
| `choiceMode: true` | Режим выбора (для форм выбора) |
|
||||||
|
| `initialTreeView` | `"ExpandTopLevel"` и др. (иерархические списки) |
|
||||||
|
| `enableDrag: true` | Разрешить перетаскивание |
|
||||||
|
| `enableStartDrag: true` | Разрешить начало перетаскивания |
|
||||||
|
| `rowPictureDataPath` | Путь к картинке строки (напр. `"Список.DefaultPicture"`) |
|
||||||
|
| `tableAutofill: false` | Управление Autofill внутреннего AutoCommandBar |
|
||||||
|
|
||||||
### Страницы (pages + page)
|
### Страницы (pages + page)
|
||||||
|
|
||||||
@@ -221,6 +228,9 @@ powershell.exe -NoProfile -File .claude/skills/form-compile/scripts/form-compile
|
|||||||
|
|
||||||
```json
|
```json
|
||||||
{ "name": "Объект", "type": "DataProcessorObject.Загрузка", "main": true }
|
{ "name": "Объект", "type": "DataProcessorObject.Загрузка", "main": true }
|
||||||
|
{ "name": "Список", "type": "DynamicList", "main": true, "settings": {
|
||||||
|
"mainTable": "Catalog.Номенклатура", "dynamicDataRead": true
|
||||||
|
}}
|
||||||
{ "name": "Итого", "type": "decimal(15,2)" }
|
{ "name": "Итого", "type": "decimal(15,2)" }
|
||||||
{ "name": "Таблица", "type": "ValueTable", "columns": [
|
{ "name": "Таблица", "type": "ValueTable", "columns": [
|
||||||
{ "name": "Номенклатура", "type": "CatalogRef.Номенклатура" },
|
{ "name": "Номенклатура", "type": "CatalogRef.Номенклатура" },
|
||||||
|
|||||||
@@ -0,0 +1,44 @@
|
|||||||
|
{
|
||||||
|
"name": "erp-standard",
|
||||||
|
"description": "ERP 8.3.24 standard form layout",
|
||||||
|
|
||||||
|
"document.item": {
|
||||||
|
"header": {
|
||||||
|
"position": "insidePage",
|
||||||
|
"layout": "2col",
|
||||||
|
"distribute": "even",
|
||||||
|
"dateTitle": "от"
|
||||||
|
},
|
||||||
|
"footer": {
|
||||||
|
"fields": ["Комментарий"],
|
||||||
|
"position": "insidePage"
|
||||||
|
},
|
||||||
|
"tabularSections": {
|
||||||
|
"container": "pages",
|
||||||
|
"exclude": ["ДополнительныеРеквизиты"],
|
||||||
|
"lineNumber": true
|
||||||
|
},
|
||||||
|
"additional": {
|
||||||
|
"position": "page",
|
||||||
|
"layout": "2col",
|
||||||
|
"bspGroup": true
|
||||||
|
},
|
||||||
|
"properties": {
|
||||||
|
"autoTitle": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"catalog.item": {
|
||||||
|
"codeDescription": {
|
||||||
|
"layout": "horizontal",
|
||||||
|
"order": "descriptionFirst"
|
||||||
|
},
|
||||||
|
"parent": {
|
||||||
|
"title": "Входит в группу",
|
||||||
|
"position": "afterCodeDescription"
|
||||||
|
},
|
||||||
|
"tabularSections": {
|
||||||
|
"exclude": ["ДополнительныеРеквизиты", "Представления"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user