Skip to content
Development
Skill

/form-compile

Компиляция управляемой формы 1С из JSON-определения или из метаданных объекта. Используй когда нужно создать форму с нуля по описанию элементов или по стандартному пресету объекта

BOOST
From plugin
unica
22749 skills1 MCP
Install
$ npx -y skills add IngvarConsulting/unica --skill form-compile --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/form-compile

Context preview

The summary Claude sees to decide when to auto-load this skill.

Компиляция управляемой формы 1С из JSON-определения или из метаданных объекта. Используй когда нужно создать форму с нуля по описанию элементов или по стандартному пресету объекта

SKILL.md

form-compile.SKILL.md
name: form-compile
description: Компиляция управляемой формы 1С из JSON-определения или из метаданных объекта. Используй когда нужно создать форму с нуля по описанию элементов или по стандартному пресету объекта
allowed-tools:
  - Bash
  - Read
  - Write
  - Glob

/form-compile — Генерация Form.xml

MCP routing

  • Preferred path: use MCP `unica` tool `unica.apply`: форма заводится

операцией `form.add` на объекте-владельце, наполняется `item.add`, `attribute.add`, `command.add`, `event.bind`.

  • Не зови внутренние адаптеры напрямую: они спрятаны за MCP `unica`.
  • Сначала вызови `unica.apply` с `at` и `ops`: это план без записи.

Когда пользователь поручил внести эту правку, вызови `unica.apply` только с `executionToken` из `data.executionToken` успешного плана.

  • Словарь операций узла даёт `unica.view {at}` в словаре `can`.

Шаг 1 — завести форму

Форму создаёт операция владельца: адрес — объект `<набор>:<Вид>.<Имя>`, элемент `items` называет новую форму (`name`) и её назначение (`type`). Адреса формы, которой ещё нет, назвать нельзя. Снятая `form.create` получает отказ `bad_value`, а `next` ведёт к владельцу, где исполнима `form.add`.

{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "unica.apply",
    "arguments": {
      "at": "main:Catalog.Валюты",
      "ops": [
        {"op": "form.add", "args": {"items": [{"name": "ФормаЭлемента", "type": "ObjectForm"}]}}
      ]
    }
  }
}

Шаг 2 — наполнить

Применение первого шага публикует форму; после него её адрес принимает элементы, реквизиты и команды. Порядок тот же, что у всякой операции: превью → применение с `executionToken` → превью следующего шага → применение.

{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "unica.apply",
    "arguments": {
      "at": "main:Catalog.Валюты.Form.ФормаЭлемента",
      "ops": [
        {"op": "attribute.add", "args": {"items": [{"name": "Объект", "type": "CatalogObject.Валюты", "main": true}]}},
        {"op": "item.add", "args": {"items": [{"name": "Наименование", "type": "InputField", "path": "Объект.Наименование"}]}}
      ]
    }
  }
}

Элементы внутрь группы добавляет `item.add` на адресе группы (`….Form.ФормаЭлемента.Item.<Группа>`), обработчик события — `event.bind` на адресе события (`….Item.<Поле>.Event.OnChange`). Группа, созданная в том же вызове, принимает элементы следующей операции с этим `args.at`.

Точечные правки готовой формы держит `form-edit`; DSL ниже описывает, как выражать внутреннее описание элементов. На публичной поверхности `items[]` использует `name` и `type`, как в примере выше; для HTML-поля — `type: "HTMLDocumentField"`. Его параметры и пример описаны в `form-edit`.

Чего словарь не пишет

Сборки целой формы из готового JSON-определения одним вызовом на поверхности **нет**: DSL ниже остаётся справочником формата. Виды элементов, которые словарь создаёт, и виды, которые только читаются, перечислены в `form-edit`. Форма, которую не собрать этими операциями, — пробел контракта Unica MCP.

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С, значение: непустое строковое имя процедуры). Этот формат не поддерживает `callType`.
  • `excludedCommands` — исключённые стандартные команды

Новые возможности DSL

  • Форма отчёта: `reportResult`, `reportFormType`, `reportResultViewMode`.
  • Управление выбором: `choiceParameters`, `choiceParameterLinks`, `availableTypes`.
  • Служебные элементы и панели: `extendedTooltip`, `commandBar`, `contextMenu`, `mobileCommandBarContent`.
  • Ролевое ограничение элементов и команд: `roles`.
  • Командный интерфейс и навигация: `CommandInterface`, `NavigationPanel`.
  • Специальные визуальные типы: `chart`, `GanttChart`.
  • Динамические списки: `dynamicDataRead` в настройках реквизита `DynamicList`.

Элементы (ключ определяет тип)

| DSL ключ | XML элемент | Значение ключа | |--------------|-------------------|---------------------------------------------------| | `"group"` | UsualGroup | `"horizontal"` / `"vertical"` / `"alwaysHorizontal"` / `"alwaysVertical"` / `"collapsible"` | | `"input"` | InputField | имя элемента | | `"html"` | HTMLDocumentField | имя; события `OnClick`, `DocumentComplete` | | `"check"` | CheckBoxField | имя | | `"label"` | LabelDecoration | имя — надпись-декорация; текст задаётся `title`, гиперссылка `hyperlink` | | `"labelField"` | LabelField | имя | | `"table"` | Table | имя | | `"pages"` | Pages | имя | | `"page"` | Page | имя | | `"button"` | Button | имя | | `"cmdBar"` | CommandBar | имя | | `"autoCmdBar"` | AutoCommandBar формы | имя — наполняет главную АКП формы (id=-1), не попадает в `<ChildItems>` |

Общие свойства (все типы элементов)

| Ключ | Описание | |------|----------| | `name` | Переопределить имя (по умолчанию = значение ключа типа) | | `title` | Заголовок элемента | | `visible: false` | Скрыть (синоним: `hidden: true`) |

Read more
Ships withunica

Unica (Ю&#x301;ника) — плагин для Codex, Claude Code и ZCode для разработки на 1С:Предприятии.

Get the whole plugin

Other skills on unica.

api-design
Skill

api-design

Проектирование и ревью API 1С: публичный программный интерфейс, служебный интерфейс, переопределяемые модули, совместимость,…

autonomous-server
Skill

autonomous-server

Автономный сервер отладки 1С. Используй когда нужно развернуть или проанализировать локальный автономный контур для отладки…

background-jobs
Skill

background-jobs

Фоновые и регламентные задания 1С. Используй когда нужно спроектировать, проверить или диагностировать background jobs,…

bsp-patterns
Skill

bsp-patterns

Поиск и применение паттернов БСП. Используй когда задача про длительные операции, профили групп доступа, безопасное хранение,…

cf-edit
Skill

cf-edit

Точечное редактирование конфигурации 1С. Используй когда нужно изменить свойства конфигурации, добавить или удалить объект из…

cf-init
Skill

cf-init

Создать пустую конфигурацию 1С (scaffold XML-исходников). Используй когда нужно начать новую конфигурацию с нуля