# Подсистемы и командный интерфейс Навыки групп `/subsystem-*` и `/interface-*` позволяют анализировать, создавать, редактировать и проверять подсистемы 1С и их командный интерфейс — XML-файлы Subsystem и CommandInterface.xml из выгрузки конфигурации. ## Навыки | Навык | Параметры | Описание | |-------|-----------|----------| | `/subsystem-info` | ` [-Mode] [-Name]` | Анализ структуры подсистемы: состав, дочерние, CI, дерево иерархии (5 режимов, включая full) | | `/subsystem-compile` | ` [-Parent]` | Генерация подсистемы из JSON DSL: XML + регистрация в Configuration.xml | | `/subsystem-edit` | ` -Operation -Value ""` | Точечное редактирование: 5 операций (add/remove content/child, set-property) | | `/subsystem-validate` | ` [-MaxErrors 30]` | Валидация структурной корректности: 13 проверок | | `/interface-edit` | ` -Operation -Value ""` | Настройка CommandInterface.xml: 6 операций (hide/show/place/order) | | `/interface-validate` | ` [-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 ИмяПодсистемы ``` ## Спецификация - [1c-subsystem-spec.md](1c-subsystem-spec.md) — XML-формат подсистем, CommandInterface.xml, namespace, элементы