Files
cc-1c-skills/.claude/skills/form-info/SKILL.md
T
Nick ShirokovandClaude Opus 4.6 c665800916 Improve form skills: validation, docs, round-trip consistency
form-compile: warn about unknown DSL keys in element definitions,
document stdCommand/command button keys and EPF-specific notes.

form-validate: check that form-level Title uses multilingual XML,
not plain text (which causes XDTO errors at build time).

form-add: warn about duplicate element names, clarify after-not-found
message when using into+after together.

form-info: show Title in header instead of Properties line, display
commands as DSL-friendly format (-> Name [cmd], -> Close [std])
instead of raw Form.Command/Form.StandardCommand paths.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 15:44:32 +03:00

181 lines
7.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: form-info
description: Анализ структуры управляемой формы 1С (Form.xml) — элементы, реквизиты, команды, события
argument-hint: <FormPath>
allowed-tools:
- Bash
- Read
- Glob
---
# /form-info — Компактная сводка формы
Читает Form.xml управляемой формы и выводит компактную сводку: дерево элементов, реквизиты с типами, команды, события. Заменяет необходимость читать тысячи строк XML.
## Использование
```
/form-info <FormPath>
```
## Параметры
| Параметр | Обязательный | По умолчанию | Описание |
|-----------|:------------:|--------------|---------------------------------------------|
| FormPath | да | — | Путь к файлу Form.xml |
| Limit | нет | `150` | Макс. строк вывода (защита от переполнения) |
| Offset | нет | `0` | Пропустить N строк (для пагинации) |
## Команда
```powershell
powershell.exe -NoProfile -File .claude\skills\form-info\scripts\form-info.ps1 -FormPath "<путь к Form.xml>"
```
С пагинацией:
```powershell
powershell.exe -NoProfile -File .claude\skills\form-info\scripts\form-info.ps1 -FormPath "<путь>" -Offset 150
```
## Чтение вывода
### Заголовок
```
=== Form: ФормаДокумента — "Реализация товаров и услуг" (Documents.РеализацияТоваровУслуг) ===
```
Имя формы, заголовок (Title) и контекст объекта определяются из пути к файлу и XML.
### Properties — свойства формы
Только нестандартные свойства (отличающиеся от умолчания). Title показывается в заголовке, не здесь:
```
Properties: AutoTitle=false, WindowOpeningMode=LockOwnerWindow, CommandBarLocation=Bottom
```
### Events — обработчики событий формы
```
Events:
OnCreateAtServer -> ПриСозданииНаСервере
OnOpen -> ПриОткрытии
```
### Elements — дерево UI-элементов
Компактное дерево с типами, привязками к данным, флагами и событиями:
```
Elements:
├─ [Group:AH] ГруппаШапка
│ ├─ [Input] Организация -> Объект.Организация {OnChange}
│ └─ [Input] Договор -> Объект.Договор [visible:false] {StartChoice}
├─ [Table] Товары -> Объект.Товары
│ ├─ [Input] Номенклатура -> Объект.Товары.Номенклатура {OnChange}
│ └─ [Input] Сумма -> Объект.Товары.Сумма [ro]
└─ [Pages] Страницы
├─ [Page] Основное (5 items)
└─ [Page] Печать (2 items)
```
**Сокращения типов элементов:**
| Сокращение | Элемент |
|---|---|
| `[Group:V]` | UsualGroup Vertical |
| `[Group:H]` | UsualGroup Horizontal |
| `[Group:AH]` | UsualGroup AlwaysHorizontal |
| `[Group:AV]` | UsualGroup AlwaysVertical |
| `[Group]` | UsualGroup (ориентация по умолчанию) |
| `[Input]` | InputField |
| `[Check]` | CheckBoxField |
| `[Label]` | LabelDecoration |
| `[LabelField]` | LabelField |
| `[Picture]` | PictureDecoration |
| `[PicField]` | PictureField |
| `[Calendar]` | CalendarField |
| `[Table]` | Table |
| `[Button]` | Button |
| `[CmdBar]` | CommandBar |
| `[Pages]` | Pages |
| `[Page]` | Page (показывает кол-во элементов вместо раскрытия) |
| `[Popup]` | Popup |
| `[BtnGroup]` | ButtonGroup |
**Флаги** (только при отклонении от умолчания):
- `[visible:false]` — элемент скрыт (Visible=false)
- `[enabled:false]` — элемент недоступен (Enabled=false)
- `[ro]` — ReadOnly=true
- `,collapse` — Behavior=Collapsible (для групп)
**Привязка к данным**: `-> Объект.Поле` — DataPath
**Привязка к команде**: `-> ИмяКоманды [cmd]` — команда формы, `-> Close [std]` — стандартная команда
**События**: `{OnChange, StartChoice}` — имена обработчиков
**Заголовок**: `[title:Текст]` — только если отличается от имени элемента
### Attributes — реквизиты формы
```
Attributes:
*Объект: DocumentObject.РеализацияТоваров (main)
Валюта: CatalogRef.Валюты
Итого: decimal(15,2)
Таблица: ValueTable [Номенклатура: CatalogRef.Номенклатура, Кол: decimal(10,3)]
Список: DynamicList -> Catalog.Пользователи
```
- `*` и `(main)` — основной реквизит формы (MainAttribute)
- Типы ValueTable/ValueTree раскрывают колонки в `[...]`
- DynamicList показывает MainTable через `->`
### Parameters — параметры формы
```
Parameters:
Ключ: DocumentRef.ЗакупкаТоваров (key)
Основание: DocumentRef.*
```
- `(key)` — ключевой параметр (KeyParameter)
### Commands — команды формы
```
Commands:
Печать -> ПечатьДокумента [Ctrl+P]
Заполнить -> ЗаполнитьОбработка
```
Формат: `Имя -> Обработчик [Сочетание]`
## Что пропускается
Скрипт убирает 80%+ XML-объёма:
- Визуальные свойства (Width, Height, Color, Font, Border, Align, Stretch)
- Автогенерированные ExtendedTooltip и ContextMenu
- Мультиязычные обёртки (v8:item/v8:lang/v8:content)
- Namespace-декларации
- Атрибуты id
Для точечного изучения деталей — используйте grep по имени элемента из сводки.
## Когда использовать
- **Перед модификацией формы**: понять структуру, найти нужную группу для вставки элемента
- **Анализ формы**: какие реквизиты, команды, обработчики задействованы
- **Навигация по большим формам**: 28K строк XML → 50-100 строк контекста
## Защита от переполнения
Вывод ограничен 150 строками по умолчанию. При превышении:
```
[TRUNCATED] Shown 150 of 220 lines. Use -Offset 150 to continue.
```
Используйте `-Offset N` и `-Limit N` для постраничного просмотра.