api-design
Проектирование и ревью API 1С: публичный программный интерфейс, служебный интерфейс, переопределяемые модули, совместимость,…
Добавление и удаление элементов, реквизитов и команд в существующей управляемой форме 1С. Используй когда нужно точечно модифицировать готовую форму
$ npx -y skills add IngvarConsulting/unica --skill form-edit --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/form-editContext preview
The summary Claude sees to decide when to auto-load this skill.
Добавление и удаление элементов, реквизитов и команд в существующей управляемой форме 1С. Используй когда нужно точечно модифицировать готовую форму
name: form-edit description: Добавление и удаление элементов, реквизитов и команд в существующей управляемой форме 1С. Используй когда нужно точечно модифицировать готовую форму allowed-tools: - Bash - Read - Write - Glob
цели — логический, файлового селектора у поверхности нет.
Когда пользователь поручил внести эту правку, вызови `unica.apply` только с `executionToken` из `data.executionToken` успешного плана.
там, того поверхность не пишет.
объект правится через расширение, а не правкой метаданных поддержки.
Добавляет и удаляет элементы, реквизиты и команды существующей управляемой формы. Идентификаторы, companion-элементы (`ContextMenu`, `ExtendedTooltip` и прочие) и привязки событий собирает сама операция.
Предмет операции задаёт адрес `at`: форма, её элемент любой вложенности или событие формы и элемента. Адреса элементов и событий берутся из ответа `unica.view` на узле формы и в ветвях `Item` и `Event`; имя набора даёт `unica.view {}`, адрес по имени объекта — `unica.search {corpus: "names"}`.
| Адрес `at` | Операции | |---|---| | `<набор>:<Вид>.<Имя>.Form.<Форма>` | `item.add` в корень формы, `attribute.add`, `command.add`, `form.remove` | | `….Form.<Форма>.Item.<Группа>[.Item.<Вложенная>…]` — контейнер | `item.add` внутрь контейнера, `item.remove` самого контейнера | | `….Item.<Поле>` — поле, декорация, кнопка | `item.remove` | | `….Item.<ФормаКоманднаяПанель>`, `….Item.<Таблица>.Item.<ТаблицаКоманднаяПанель>` | `item.add` кнопки в автоматическую командную панель | | `….Form.<Форма>[.Item.<Элемент>…].Event.<Событие>` | `event.bind`, `event.implement` | | `<набор>:<Вид>.<Имя>` | `form.add`, `form.set` |
Контейнер — группа, страницы, страница, таблица, группа колонок, командная панель, группа кнопок, подменю. Автоматическая командная панель формы и таблицы видна элементом `Item` и принимает кнопки; удаляется она только вместе с владельцем. `ColumnGroup` и её колонки видны в `view` и адресуются полной цепочкой `Item`. Точный набор операций узла — в его словаре `can`.
Подробный контракт операции читается адресом `<узел>.Can.<операция>`, например `main:Catalog.Номенклатура.Form.ФормаЭлемента.Can.item.add`. Он перечисляет ровно те ключи, которые записывает писатель операции. Ключ вне контракта, значение не того типа или вне перечисления получают `bad_value` с точным путём (`ops[0].args.items[0].backColor`) до записи: операция не теряет его молча.
`item.add` добавляет один элемент без вложенного содержимого. Ключи элемента зависят от его `type`: например, `backColor` и `font` пишет только кнопка, а `title` не пишут таблица и поле надписи. Вложенный элемент добавляется отдельным `item.add` на адресе контейнера (`….Item.<Группа>`), обработчик — `event.bind` на адресе события (`….Item.<Элемент>.Event.<Событие>`) с явным именем. Ключи `children`, `columns`, `elements`, `commandBar`, `autoCmdBar`, `autoCommandBar`, `contextMenu`, `extendedTooltip`, `html`, `on` и `handlers` получают `bad_value`, а `next` ведёт к контракту `item.add`. Командная панель принимает только кнопки: её контракт публикует один вид `Button`. Группа и поле в ней добавляются в одном вызове двумя операциями: вторая адресует группу через `args.at`.
`attribute.add` пишет `name`, `title` (строка), `type`, `main`, `savedData`, `fillChecking` и `columns` реквизита-таблицы. Проверка заполнения `"fillChecking": "ShowError"` записывается тегом `<FillCheck>`; без ключа проверки нет. Просмотр и редактирование (`view`, `edit`), функциональные опции, `useAlways`, `save`, `valueType`, настройки динамического списка и видимость по ролям этой операцией не пишутся и получают `bad_value`.
Прежние аргументы, которые называли элемент или событие, сняты: `items[].into` у `item.add`, `items[].name`, элемент-строка `items[]` и `values.name` у `item.remove`, `values.element` и `values.event` у `event.bind`. Вызов с ними получает `bad_value`, а `next` ведёт к адресу узла, который называло значение. Прежние имена `element.add`, `element.remove`, `formAttribute.add` и `formCommand.add` тоже сняты: вызов получает `bad_value` без записи. Если заменившая (`item.add`, `item.remove`, `attribute.add` или `command.add` формы) исполнима на адресе вызова или на его предке, `next` ведёт к её контракту `<узел>.Can.<операция>` на ближайшем таком узле. Если такого узла нет — например, `element.remove` на самой форме или на автоматической командной панели, — отказ называет форму адреса, а `next` ведёт к словарю узла.
Реквизит и команда формы добавляются теми же именами, что у объекта метаданных: `attribute.add` и `command.add` на адресе формы пишут в форму, а на адресе объекта — в его описание. Контракт по адресу `<форма>.Can.attribute.add` — контракт реквизита формы.
`command.add` добавляет команды формы. Элемент `items[]` принимает `name`, `title`, `tooltip`, `action`, `shortcut`, `picture`, `representation`; другой ключ отклоняется до записи. Контракт — `<форма>.Can.command.add`.
Поле в группу шапки — `item.add` на адресе группы. Сосед `after` называет элемент того же контейнера, после которого встаёт новый:
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "unica.apply",
"arguments": {
"at": "main:Catalog.Номенклатура.Form.ФормаЭлемента.Item.ГруппаШапка",
"ops": [
{
"op": "item.add",
"args": {
"items": [
{"name": "Артикул", "type": "InputField", "path": "Объект.Артикул", "after": "Код"}
]
}
}
]
}
}Unica (Ю́ника) — плагин для Codex, Claude Code и ZCode для разработки на 1С:Предприятии.
Проектирование и ревью API 1С: публичный программный интерфейс, служебный интерфейс, переопределяемые модули, совместимость,…
Автономный сервер отладки 1С. Используй когда нужно развернуть или проанализировать локальный автономный контур для отладки…
Фоновые и регламентные задания 1С. Используй когда нужно спроектировать, проверить или диагностировать background jobs,…
Поиск и применение паттернов БСП. Используй когда задача про длительные операции, профили групп доступа, безопасное хранение,…
Точечное редактирование конфигурации 1С. Используй когда нужно изменить свойства конфигурации, добавить или удалить объект из…
Создать пустую конфигурацию 1С (scaffold XML-исходников). Используй когда нужно начать новую конфигурацию с нуля