mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-19 00:59:40 +03:00
Add form-info skill for compact analysis of 1C managed forms
Parses Form.xml (up to 28K lines) and outputs a compact summary (40-180 lines): element tree with group orientation, data bindings, events, visibility flags, attributes with types, commands, and parameters. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,141 @@
|
||||
# Управляемые формы (Form)
|
||||
|
||||
Навыки группы `/form-*` позволяют анализировать управляемые формы 1С:Предприятия 8.3 из XML-исходников конфигурации, не читая тысячи строк XML.
|
||||
|
||||
## Навыки
|
||||
|
||||
| Навык | Параметры | Описание |
|
||||
|-------|-----------|----------|
|
||||
| `/form-info` | `<FormPath>` | Компактная сводка: дерево элементов, реквизиты, команды, события |
|
||||
|
||||
## Сценарии использования
|
||||
|
||||
### Анализ формы перед модификацией
|
||||
|
||||
Файлы Form.xml содержат от сотен до десятков тысяч строк XML. 80% объёма — визуальный шум (цвета, шрифты, размеры, автогенерированные подсказки). `/form-info` извлекает суть.
|
||||
|
||||
```
|
||||
> Покажи структуру формы документа РеализацияТоваровУслуг
|
||||
```
|
||||
|
||||
Claude найдёт Form.xml и вызовет `/form-info`. Результат — компактная сводка (40–100 строк вместо тысяч):
|
||||
|
||||
```
|
||||
=== Form: ФормаДокумента (Documents.РеализацияТоваровУслуг) ===
|
||||
|
||||
Properties: AutoTitle=false, CommandBarLocation=None
|
||||
|
||||
Events:
|
||||
OnCreateAtServer -> ПриСозданииНаСервере
|
||||
OnOpen -> ПриОткрытии
|
||||
|
||||
Elements:
|
||||
├─ [Group:AH] ГруппаШапка
|
||||
│ ├─ [Input] Организация -> Объект.Организация {OnChange}
|
||||
│ └─ [Input] Контрагент -> Объект.Контрагент {OnChange, StartChoice}
|
||||
├─ [Table] Товары -> Объект.Товары
|
||||
│ ├─ [Input] Номенклатура -> Объект.Товары.Номенклатура {OnChange}
|
||||
│ └─ [Input] Сумма -> Объект.Товары.Сумма [ro]
|
||||
└─ [Pages] Страницы
|
||||
├─ [Page] Основное (5 items)
|
||||
└─ [Page] Печать (2 items)
|
||||
|
||||
Attributes:
|
||||
*Объект: DocumentObject.РеализацияТоваровУслуг (main)
|
||||
Валюта: CatalogRef.Валюты
|
||||
...
|
||||
|
||||
Commands:
|
||||
Печать -> ПечатьДокумента [Ctrl+P]
|
||||
```
|
||||
|
||||
### Добавление элемента на форму
|
||||
|
||||
Чтобы добавить поле на форму, нужно знать структуру групп и ориентацию (горизонтальная/вертикальная). `/form-info` показывает это в дереве элементов.
|
||||
|
||||
```
|
||||
> Добавь поле "Склад" в шапку формы документа
|
||||
```
|
||||
|
||||
Claude вызовет `/form-info`, увидит `[Group:AH] ГруппаШапка` → `[Group:V] ГруппаШапкаЛевая`, поймёт куда вставить элемент в XML.
|
||||
|
||||
### Поиск обработчиков и привязок
|
||||
|
||||
Из сводки видно, какие события подключены к каким элементам:
|
||||
|
||||
```
|
||||
> Какие обработчики срабатывают при изменении контрагента?
|
||||
```
|
||||
|
||||
Claude вызовет `/form-info` и найдёт: `[Input] Контрагент -> Объект.Контрагент {OnChange, StartChoice}` — далее откроет модуль формы и найдёт процедуры по именам событий.
|
||||
|
||||
### Точечное погружение в детали
|
||||
|
||||
Сводка — это карта. Для деталей по конкретному элементу достаточно grep по имени из сводки:
|
||||
|
||||
```
|
||||
> Покажи все свойства элемента ДоговорКонтрагента
|
||||
```
|
||||
|
||||
Claude сделает grep по Form.xml и найдёт полный XML-блок с ChoiceParameters, ChoiceFoldersAndItems, стилями и прочими свойствами.
|
||||
|
||||
## Чтение вывода
|
||||
|
||||
### Дерево элементов
|
||||
|
||||
| Обозначение | Элемент |
|
||||
|---|---|
|
||||
| `[Group:V]` `[Group:H]` `[Group:AH]` `[Group:AV]` | Группа (Vertical / Horizontal / AlwaysHorizontal / AlwaysVertical) |
|
||||
| `[Input]` | Поле ввода |
|
||||
| `[Check]` | Флажок |
|
||||
| `[Label]` | Декоративная надпись |
|
||||
| `[LabelField]` | Поле надписи (привязанное к данным) |
|
||||
| `[Table]` | Таблица |
|
||||
| `[Pages]` / `[Page]` | Вкладки (страницы показывают количество элементов) |
|
||||
| `[Button]` | Кнопка |
|
||||
| `[CmdBar]` | Командная панель |
|
||||
| `[Popup]` | Выпадающее меню |
|
||||
| `[Picture]` | Декоративная картинка |
|
||||
| `[PicField]` | Поле картинки |
|
||||
| `[Calendar]` | Календарь |
|
||||
|
||||
### Флаги
|
||||
|
||||
Показываются только при отклонении от умолчания:
|
||||
- `[hidden]` — элемент скрыт (Visible=false)
|
||||
- `[disabled]` — элемент недоступен (Enabled=false)
|
||||
- `[ro]` — только чтение (ReadOnly=true)
|
||||
- `,collapse` — сворачиваемая группа (Behavior=Collapsible)
|
||||
|
||||
### Привязки и события
|
||||
|
||||
- `-> Объект.Поле` — DataPath (привязка к данным)
|
||||
- `-> Form.Command.Имя` — привязка к команде формы
|
||||
- `{OnChange, StartChoice}` — имена подключённых событий
|
||||
- `[title:Текст]` — заголовок, если отличается от имени элемента
|
||||
|
||||
### Реквизиты
|
||||
|
||||
- `*Объект: DocumentObject.Реализация (main)` — основной реквизит формы
|
||||
- `Таблица: ValueTable [Кол1: тип, Кол2: тип]` — таблица значений с колонками
|
||||
- `Список: DynamicList -> Catalog.Пользователи` — динамический список с основной таблицей
|
||||
|
||||
## Примеры слеш-команд
|
||||
|
||||
```
|
||||
> /form-info upload/acc_8.3.24/Documents/РеализацияТоваровУслуг/Forms/ФормаДокумента/Ext/Form.xml
|
||||
> /form-info src/МояОбработка/Forms/Форма/Ext/Form.xml
|
||||
```
|
||||
|
||||
## Связь с EPF-навыками
|
||||
|
||||
`/form-info` работает с формами из любых источников — конфигурации и внешних обработок. При работе с обработками:
|
||||
|
||||
1. `/epf-add-form` — создать форму
|
||||
2. `/form-info` — проанализировать существующую форму
|
||||
3. Модифицировать Form.xml, ориентируясь на сводку
|
||||
4. `/epf-build` — собрать EPF
|
||||
|
||||
## Спецификации
|
||||
|
||||
- [Управляемая форма](1c-form-spec.md) — Form.xml, элементы, команды, реквизиты, система типов
|
||||
Reference in New Issue
Block a user