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

9.9 KiB
Raw Blame History

Подсистемы и командный интерфейс

Навыки групп /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:

Минимальный пример

{
  "name": "Тест"
}

Умолчания: includeInCommandInterface = true, useOneCommand = false, synonym генерируется из name.

Полный пример

{
  "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",...] Порядок групп

Примеры

# Скрыть команду
... -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:

{
  "name": "Продажи",
  "synonym": "Продажи",
  "content": ["Catalog.Товары", "Document.Заказ", "Report.Продажи"],
  "children": ["Настройки", "Отчёты"],
  "picture": "CommonPicture.Продажи"
}

И вызовет /subsystem-compile/subsystem-validate/subsystem-info.

Добавление объектов в подсистему

> Добавь Document.Счёт и Report.Задолженность в подсистему Продажи

Claude вызовет /subsystem-edit с операцией add-content:

... -SubsystemPath Subsystems/Продажи.xml -Operation add-content -Value '["Document.Счёт","Report.Задолженность"]'

Настройка командного интерфейса

> Скрой команду открытия списка товаров и размести отчёт Продажи в группе Отчёты

Claude вызовет /interface-edit:

# Скрыть команду
... -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:

<ChildObjects>
    <Subsystem>ИмяПодсистемы</Subsystem>
</ChildObjects>

Спецификация

  • 1c-subsystem-spec.md — XML-формат подсистем, CommandInterface.xml, namespace, элементы