$npx -y skills add Arman-Kudaibergenov/1c-ai-development-kit --skill form-editЭтот скилл MUST быть вызван когда нужно точечно добавить или изменить элементы, реквизиты и команды в существующей управляемой форме. SHOULD также вызывать для инкрементальных изменений готовой формы. Do NOT использовать для создания формы с нуля — используй form-compile; для ана
| 1 | # /form-edit — Редактирование формы |
| 2 | |
| 3 | Добавляет элементы, реквизиты и/или команды в существующий Form.xml. Автоматически выделяет ID из правильного пула, генерирует companion-элементы (ContextMenu, ExtendedTooltip, и др.) и обработчики событий. |
| 4 | |
| 5 | ## Использование |
| 6 | |
| 7 | ``` |
| 8 | /form-edit <FormPath> <JsonPath> |
| 9 | ``` |
| 10 | |
| 11 | ## Параметры |
| 12 | |
| 13 | | Параметр | Обязательный | Описание | |
| 14 | |-----------|:------------:|----------------------------------| |
| 15 | | FormPath | да | Путь к существующему Form.xml | |
| 16 | | JsonPath | да | Путь к JSON с описанием добавлений | |
| 17 | |
| 18 | ## Команда |
| 19 | |
| 20 | ```powershell |
| 21 | powershell.exe -NoProfile -File .claude/skills/form-edit/scripts/form-edit.ps1 -FormPath "<путь>" -JsonPath "<путь>" |
| 22 | ``` |
| 23 | |
| 24 | ## JSON формат |
| 25 | |
| 26 | ```json |
| 27 | { |
| 28 | "into": "ГруппаШапка", |
| 29 | "after": "Контрагент", |
| 30 | "elements": [ |
| 31 | { "input": "Склад", "path": "Объект.Склад", "on": ["OnChange"] } |
| 32 | ], |
| 33 | "attributes": [ |
| 34 | { "name": "СуммаИтого", "type": "decimal(15,2)" } |
| 35 | ], |
| 36 | "commands": [ |
| 37 | { "name": "Рассчитать", "action": "РассчитатьОбработка" } |
| 38 | ] |
| 39 | } |
| 40 | ``` |
| 41 | |
| 42 | ### Позиционирование элементов |
| 43 | |
| 44 | | Ключ | По умолчанию | Описание | |
| 45 | |------|-------------|----------| |
| 46 | | `into` | корневой ChildItems | Имя группы/таблицы/страницы, куда вставлять | |
| 47 | | `after` | в конец | Имя элемента, после которого вставлять | |
| 48 | |
| 49 | ### Типы элементов |
| 50 | |
| 51 | Те же DSL-ключи, что в `/form-compile`: |
| 52 | |
| 53 | | Ключ | XML тег | Companions | |
| 54 | |------|---------|------------| |
| 55 | | `input` | InputField | ContextMenu, ExtendedTooltip | |
| 56 | | `check` | CheckBoxField | ContextMenu, ExtendedTooltip | |
| 57 | | `label` | LabelDecoration | ContextMenu, ExtendedTooltip | |
| 58 | | `labelField` | LabelField | ContextMenu, ExtendedTooltip | |
| 59 | | `group` | UsualGroup | ExtendedTooltip | |
| 60 | | `table` | Table | ContextMenu, AutoCommandBar, Search*, ViewStatus* | |
| 61 | | `pages` | Pages | ExtendedTooltip | |
| 62 | | `page` | Page | ExtendedTooltip | |
| 63 | | `button` | Button | ExtendedTooltip | |
| 64 | |
| 65 | Группы и таблицы поддерживают `children`/`columns` для вложенных элементов. |
| 66 | |
| 67 | ### Кнопки: command и stdCommand |
| 68 | |
| 69 | - `"command": "ИмяКоманды"` → `Form.Command.ИмяКоманды` |
| 70 | - `"stdCommand": "Close"` → `Form.StandardCommand.Close` |
| 71 | - `"stdCommand": "Товары.Add"` → `Form.Item.Товары.StandardCommand.Add` (стандартная команда элемента) |
| 72 | |
| 73 | ### Допустимые события (`on`) |
| 74 | |
| 75 | Компилятор предупреждает об ошибках в именах событий. Основные: |
| 76 | |
| 77 | - **input**: `OnChange`, `StartChoice`, `ChoiceProcessing`, `Clearing`, `AutoComplete`, `TextEditEnd` |
| 78 | - **check**: `OnChange` |
| 79 | - **table**: `OnStartEdit`, `OnEditEnd`, `OnChange`, `Selection`, `BeforeAddRow`, `BeforeDeleteRow`, `OnActivateRow` |
| 80 | - **label/picture**: `Click`, `URLProcessing` |
| 81 | - **pages**: `OnCurrentPageChange` |
| 82 | - **button**: `Click` |
| 83 | |
| 84 | ### Система типов (для attributes) |
| 85 | |
| 86 | `string`, `string(100)`, `decimal(15,2)`, `boolean`, `date`, `dateTime`, `CatalogRef.XXX`, `DocumentObject.XXX`, `ValueTable`, `DynamicList`, `Type1 | Type2` (составной). |
| 87 | |
| 88 | ## Вывод |
| 89 | |
| 90 | ``` |
| 91 | === form-edit: Форма === |
| 92 | |
| 93 | Added elements (into ГруппаШапка, after Контрагент): |
| 94 | + [Input] Склад -> Объект.Склад {OnChange} |
| 95 | |
| 96 | Added attributes: |
| 97 | + СуммаИтого: decimal(15,2) (id=12) |
| 98 | |
| 99 | --- |
| 100 | Total: 1 element(s) (+2 companions), 1 attribute(s) |
| 101 | Run /form-validate to verify. |
| 102 | ``` |
| 103 | |
| 104 | ## Когда использовать |
| 105 | |
| 106 | - **После `/form-compile`**: добавить элементы, которые не были в исходном JSON |
| 107 | - **Модификация существующих форм**: добавить поле, реквизит или команду в форму из конфигурации |
| 108 | - **Пакетное добавление**: один JSON может содержать элементы + реквизиты + команды |
| 109 | |
| 110 | ## Workflow |
| 111 | |
| 112 | 1. `/form-info` — посмотреть текущую структуру формы |
| 113 | 2. Создать JSON с описанием добавлений |
| 114 | 3. `/form-edit` — добавить в форму |
| 115 | 4. `/form-validate` — проверить корректность |
| 116 | 5. `/form-info` — убедиться что добавилось правильно |