subsystem-edit · diff
git:20260723.17ad079 to git:20260909.e686538
75 added, 112 removed. Audit A to A.
---
name: subsystem-edit
description: Точечное редактирование подсистемы 1С. Используй когда нужно добавить или удалить объекты из подсистемы, управлять дочерними подсистемами или изменить свойства
- argument-hint: -SubsystemPath <path> -Operation <op> -Value <value>
+ argument-hint: <at> <ops>
allowed-tools:
- - Bash
- Read
- - Write
- Glob
---
# /subsystem-edit — редактирование подсистемы 1С
## MCP routing
- - Preferred path: use MCP `unica` tool `unica.subsystem.edit`; `unica` owns XML/JSON DSL work and refreshes related workspace caches after mutations.
- - Do not call internal MCP/CLI adapters directly. They are hidden behind `unica` and synchronized by the orchestrator.
- - Execution path: call MCP `unica` tool `unica.subsystem.edit`; skill-local operation scripts are not part of the workflow.
- - For mutating operations, pass `dryRun: false` only when the user explicitly requested the change; otherwise keep the default dry run.
- - Vendor support guard runs inside `unica`; if it blocks a locked/read-only supported object, prefer CFE/release-support or an explicit support-state change plan instead of editing raw support metadata.
-
- Точечное редактирование XML подсистемы: состав, дочерние подсистемы, свойства.
-
- ## MCP параметры
-
- | Параметр | Описание |
- |----------|----------|
- | `SubsystemPath` | Путь к XML-файлу подсистемы |
- | `DefinitionFile` | JSON-файл с массивом операций |
- | `Operation` | Одна операция (альтернатива DefinitionFile) |
- | `Value` | Значение для операции |
- | `NoValidate` | Скрыть подробный отчёт авто-валидации; обязательная проверка корректности 8.3.27 перед фиксацией остаётся включённой |
-
- ```json
- {
- "jsonrpc": "2.0",
- "method": "tools/call",
- "params": {
- "name": "unica.subsystem.edit",
- "arguments": {
- "cwd": "<workspace>",
- "SubsystemPath": "src/Subsystems/Продажи",
- "Operation": "add-content",
- "Value": "Catalog.Номенклатура",
- "dryRun": false
- }
- }
- }
- ```
+ - Preferred path: use MCP `unica` tool `unica.apply` с операциями
+ `content.add`, `content.remove`, `childSubsystem.add`,
+ `childSubsystem.remove` и `props.set`.
+ - Do not call internal MCP/CLI adapters directly. They are hidden behind
+ `unica` and synchronized by the orchestrator.
+ - Подсистему называет адрес: `args.at` вида `<набор>:Subsystem.<Имя>`.
+ Дочерняя — продолжением того же адреса. Путь к XML наружу не выходит; из
+ диффа или лога его переводит аварийный `unica.resolve`.
+ - Всегда сначала `dryRun: true`. Применяй `dryRun: false` только когда
+ пользователь явно попросил внести именно эту правку, и только с `ifRev` из
+ предпросмотра.
+ - Проверка поддержки поставщика работает внутри `unica`. Если она блокирует
+ заблокированный объект на поддержке, предпочитай расширение или явный план
+ смены состояния поддержки, а не правку метаданных поддержки напрямую.
## Операции
- | Операция | Значение | Описание |
- |----------|----------|----------|
- | `add-content` | `"Catalog.X"` или `["Catalog.X","Document.Y"]` | Добавить объекты в Content |
- | `remove-content` | `"Catalog.X"` или `["Catalog.X"]` | Удалить объекты из Content |
- | `add-child` | `"ИмяПодсистемы"` | Добавить дочернюю подсистему в ChildObjects |
- | `remove-child` | `"ИмяПодсистемы"` | Удалить дочернюю подсистему |
- | `set-property` | `{"name":"prop","value":"val"}` | Изменить свойство (Synonym, IncludeInCommandInterface, UseOneCommand, etc.) |
-
- ## Примеры
-
- ### Добавить объект в состав
+ | Операция | `args` | Что делает |
+ |---|---|---|
+ | `content.add` | `items: [{object}]` | Добавляет объекты в состав |
+ | `content.remove` | `items: [{object}]` | Удаляет объекты из состава |
+ | `childSubsystem.add` | `items: [{name}]` | Заводит дочернюю подсистему |
+ | `childSubsystem.remove` | `items: [{name}]` | Удаляет дочернюю подсистему |
+ | `props.set` | `values: {…}` | Меняет свойства: `Synonym`, `IncludeInCommandInterface`, `UseOneCommand` и прочие |
- ```json
- {
- "jsonrpc": "2.0",
- "method": "tools/call",
- "params": {
- "name": "unica.subsystem.edit",
- "arguments": {
- "cwd": "<workspace>",
- "SubsystemPath": "Subsystems/Продажи.xml",
- "Operation": "add-content",
- "Value": "Document.Заказ",
- "dryRun": false
- }
- }
- }
- ```
+ Элемент списка можно писать строкой вместо объекта. Операции применяются по
+ порядку и публикуются одной транзакцией: либо все, либо ни одной. Повтор
+ эквивалентной операции даёт `changed: false` без записи.
- ### Добавить несколько объектов
+ Заведение дочерней подсистемы создаёт и её собственный файл, и ссылку на неё у
+ родителя — это одна правка, а не две.
- ```json
- {
- "jsonrpc": "2.0",
- "method": "tools/call",
- "params": {
- "name": "unica.subsystem.edit",
- "arguments": {
- "cwd": "<workspace>",
- "SubsystemPath": "Subsystems/Продажи.xml",
- "Operation": "add-content",
- "Value": "[\"Catalog.Товары\",\"Report.Продажи\"]",
- "dryRun": false
- }
- }
- }
- ```
+ ## Порядок
- ### Удалить объект из состава
+ 1. Найди подсистему: `unica.search {corpus: "names", kind: "Subsystem"}`.
+ 2. Прочти её: `unica.view {at}` — состав и дочерние лежат в ветвях.
+ 3. Предпросмотр: `unica.apply` с `dryRun: true`; ответ несёт план и `ifRev`.
+ 4. Применение: тот же вызов с `dryRun: false` и этим `ifRev`.
+ 5. Проверка: `unica.check {at}`.
- ```json
- {
- "jsonrpc": "2.0",
- "method": "tools/call",
- "params": {
- "name": "unica.subsystem.edit",
- "arguments": {
- "cwd": "<workspace>",
- "SubsystemPath": "Subsystems/Продажи.xml",
- "Operation": "remove-content",
- "Value": "Report.Старый",
- "dryRun": false
- }
- }
- }
- ```
+ ## Примеры
- ### Добавить дочернюю подсистему
+ ### Состав: добавить и убрать за один раз
```json
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
- "name": "unica.subsystem.edit",
+ "name": "unica.apply",
"arguments": {
- "cwd": "<workspace>",
- "SubsystemPath": "Subsystems/Продажи.xml",
- "Operation": "add-child",
- "Value": "НоваяДочерняя",
- "dryRun": false
+ "at": "main:Subsystem.Продажи",
+ "ops": [
+ {
+ "op": "content.add",
+ "args": {
+ "at": "main:Subsystem.Продажи",
+ "items": [{"object": "Catalog.Товары"}, {"object": "Report.Продажи"}]
+ }
+ },
+ {
+ "op": "content.remove",
+ "args": {
+ "at": "main:Subsystem.Продажи",
+ "items": [{"object": "Report.Старый"}]
+ }
+ }
+ ],
+ "dryRun": true
}
}
}
```
- ### Изменить свойство
+ ### Дочерняя подсистема и свойство
```json
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
- "name": "unica.subsystem.edit",
+ "name": "unica.apply",
"arguments": {
- "cwd": "<workspace>",
- "SubsystemPath": "Subsystems/Продажи.xml",
- "Operation": "set-property",
- "Value": "{\"name\":\"IncludeInCommandInterface\",\"value\":\"false\"}",
- "dryRun": false
+ "at": "main:Subsystem.Продажи",
+ "ops": [
+ {
+ "op": "childSubsystem.add",
+ "args": {
+ "at": "main:Subsystem.Продажи",
+ "items": [{"name": "Заказы"}]
+ }
+ },
+ {
+ "op": "props.set",
+ "args": {
+ "at": "main:Subsystem.Продажи",
+ "values": {"IncludeInCommandInterface": false}
+ }
+ }
+ ],
+ "dryRun": false,
+ "ifRev": "<rev из предпросмотра>"
}
}
}
```