Files
cc-1c-skills/docs/subsystem-guide.md
T
Nick Shirokov 7268b169d8 feat(skd,subsystem): add -Value param to skd-compile, full mode to skd-info and subsystem-info
- skd-compile: replace mandatory -JsonPath with -DefinitionFile/-Value pair,
  allowing inline JSON without temp files
- skd-info: extract 6 mode bodies into functions, add -Mode full combining
  overview+query+fields+resources+params+variant in one call
- subsystem-info: extract overview/content/ci into functions, add -Mode full
  combining all three in one call
- Update SKILL.md docs and guides accordingly

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 18:29:00 +03:00

206 lines
9.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Подсистемы и командный интерфейс
Навыки групп `/subsystem-*` и `/interface-*` позволяют анализировать, создавать, редактировать и проверять подсистемы 1С и их командный интерфейс — XML-файлы Subsystem и CommandInterface.xml из выгрузки конфигурации.
## Навыки
| Навык | Параметры | Описание |
|-------|-----------|----------|
| `/subsystem-info` | `<SubsystemPath> [-Mode] [-Name]` | Анализ структуры подсистемы: состав, дочерние, CI, дерево иерархии (5 режимов, включая full) |
| `/subsystem-compile` | `<JsonPath> <OutputDir> [-Parent]` | Генерация подсистемы из JSON DSL: XML + регистрация в Configuration.xml |
| `/subsystem-edit` | `<SubsystemPath> -Operation <op> -Value "<value>"` | Точечное редактирование: 5 операций (add/remove content/child, set-property) |
| `/subsystem-validate` | `<SubsystemPath> [-MaxErrors 30]` | Валидация структурной корректности: 13 проверок |
| `/interface-edit` | `<CIPath> -Operation <op> -Value "<value>"` | Настройка CommandInterface.xml: 6 операций (hide/show/place/order) |
| `/interface-validate` | `<CIPath> [-MaxErrors 30]` | Валидация CommandInterface.xml: 13 проверок |
## Рабочий цикл
```
Описание раздела (текст) → JSON DSL → /subsystem-compile → XML → /subsystem-validate
↕ /subsystem-edit → /subsystem-info
/interface-edit → CommandInterface.xml → /interface-validate
```
1. Claude формирует JSON-определение подсистемы (имя, состав, дочерние, картинка)
2. `/subsystem-compile` генерирует XML-файл подсистемы и регистрирует в Configuration.xml
3. `/subsystem-edit` вносит точечные изменения: добавление объектов, дочерних подсистем, изменение свойств
4. `/interface-edit` настраивает командный интерфейс: скрытие/показ команд, размещение в группах, порядок
5. `/subsystem-validate` и `/interface-validate` проверяют корректность XML
6. `/subsystem-info` выводит компактную сводку для визуальной проверки
## JSON DSL — формат подсистемы
Подсистемы описываются в JSON:
### Минимальный пример
```json
{
"name": "Тест"
}
```
Умолчания: `includeInCommandInterface = true`, `useOneCommand = false`, synonym генерируется из name.
### Полный пример
```json
{
"name": "Продажи",
"synonym": "Продажи",
"comment": "",
"includeInCommandInterface": true,
"useOneCommand": false,
"explanation": "Управление продажами и взаимодействием с клиентами",
"picture": "CommonPicture.Продажи",
"content": ["Catalog.Товары", "Document.Заказ", "Report.Продажи"],
"children": ["Настройки", "Отчёты"]
}
```
### Свойства
| Свойство | Тип | Умолчание | Описание |
|----------|-----|-----------|----------|
| `name` | string | *(обязательно)* | Идентификатор подсистемы |
| `synonym` | string | из name | Отображаемое имя |
| `comment` | string | `""` | Комментарий |
| `includeInCommandInterface` | bool | `true` | Включать в командный интерфейс |
| `useOneCommand` | bool | `false` | Режим одной команды (требует ровно 1 элемент в content) |
| `explanation` | string | `""` | Описание раздела (подсказка) |
| `picture` | string | — | Ссылка на общую картинку (`CommonPicture.Имя`) |
| `content` | string[] | `[]` | Состав: `"Тип.Имя"` (Catalog.X, Document.Y, Report.Z, ...) |
| `children` | string[] | `[]` | Имена дочерних подсистем |
## Командный интерфейс — операции
Навык `/interface-edit` управляет файлом `CommandInterface.xml` подсистемы.
### Форматы ссылок на команды
| Формат | Пример |
|--------|--------|
| StandardCommand | `Catalog.Товары.StandardCommand.OpenList` |
| Command | `Report.Продажи.Command.Отчёт` |
| CommonCommand | `CommonCommand.МояКоманда` |
### Операции
| Операция | Значение | Описание |
|----------|----------|----------|
| `hide` | `"Cmd.Name"` или массив | Скрыть команду (CommandsVisibility, false) |
| `show` | `"Cmd.Name"` или массив | Показать команду (CommandsVisibility, true) |
| `place` | `{"command":"...","group":"CommandGroup.X"}` | Разместить команду в группе |
| `order` | `{"group":"...","commands":[...]}` | Задать порядок команд в группе |
| `subsystem-order` | `["Subsystem.X.Subsystem.A",...]` | Порядок дочерних подсистем |
| `group-order` | `["NavigationPanelOrdinary",...]` | Порядок групп |
### Примеры
```powershell
# Скрыть команду
... -CIPath Subsystems/Продажи/Ext/CommandInterface.xml -Operation hide -Value "Catalog.Товары.StandardCommand.OpenList"
# Показать команду
... -Operation show -Value "Report.Продажи.Command.Отчёт"
# Разместить в группе
... -Operation place -Value '{"command":"Report.X.Command.Y","group":"CommandGroup.Отчеты"}'
# Задать порядок подсистем
... -Operation subsystem-order -Value '["Subsystem.X.Subsystem.A","Subsystem.X.Subsystem.B"]'
```
## Сценарии использования
### Анализ структуры подсистем
```
> Покажи дерево подсистем конфигурации
```
Claude вызовет `/subsystem-info` (tree → overview → ci) и опишет:
- иерархию подсистем с маркерами [CI], [OneCmd], [Скрыт]
- состав каждой подсистемы (объекты по типам)
- настройки командного интерфейса (видимость, размещение, порядок)
### Создание подсистемы по описанию
```
> Создай подсистему Продажи: справочник Товары, документ Заказ, отчёт Продажи.
> Дочерние подсистемы: Настройки, Отчёты. Картинка — CommonPicture.Продажи.
```
Claude сформирует JSON:
```json
{
"name": "Продажи",
"synonym": "Продажи",
"content": ["Catalog.Товары", "Document.Заказ", "Report.Продажи"],
"children": ["Настройки", "Отчёты"],
"picture": "CommonPicture.Продажи"
}
```
И вызовет `/subsystem-compile``/subsystem-validate``/subsystem-info`.
### Добавление объектов в подсистему
```
> Добавь Document.Счёт и Report.Задолженность в подсистему Продажи
```
Claude вызовет `/subsystem-edit` с операцией `add-content`:
```powershell
... -SubsystemPath Subsystems/Продажи.xml -Operation add-content -Value '["Document.Счёт","Report.Задолженность"]'
```
### Настройка командного интерфейса
```
> Скрой команду открытия списка товаров и размести отчёт Продажи в группе Отчёты
```
Claude вызовет `/interface-edit`:
```powershell
# Скрыть команду
... -CIPath Subsystems/Продажи/Ext/CommandInterface.xml -Operation hide -Value "Catalog.Товары.StandardCommand.OpenList"
# Разместить в группе
... -Operation place -Value '{"command":"Report.Продажи.Command.Отчёт","group":"CommandGroup.Отчёты"}'
```
### Проверка подсистемы
```
> Проверь подсистему Subsystems/Продажи.xml
```
Claude вызовет `/subsystem-validate` и `/interface-validate`, покажет результат: ошибки (невалидный XML, отсутствующие файлы, дубликаты) и предупреждения.
## Структура файлов подсистемы
```
Subsystems/
├── ИмяПодсистемы.xml # Определение подсистемы (UUID, свойства, Content)
└── ИмяПодсистемы/
├── Ext/
│ └── CommandInterface.xml # Командный интерфейс (видимость, размещение, порядок)
└── Subsystems/ # Вложенные подсистемы
├── Дочерняя.xml
└── Дочерняя/
└── Ext/
└── CommandInterface.xml
```
Регистрация в `Configuration.xml`:
```xml
<ChildObjects>
<Subsystem>ИмяПодсистемы</Subsystem>
</ChildObjects>
```
## Спецификация
- [1c-subsystem-spec.md](1c-subsystem-spec.md) — XML-формат подсистем, CommandInterface.xml, namespace, элементы