Install
$ agentstack add skill-nikolay-shirokov-cc-1c-skills-form-compile ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
/form-compile — Генерация Form.xml
Два режима:
- JSON DSL — из JSON-определения формы
- From object (
-FromObject) — автоматически из метаданных объекта 1С по пресету ERP
> При проектировании формы с нуля (5+ элементов или нечёткие требования) — вызовите /form-patterns для загрузки справочника. Для простых форм (1–3 поля) — не нужно.
Параметры
| Параметр | Обязательный | Описание | |------------|:------------:|---------------------------------| | JsonPath | режим 1 | Путь к JSON-определению формы | | OutputPath | да | Путь к выходному Form.xml | | FromObject | режим 2 | Флаг (без значения) — генерация по метаданным объекта |
Команда
# Режим JSON DSL
powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/form-compile.ps1" -JsonPath "" -OutputPath ""
# Режим from-object (объект и purpose выводятся из OutputPath; Document и Catalog)
powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/form-compile.ps1" -FromObject -OutputPath ""
JSON DSL — справка
Структура верхнего уровня
{
"title": "Заголовок формы",
"properties": { "autoTitle": false, ... },
"events": { "OnCreateAtServer": "ПриСозданииНаСервере" },
"excludedCommands": ["Reread"],
"elements": [ ... ],
"attributes": [ ... ],
"commands": [ ... ],
"parameters": [ ... ]
}
title— заголовок формы (multilingual). Можно указать и вproperties, но лучше на верхнем уровнеproperties— свойства формы:autoTitle,windowOpeningMode,commandBarLocation,saveDataInSettings,width,heightи др.events— обработчики событий формы (ключ: имя события 1С, значение: имя процедуры)excludedCommands— исключённые стандартные команды
Элементы (ключ определяет тип)
| DSL ключ | XML элемент | Значение ключа | |--------------|-------------------|---------------------------------------------------| | "group" | UsualGroup | ориентация: "vertical" / "horizontalIfPossible" / "alwaysHorizontal" (поведение — отдельный ключ behavior) | | "columnGroup" | ColumnGroup | "horizontal" / "vertical" / "inCell" — только внутри columns таблицы | | "input" | InputField | имя элемента | | "check" | CheckBoxField | имя | | "radio" | RadioButtonField | имя | | "label" | LabelDecoration | имя (текст задаётся через title) | | "labelField" | LabelField | имя | | "table" | Table | имя | | "pages" | Pages | имя | | "page" | Page | имя | | "button" | Button | имя | | "picture" | PictureDecoration | имя | | "picField" | PictureField | имя | | "calendar" | CalendarField | имя | | "cmdBar" | CommandBar | имя | | "autoCmdBar" | AutoCommandBar формы | имя — наполняет главную АКП формы (id=-1), не попадает в ` | | "popup"` | Popup | имя |
Общие свойства (все типы элементов)
| Ключ | Описание | |------|----------| | name | Переопределить имя (по умолчанию = значение ключа типа). Имена уникальны во всех коллекциях формы (элементы, реквизиты, команды, колонки) | | title | Заголовок элемента | | tooltip | Всплывающая подсказка элемента (строка или {ru,en}) | | visible: false | Скрыть (синоним: hidden: true) | | enabled: false | Сделать недоступным (синоним: disabled: true) | | readOnly: true | Только чтение | | events: {...} | Обработчики событий: { "OnChange": "ИмяОбработчика" }. Тот же формат, что у событий формы. Значение null → имя обработчика сгенерируется автоматически |
Допустимые имена событий (events)
Компилятор предупреждает о неизвестных событиях. Имена регистрозависимы — используйте точно как указано.
Форма (events): OnCreateAtServer, OnOpen, BeforeClose, OnClose, NotificationProcessing, ChoiceProcessing, OnReadAtServer, BeforeWriteAtServer, OnWriteAtServer, AfterWriteAtServer, BeforeWrite, AfterWrite, FillCheckProcessingAtServer, BeforeLoadDataFromSettingsAtServer, OnLoadDataFromSettingsAtServer, ExternalEvent, Opening
input / picField: OnChange, StartChoice, ChoiceProcessing, AutoComplete, TextEditEnd, Clearing, Creating, EditTextChange
check / radio: OnChange
table: OnStartEdit, OnEditEnd, OnChange, Selection, ValueChoice, BeforeAddRow, BeforeDeleteRow, AfterDeleteRow, BeforeRowChange, BeforeEditEnd, OnActivateRow, OnActivateCell, Drag, DragStart, DragCheck, DragEnd
label / picture: Click, URLProcessing
labelField: OnChange, StartChoice, ChoiceProcessing, Click, URLProcessing, Clearing
button: Click
pages: OnCurrentPageChange
Поле ввода (input)
| Ключ | Описание | Пример | |------|----------|--------| | path | DataPath — привязка к данным | "Объект.Организация" | | titleLocation | Размещение заголовка | "none", "left", "right", "top", "bottom", "auto" | | multiLine: true | Многострочное поле | текстовое поле, комментарий | | passwordMode: true | Режим пароля (звёздочки) | поле ввода пароля | | choiceButton: true | Кнопка выбора ("...") | ссылочное поле | | clearButton: true | Кнопка очистки ("X") | | | spinButton: true | Кнопка прокрутки | числовые поля | | dropListButton: true | Кнопка выпадающего списка | | | markIncomplete: true | Пометка незаполненного | обязательные поля | | skipOnInput: true | Пропускать при обходе Tab | | | inputHint | Подсказка в пустом поле | "Введите наименование..." | | width / height | Размер | числа | | autoMaxWidth: false | Снять авто-ограничение ширины (поле растянется) | | | maxWidth / maxHeight | Жёсткое ограничение размера | числа; обычно вместе с autoMaxWidth: false | | horizontalStretch: true | Растягивать по ширине | |
Чекбокс (check)
| Ключ | Описание | |------|----------| | path | DataPath | | titleLocation | Размещение заголовка |
Поле переключателя (radio)
Радиокнопки или тумблер для выбора одного значения из списка.
| Ключ | Описание | Пример | |------|----------|--------| | path | DataPath — привязка к реквизиту | "СпособКурса" | | radioButtonType | Вид переключателя | "Auto" (по умолчанию), "RadioButtons", "Tumbler" | | columnsCount | Число колонок раскладки | 1, 2, ... | | titleLocation | Размещение заголовка | по умолчанию "none" | | choiceList | Список вариантов: массив {value, presentation} | см. ниже |
choiceList[*]:
| Ключ | Описание | |------|----------| | value | Значение варианта. Строка/число/булево; для перечисления — "Enum.ИмяТипа.EnumValue.ИмяЗначения" | | presentation | Текст рядом с переключателем. Строка (русский) либо объект {ru, en, ...} для мультиязычности |
{
"radio": "СпособКурса",
"path": "Объект.СпособУстановкиКурса",
"radioButtonType": "Auto",
"choiceList": [
{ "value": "Enum.СпособыКурса.EnumValue.Авто", "presentation": { "ru": "Автоматически", "en": "Automatic" } },
{ "value": "Enum.СпособыКурса.EnumValue.Ручной", "presentation": "вручную" }
]
}
Надпись-декорация (label)
| Ключ | Описание | |------|----------| | title | Текст надписи (обязательно) | | hyperlink: true | Сделать ссылкой | | width / height | Размер |
Группа (group)
Значение ключа задаёт ориентацию: "vertical", "horizontalIfPossible", "alwaysHorizontal".
| Ключ | Описание | |------|----------| | behavior | Поведение группы: "collapsible" (сворачиваемая) / "popup" (всплывающая). Опустить = обычная | | showTitle: true | Показывать заголовок группы | | united: false | Левый край полей ввода выравнивается только в пределах этой группы (по умолчанию true — сквозное выравнивание по самому длинному заголовку, в т.ч. с соседними группами) | | collapsed: true | Для behavior: "collapsible" / "popup" — группа создаётся свёрнутой | | representation | "none", "normal", "weak", "strong" | | children: [...] | Вложенные элементы |
Таблица (table)
Важно: таблица требует связанный реквизит формы типа ValueTable с колонками (см. раздел "Связки").
| Ключ | Описание | |------|----------| | path | DataPath (привязка к реквизиту-таблице) | | columns: [...] | Колонки — массив элементов (обычно input) | | changeRowSet: true | Разрешить добавление/удаление строк | | changeRowOrder: true | Разрешить перемещение строк | | height | Высота в строках таблицы | | header: false | Скрыть шапку | | footer: true | Показать подвал | | commandBarLocation | "None", "Top", "Bottom", "Auto" | | searchStringLocation | "None", "Top", "Bottom", "CommandBar", "PullFromTop", "Auto" | | choiceMode: true | Режим выбора (для форм выбора) | | initialTreeView | "ExpandTopLevel" и др. (иерархические списки) | | enableDrag: true | Разрешить перетаскивание | | enableStartDrag: true | Разрешить начало перетаскивания | | rowPictureDataPath | Путь к картинке строки (напр. "Список.DefaultPicture") | | tableAutofill: false | Управление Autofill внутреннего AutoCommandBar |
Колонки можно группировать через columnGroup (см. ниже).
Группа колонок (columnGroup)
Используется только внутри columns таблицы. Значение ключа задаёт ориентацию: "horizontal", "vertical", "inCell" (склеивает колонки в одну ячейку шапки). Допускается вложение columnGroup в columnGroup.
| Ключ | Описание | |------|----------| | name | Имя элемента (рекомендуется задавать явно) | | title | Заголовок группы | | showTitle: false | Скрыть заголовок | | showInHeader: true/false | Показывать ли группу в шапке таблицы | | width | Ширина | | horizontalStretch: false | Растягивание | | children: [...] | Колонки внутри группы (input, labelField, picField, вложенный columnGroup …) |
{ "table": "Список", "path": "Список", "columns": [
{ "columnGroup": "horizontal", "name": "ГруппаДата", "title": "Срок", "children": [
{ "input": "СрокИсполнения", "path": "Список.СрокИсполнения" },
{ "labelField": "Просрочено", "path": "Список.Просрочено" }
]},
{ "columnGroup": "inCell", "name": "ГруппаИсполнитель", "showInHeader": true, "children": [
{ "input": "Исполнитель", "path": "Список.Исполнитель" }
]},
{ "input": "Комментарий", "path": "Список.Комментарий" }
]}
Картинка-поле (picField)
PictureField, привязанный к булеву/числу, рисует иконку только при заданном valuesPicture:
| Ключ | Описание | |------|----------| | valuesPicture | Ref картинки значения: "StdPicture.Favorites", "CommonPicture.X" | | loadTransparent: true | Скрыть кадр «нет значения» |
Страницы (pages + page)
| Ключ (pages) | Описание | |------|----------| | pagesRepresentation | "None", "TabsOnTop", "TabsOnBottom" и др. | | children: [...] | Массив page |
| Ключ (page) | Описание | |------|----------| | title | Заголовок вкладки | | group | Ориентация внутри страницы | | children: [...] | Содержимое страницы |
Кнопка (button)
| Ключ | Описание | |------|----------| | command | Имя команды формы → Form.Command.Имя | | stdCommand | Стандартная команда: "Close" → Form.StandardCommand.Close; с точкой: "Товары.Add" → Form.Item.Товары.StandardCommand.Add | | defaultButton: true | Кнопка по умолчанию | | type | "usual", "hyperlink". По умолчанию "usual". Конкретный XML-вид (UsualButton/Hyperlink/CommandBarButton/CommandBarHyperlink) подставляется автоматически по контексту | | picture | Картинка кнопки | | representation | "Auto", "Text", "Picture", "PictureAndText" | | locationInCommandBar | "Auto", "InCommandBar", "InAdditionalSubmenu" |
Командная панель (cmdBar)
Дополнительная пользовательская панель команд, размещается как обычный элемент в layout формы.
| Ключ | Описание | |------|----------| | autofill: true | Автозаполнение стандартными командами | | children: [...] | Кнопки панели |
Главная автокомандная панель формы (autoCmdBar)
Наполняет встроенную AutoCommandBar формы (id=-1) кастомными кнопками. Указывать только если нужно добавить свои кнопки на главную панель или явно управлять автозаполнением.
| Ключ | Описание | |------|----------| | autofill: true/false | Автозаполнение стандартными командами | | horizontalAlign | "Left" / "Center" / "Right" | | children: [...] | Кнопки/popup |
{ "autoCmdBar": "ФормаКоманднаяПанель", "autofill": true, "children": [
{ "button": "ИзменитьВыделенные", "command": "ИзменитьВыделенные",
"locationInCommandBar": "InAdditionalSubmenu" }
]}
Кнопки основных действий формы и подменю размещают здесь, а не в отдельной группе на форме. Отдельной кнопкой в layout — только если она логически привязана к конкретному полю или группе.
Выпадающее меню (popup)
| Ключ | Описание | |------|----------| | title | Заголовок подменю | | children: [...] | Кнопки подменю |
Используется внутри cmdBar для группировки кнопок в подменю:
{ "cmdBar": "Панель", "children": [
{ "popup": "Добавить", "title": "Добавить", "children": [
{ "button": "ДобавитьСтроку", "stdCommand": "Товары.Add" },
{ "button": "ДобавитьИзДокумента", "command": "ДобавитьИзДокумента", "title": "Из документа" }
]}
]}
Реквизиты (attributes)
{ "name": "Объект", "type": "DataProcessorObject.Загрузка", "main": true }
{ "name": "Список", "type": "DynamicList", "main": true, "settings": {
"mainTable": "Catalog.Номенклатура", "dynamicDataRead": true
}}
{ "name": "Итого", "type": "decimal(15,2)" }
{ "name": "Таблица", "type": "ValueTable", "columns": [
{ "name": "Номенклатура", "type": "CatalogRef.Номенклатура" },
{ "name": "Количество", "type": "decimal(10,3)" }
]}
savedData: true— сохраняемые данныеmain: true— главный реквизит формы (например, основной*Object.*,DynamicList,*RecordSet.*)
Команды (commands)
{ "name": "Загрузить", "action": "ЗагрузитьОбработка", "shortcut": "Ctrl+Enter" }
title— заголовок (если отличается от name)picture— картинка команды
Система типов
Примитивные:
| DSL | XML | |------------------------|----------------------------------------| | "string" / "string(100)" | xs:string + StringQualifiers | | "decimal(15,2)" | xs:decimal + NumberQualifiers | | "decimal(10,0,nonneg)" | с AllowedSign=Nonnegative | | "boolean" | xs:boolean | | "date" / "dateTime" / "time" | xs:dateTime + DateFractions |
Ссылочные и объектные (cfg:Prefix.Name):
| DSL | Описание | |-----|----------| | "CatalogRef.XXX" / "CatalogObject.XXX" | Справочник | | "DocumentRef.XXX" / "DocumentObject.XXX" | Документ | | "EnumRef.XXX" | Перечисление | | "DataProcessorObject.XXX" / "ReportObject.XXX" | Обработка / Отчёт | | "InformationRegisterRecordSet.XXX" | Набор записей регистра сведений | | "AccumulationRegisterRecordSet.XXX" | Набор записей регистра накопления | | "DynamicList" | Динамический список |
Также допустимы: ChartOfAccountsRef/Object, ChartOfCharacteristicTypesRef/Object, ChartOfCalculationTypesRef/Object, ExchangePlanRef/Object, `B
…
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: Nikolay-Shirokov
- Source: Nikolay-Shirokov/cc-1c-skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.