api-design
Проектирование и ревью API 1С: публичный программный интерфейс, служебный интерфейс, переопределяемые модули, совместимость,…
Настройка командного интерфейса подсистемы 1С. Используй когда нужно скрыть или показать команды, разместить в группах, настроить порядок
$ npx -y skills add IngvarConsulting/unica --skill interface-edit --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/interface-editContext preview
The summary Claude sees to decide when to auto-load this skill.
Настройка командного интерфейса подсистемы 1С. Используй когда нужно скрыть или показать команды, разместить в группах, настроить порядок
name: interface-edit description: Настройка командного интерфейса подсистемы 1С. Используй когда нужно скрыть или показать команды, разместить в группах, настроить порядок argument-hint: <at> <ops> allowed-tools: - Read - Glob
`commandVisibility.set`, `commandPlacement.set`, `commandOrder.set`, `groupOrder.set` и `subsystemOrder.set`.
`unica` and synchronized by the orchestrator.
`<набор>:Subsystem.<Имя>.Interface`, а порядок команд — адрес группы `…Interface.Group.<Группа>`. Имя группы с точкой (`CommandGroup.Цены`) пишется в адресе с `\.`: `…Group.CommandGroup\.Цены` (в JSON — `CommandGroup\\.Цены`); `unica.view` ветви `Group` отдаёт готовые адреса. Пути к `CommandInterface.xml` наружу нет; путь из диффа или лога переводит в адрес аварийный `unica.resolve`.
Когда пользователь поручил внести эту правку, вызови `unica.apply` только с `executionToken` из `data.executionToken` успешного плана.
**Команда лежит в аргументах, а не в адресе.** Имя команды в интерфейсе — это ссылка на команду, живущую в другом месте (`CommonCommand.Печать`, `Catalog.Валюты.Command.Создать`). Адрес несёт интерфейс, потому что предмет правки — место, которое подсистема команде отводит, а не сама команда.
| Операция | `at` | `args` | Секция файла | |---|---|---|---| | `commandVisibility.set` | `…Subsystem.<Имя>.Interface` | `items: [{command, visible}]` | `CommandsVisibility` | | `commandPlacement.set` | `…Subsystem.<Имя>.Interface` | `items: [{command, group?, placement?}]` | `CommandsPlacement` | | `commandOrder.set` | `…Subsystem.<Имя>.Interface.Group.<Группа>` | `values: {commands: […]}` | `CommandsOrder` | | `groupOrder.set` | `…Subsystem.<Имя>.Interface` | `values: {groups: […]}` | `GroupsOrder` | | `subsystemOrder.set` | `<набор>:Configuration` | `values: {subsystems: […]}` | `SubsystemsOrder` |
Вложенная подсистема адресуется всей цепочкой: `main:Subsystem.Администрирование.Subsystem.КонтрольРаботыПользователей.Interface`. Одноимённая подсистема в другом месте целью не становится.
**Порядок подсистем верхнего уровня метит в корень конфигурации.** Корневой документ несёт единственную секцию, поэтому узла у него нет — он описан свойством корня. На интерфейсе подсистемы `subsystemOrder.set` отклоняется.
**Порядок — перестановка сохранённого состава.** Три операции порядка принимают полную последовательность тех же элементов, что уже сохранены: у `commandOrder.set` — команд группы адреса, у `groupOrder.set` — групп, у `subsystemOrder.set` — подсистем. Пропуск, повтор или лишний элемент отклоняются без записи: пропуск не удаляет настройку. Прочитай текущий порядок в `unica.view` и переставь его. Если порядка ещё нет, список задаёт его впервые. Порядок других групп и остальные секции файла не меняются. Прежний `values.group` отклоняется с `bad_value`, `next` ведёт к адресу группы.
**Каждая операция правит свою секцию и ничью больше.** В частности, правка видимости касается только общего значения: переопределения по ролям в том же блоке остаются нетронутыми. Их число видно в чтении полем `roleOverrides` — если оно не ноль, `visible` не вся правда о видимости команды.
1. Найди подсистему: `unica.search {corpus: "names", kind: "Subsystem"}`. 2. Прочти интерфейс: `unica.view {at: "…Subsystem.<Имя>.Interface"}` — ветви `Command`, `Group` и `Subsystem` показывают команды, порядок групп и порядок дочерних подсистем. 3. Предпросмотр: `unica.apply` с `at` и `ops`; ответ несёт план и `data.executionToken`. 4. Применение: вызов только с `executionToken` из `data.executionToken` успешного плана.
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "unica.apply",
"arguments": {
"at": "main:Subsystem.Продажи",
"ops": [
{
"op": "commandVisibility.set",
"args": {
"at": "main:Subsystem.Продажи.Interface",
"items": [
{"command": "Catalog.Товары.StandardCommand.OpenList", "visible": false},
{"command": "Report.Продажи.Command.Отчёт", "visible": true}
]
}
}
]
}
}
}Пример задаёт порядок группы, у которой его ещё нет. Если порядок уже сохранён, `commands` перечисляет ровно его команды в новом порядке: только что размещённую команду в сохранённый порядок группы так не добавить, такой список отклоняется. Сначала получи план этого изменения:
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "unica.apply",
"arguments": {
"at": "main:Subsystem.Продажи",
"ops": [
{
"op": "commandPlacement.set",
"args": {
"at": "main:Subsystem.Продажи.Interface",
"items": [
{
"command": "Report.Продажи.Command.Отчёт",
"group": "NavigationPanelImportant"
}
]
}
},
{
"op": "commandOrder.set",
"args": {
"at": "main:Subsystem.Продажи.Interface.Group.NavigationPanelImportant",
"values": {
"commands": [
"Report.Продажи.Command.Отчёт",
"Catalog.Товары.StandardCommand.OpenList"
]
}
}
}
]
}
}
}Для исполнения передай `data.executionToken` из этого успешного плана:
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "unica.apply",
"arguments": {
"executionToken": "<data.executionToken из успешного плана>"
}
}
}Unica (Ю́ника) — плагин для Codex, Claude Code и ZCode для разработки на 1С:Предприятии.
Проектирование и ревью API 1С: публичный программный интерфейс, служебный интерфейс, переопределяемые модули, совместимость,…
Автономный сервер отладки 1С. Используй когда нужно развернуть или проанализировать локальный автономный контур для отладки…
Фоновые и регламентные задания 1С. Используй когда нужно спроектировать, проверить или диагностировать background jobs,…
Поиск и применение паттернов БСП. Используй когда задача про длительные операции, профили групп доступа, безопасное хранение,…
Точечное редактирование конфигурации 1С. Используй когда нужно изменить свойства конфигурации, добавить или удалить объект из…
Создать пустую конфигурацию 1С (scaffold XML-исходников). Используй когда нужно начать новую конфигурацию с нуля