mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-13 06:53:21 +03:00
Add form-compile skill for generating Form.xml from JSON DSL
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.6
parent
580124a971
commit
cc2595b57a
+52
-5
@@ -1,12 +1,13 @@
|
||||
# Управляемые формы (Form)
|
||||
|
||||
Навыки группы `/form-*` позволяют анализировать управляемые формы 1С:Предприятия 8.3 из XML-исходников конфигурации, не читая тысячи строк XML.
|
||||
Навыки группы `/form-*` позволяют анализировать и генерировать управляемые формы 1С:Предприятия 8.3 из XML-исходников, не читая тысячи строк XML.
|
||||
|
||||
## Навыки
|
||||
|
||||
| Навык | Параметры | Описание |
|
||||
|-------|-----------|----------|
|
||||
| `/form-info` | `<FormPath>` | Компактная сводка: дерево элементов, реквизиты, команды, события |
|
||||
| `/form-compile` | `<JsonPath> <OutputPath>` | Генерация Form.xml из компактного JSON-определения |
|
||||
|
||||
## Сценарии использования
|
||||
|
||||
@@ -120,22 +121,68 @@ Claude сделает grep по Form.xml и найдёт полный XML-бло
|
||||
- `Таблица: ValueTable [Кол1: тип, Кол2: тип]` — таблица значений с колонками
|
||||
- `Список: DynamicList -> Catalog.Пользователи` — динамический список с основной таблицей
|
||||
|
||||
## Генерация формы с нуля
|
||||
|
||||
`/form-compile` принимает компактное JSON-определение (20–50 строк) и генерирует полный Form.xml (100–500+ строк) с namespace-декларациями, companion-элементами и последовательными ID.
|
||||
|
||||
```
|
||||
> Создай форму загрузки данных с полями Организация, Контрагент, таблицей Товары и кнопкой Загрузить
|
||||
```
|
||||
|
||||
Claude создаст JSON-определение и вызовет `/form-compile`. Пример JSON:
|
||||
|
||||
```json
|
||||
{
|
||||
"properties": { "autoTitle": false },
|
||||
"events": { "OnCreateAtServer": "ПриСозданииНаСервере" },
|
||||
"elements": [
|
||||
{ "group": "horizontal", "name": "Шапка", "children": [
|
||||
{ "input": "Организация", "path": "Объект.Организация", "on": ["OnChange"] },
|
||||
{ "input": "Контрагент", "path": "Объект.Контрагент" }
|
||||
]},
|
||||
{ "table": "Товары", "path": "Объект.Товары", "columns": [
|
||||
{ "input": "Номенклатура", "path": "Объект.Товары.Номенклатура" },
|
||||
{ "input": "Сумма", "path": "Объект.Товары.Сумма", "readOnly": true }
|
||||
]},
|
||||
{ "button": "Загрузить", "command": "Загрузить" }
|
||||
],
|
||||
"attributes": [
|
||||
{ "name": "Объект", "type": "DataProcessorObject.ЗагрузкаДанных", "main": true }
|
||||
],
|
||||
"commands": [
|
||||
{ "name": "Загрузить", "action": "ЗагрузитьОбработка" }
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### Верификация результата
|
||||
|
||||
После компиляции используйте `/form-info` для проверки:
|
||||
|
||||
```
|
||||
> /form-info src/МояОбработка/Forms/Форма/Ext/Form.xml
|
||||
```
|
||||
|
||||
Структура в сводке должна совпадать с определением в JSON.
|
||||
|
||||
## Примеры слеш-команд
|
||||
|
||||
```
|
||||
> /form-info upload/acc_8.3.24/Documents/РеализацияТоваровУслуг/Forms/ФормаДокумента/Ext/Form.xml
|
||||
> /form-info src/МояОбработка/Forms/Форма/Ext/Form.xml
|
||||
> /form-compile src/form.json src/МояОбработка/Forms/Форма/Ext/Form.xml
|
||||
```
|
||||
|
||||
## Связь с EPF-навыками
|
||||
|
||||
`/form-info` работает с формами из любых источников — конфигурации и внешних обработок. При работе с обработками:
|
||||
`/form-info` и `/form-compile` работают с формами из любых источников — конфигурации и внешних обработок. При работе с обработками:
|
||||
|
||||
1. `/epf-add-form` — создать форму
|
||||
2. `/form-info` — проанализировать существующую форму
|
||||
3. Модифицировать Form.xml, ориентируясь на сводку
|
||||
1. `/epf-add-form` — создать форму (каркас)
|
||||
2. `/form-compile` — сгенерировать Form.xml из JSON-определения
|
||||
3. `/form-info` — проверить результат
|
||||
4. `/epf-build` — собрать EPF
|
||||
|
||||
## Спецификации
|
||||
|
||||
- [Управляемая форма](1c-form-spec.md) — Form.xml, элементы, команды, реквизиты, система типов
|
||||
- [Form DSL](form-dsl-spec.md) — JSON-формат описания формы для `/form-compile`
|
||||
|
||||
Reference in New Issue
Block a user