$npx -y skills add Arman-Kudaibergenov/1c-ai-development-kit --skill form-compileЭтот скилл MUST быть вызван когда нужно создать управляемую форму с нуля по JSON-определению элементов. SHOULD также вызывать когда структура формы хорошо определена и требует генерации. Do NOT использовать для модификации существующей формы — используй form-edit; для добавления
| 1 | # /form-compile — Генерация Form.xml из JSON DSL |
| 2 | |
| 3 | Принимает компактное JSON-определение формы (20–50 строк) и генерирует полный корректный Form.xml (100–500+ строк) с namespace-декларациями, автогенерированными companion-элементами, последовательными ID. |
| 4 | |
| 5 | > **При проектировании формы с нуля (5+ элементов или нечёткие требования)** — вызовите `/form-patterns` для загрузки справочника: архетипы, конвенции именования, продвинутые паттерны. Для простых форм (1–3 поля, пользователь описал что нужно) — не нужно. |
| 6 | |
| 7 | ## Использование |
| 8 | |
| 9 | ``` |
| 10 | /form-compile <JsonPath> <OutputPath> |
| 11 | ``` |
| 12 | |
| 13 | ## Параметры |
| 14 | |
| 15 | | Параметр | Обязательный | Описание | |
| 16 | |------------|:------------:|-----------------------------------| |
| 17 | | JsonPath | да | Путь к JSON-определению формы | |
| 18 | | OutputPath | да | Путь к выходному файлу Form.xml | |
| 19 | |
| 20 | ## Команда |
| 21 | |
| 22 | ```powershell |
| 23 | powershell.exe -NoProfile -File .claude/skills/form-compile/scripts/form-compile.ps1 -JsonPath "<json>" -OutputPath "<xml>" |
| 24 | ``` |
| 25 | |
| 26 | ## JSON DSL — справка |
| 27 | |
| 28 | ### Структура верхнего уровня |
| 29 | |
| 30 | ```json |
| 31 | { |
| 32 | "title": "Заголовок формы", |
| 33 | "properties": { "autoTitle": false, ... }, |
| 34 | "events": { "OnCreateAtServer": "ПриСозданииНаСервере" }, |
| 35 | "excludedCommands": ["Reread"], |
| 36 | "elements": [ ... ], |
| 37 | "attributes": [ ... ], |
| 38 | "commands": [ ... ], |
| 39 | "parameters": [ ... ] |
| 40 | } |
| 41 | ``` |
| 42 | |
| 43 | - `title` — заголовок формы (multilingual). Можно указать и в `properties`, но лучше на верхнем уровне |
| 44 | - `properties` — свойства формы: `autoTitle`, `windowOpeningMode`, `commandBarLocation`, `saveDataInSettings`, `width`, `height` и др. |
| 45 | - `events` — обработчики событий формы (ключ: имя события 1С, значение: имя процедуры) |
| 46 | - `excludedCommands` — исключённые стандартные команды |
| 47 | |
| 48 | ### Элементы (ключ определяет тип) |
| 49 | |
| 50 | | DSL ключ | XML элемент | Значение ключа | |
| 51 | |--------------|-------------------|---------------------------------------------------| |
| 52 | | `"group"` | UsualGroup | `"horizontal"` / `"vertical"` / `"alwaysHorizontal"` / `"alwaysVertical"` / `"collapsible"` | |
| 53 | | `"input"` | InputField | имя элемента | |
| 54 | | `"check"` | CheckBoxField | имя | |
| 55 | | `"label"` | LabelDecoration | имя (текст задаётся через `title`) | |
| 56 | | `"labelField"` | LabelField | имя | |
| 57 | | `"table"` | Table | имя | |
| 58 | | `"pages"` | Pages | имя | |
| 59 | | `"page"` | Page | имя | |
| 60 | | `"button"` | Button | имя | |
| 61 | | `"picture"` | PictureDecoration | имя | |
| 62 | | `"picField"` | PictureField | имя | |
| 63 | | `"calendar"` | CalendarField | имя | |
| 64 | | `"cmdBar"` | CommandBar | имя | |
| 65 | | `"popup"` | Popup | имя | |
| 66 | |
| 67 | ### Общие свойства (все типы элементов) |
| 68 | |
| 69 | | Ключ | Описание | |
| 70 | |------|----------| |
| 71 | | `name` | Переопределить имя (по умолчанию = значение ключа типа) | |
| 72 | | `title` | Заголовок элемента | |
| 73 | | `visible: false` | Скрыть (синоним: `hidden: true`) | |
| 74 | | `enabled: false` | Сделать недоступным (синоним: `disabled: true`) | |
| 75 | | `readOnly: true` | Только чтение | |
| 76 | | `on: [...]` | События с автоименованием обработчиков | |
| 77 | | `handlers: {...}` | Явное задание имён обработчиков: `{"OnChange": "МоёИмя"}` | |
| 78 | |
| 79 | ### Допустимые имена событий (`on`) |
| 80 | |
| 81 | Компилятор предупреждает о неизвестных событиях. Имена регистрозависимы — используйте точно как указано. |
| 82 | |
| 83 | **Форма** (`events`): `OnCreateAtServer`, `OnOpen`, `BeforeClose`, `OnClose`, `NotificationProcessing`, `ChoiceProcessing`, `OnReadAtServer`, `BeforeWriteAtServer`, `OnWriteAtServer`, `AfterWriteAtServer`, `BeforeWrite`, `AfterWrite`, `FillCheckProcessingAtServer`, `BeforeLoadDataFromSettingsAtServer`, `OnLoadDataFromSettingsAtServer`, `ExternalEvent`, `Opening` |
| 84 | |
| 85 | **input / picField**: `OnChange`, `StartChoice`, `ChoiceProcessing`, `AutoComplete`, `TextEditEnd`, `Clearing`, `Creating`, `EditTextChange` |
| 86 | |
| 87 | **check**: `OnChange` |
| 88 | |
| 89 | **table**: `OnStartEdit`, `OnEditEnd`, `OnChange`, `Selection`, `ValueChoice`, `BeforeAddRow`, `BeforeDeleteRow`, `AfterDeleteRow`, `BeforeRowChange`, |