From b67f4b21e6578aea88c2ffc842104aaf7ebd9963 Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Tue, 10 Feb 2026 21:32:29 +0300 Subject: [PATCH] Add SKD group to README, create skd-guide.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - README: add СКД row to skills table, specs section, directory tree - docs/skd-guide.md: usage guide with workflow, DSL examples, scenarios Co-Authored-By: Claude Opus 4.6 --- README.md | 12 +++- docs/skd-guide.md | 155 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 166 insertions(+), 1 deletion(-) create mode 100644 docs/skd-guide.md diff --git a/README.md b/README.md index a1adf052..9a63716d 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,7 @@ | Табличный документ (MXL) | 4 навыка `/mxl-*` | Анализ, создание, компиляция макетов печатных форм | [Подробнее](docs/mxl-guide.md) | | Управляемые формы (Form) | 6 навыков `/form-*` | Создание, анализ, генерация, модификация, валидация управляемых форм | [Подробнее](docs/form-guide.md) | | Роли (Role) | 3 навыка `/role-*` | Анализ прав роли, создание из JSON DSL, валидация | [Подробнее](docs/role-guide.md) | +| Схема компоновки (СКД) | 3 навыка `/skd-*` | Анализ, генерация из JSON DSL, валидация схем компоновки данных | [Подробнее](docs/skd-guide.md) | | Утилиты | `/img-grid` | Наложение сетки на изображение для определения пропорций колонок | — | ## Требования @@ -41,6 +42,8 @@ - [Form DSL](docs/form-dsl-spec.md) — JSON-формат описания формы для `/form-compile` - [Роли (Rights.xml)](docs/1c-role-spec.md) — XML-формат прав роли, типы объектов, RLS - [Role DSL](docs/role-dsl-spec.md) — JSON-формат описания ролей для `/role-compile` +- [Схема компоновки данных (DCS)](docs/1c-dcs-spec.md) — XML-формат DataCompositionSchema, 930 схем проанализировано +- [SKD DSL](docs/skd-dsl-spec.md) — JSON-формат описания СКД для `/skd-compile` ## Структура репозитория @@ -69,12 +72,16 @@ ├── role-info/ # Анализ прав роли ├── role-compile/ # Создание роли из JSON DSL ├── role-validate/ # Валидация роли +├── skd-info/ # Анализ схемы компоновки данных +├── skd-compile/ # Компиляция СКД из JSON DSL +├── skd-validate/ # Валидация СКД └── img-grid/ # Сетка для анализа изображений docs/ ├── epf-guide.md # Гайд: внешние обработки ├── mxl-guide.md # Гайд: табличный документ ├── form-guide.md # Гайд: управляемые формы ├── role-guide.md # Гайд: роли +├── skd-guide.md # Гайд: схема компоновки данных ├── 1c-xml-format-spec.md # Спецификация XML-формата ├── 1c-form-spec.md # Спецификация управляемых форм ├── 1c-help-spec.md # Спецификация встроенной справки @@ -82,5 +89,8 @@ docs/ ├── 1c-spreadsheet-spec.md # Спецификация табличного документа ├── mxl-dsl-spec.md # Спецификация MXL DSL ├── form-dsl-spec.md # Спецификация Form DSL -└── 1c-role-spec.md # Спецификация ролей (Rights.xml) +├── 1c-role-spec.md # Спецификация ролей (Rights.xml) +├── 1c-dcs-spec.md # Спецификация СКД (DataCompositionSchema) +├── skd-dsl-spec.md # Спецификация SKD DSL +└── role-dsl-spec.md # Спецификация Role DSL ``` diff --git a/docs/skd-guide.md b/docs/skd-guide.md new file mode 100644 index 00000000..c5931957 --- /dev/null +++ b/docs/skd-guide.md @@ -0,0 +1,155 @@ +# Схема компоновки данных (СКД) + +Навыки группы `/skd-*` позволяют анализировать, создавать и проверять схемы компоновки данных 1С — XML-файлы DataCompositionSchema (Template.xml). + +## Навыки + +| Навык | Параметры | Описание | +|-------|-----------|----------| +| `/skd-info` | ` [-Mode] [-Name]` | Анализ структуры СКД: наборы, поля, параметры, ресурсы, варианты (10 режимов) | +| `/skd-compile` | ` ` | Генерация Template.xml из JSON DSL: наборы, поля, итоги, параметры, варианты | +| `/skd-validate` | ` [-MaxErrors 20]` | Валидация структурной корректности: ~30 проверок | + +## Рабочий цикл + +``` +Описание отчёта (текст) → JSON DSL → /skd-compile → Template.xml → /skd-validate + → /skd-info +``` + +1. Claude формирует JSON-определение СКД (shorthand-поля, параметры, итоги, варианты) +2. `/skd-compile` генерирует Template.xml с корректными namespace, типами, группировками +3. `/skd-validate` проверяет корректность сгенерированного XML +4. `/skd-info` выводит компактную сводку для визуальной проверки + +## JSON DSL — компактный формат + +СКД описываются в JSON с двумя уровнями детализации для каждой секции: + +### Минимальный пример + +```json +{ + "dataSets": [{ + "query": "ВЫБРАТЬ Номенклатура.Наименование ИЗ Справочник.Номенклатура КАК Номенклатура", + "fields": ["Наименование"] + }] +} +``` + +Умолчания: dataSource создаётся автоматически (`ИсточникДанных1/Local`), набор получает имя `НаборДанных1`, вариант настроек "Основной" с деталями. + +### Поля — shorthand + +```json +"fields": [ + "Наименование", + "Количество: decimal(15,2)", + "Организация: CatalogRef.Организации @dimension", + "Служебное: string #noFilter #noOrder" +] +``` + +Формат: `Имя[: Тип] [@роль...] [#ограничение...]`. Роли: `@dimension`, `@account`, `@balance`, `@period`. Ограничения: `#noField`, `#noFilter`, `#noGroup`, `#noOrder`. + +### Итоги — shorthand + +```json +"totalFields": ["Количество: Сумма", "Стоимость: Сумма(Кол * Цена)"] +``` + +Формат: `Поле: Функция` или `Поле: Функция(выражение)`. + +### Параметры — shorthand + +```json +"parameters": [ + "Период: StandardPeriod = LastMonth", + "Организация: CatalogRef.Организации" +] +``` + +### Вычисляемые поля — shorthand + +```json +"calculatedFields": ["Итого = Количество * Цена"] +``` + +### Объектная форма + +Все секции поддерживают полную объектную форму для сложных случаев (title, appearance, role с выражениями, userSettingID и т.д.). Подробности — в [спецификации SKD DSL](skd-dsl-spec.md). + +## Сценарии использования + +### Анализ существующей СКД + +``` +> Проанализируй схему компоновки отчёта Reports/АнализНДФЛ/Templates/ОсновнаяСхемаКомпоновкиДанных +``` + +Claude вызовет `/skd-info` (overview → trace → query → variant) и опишет: +- наборы данных и их поля +- параметры и значения по умолчанию +- ресурсы и формулы агрегации +- структуру группировок в вариантах настроек + +### Создание СКД по описанию + +``` +> Создай СКД для отчёта по продажам: группировка по организациям, +> поля Номенклатура, Количество, Сумма. Период — параметр. +``` + +Claude сформирует JSON: +```json +{ + "dataSets": [{ + "name": "Продажи", + "query": "ВЫБРАТЬ ...", + "fields": [ + "Организация: CatalogRef.Организации @dimension", + "Номенклатура: CatalogRef.Номенклатура @dimension", + "Количество: decimal(15,3)", + "Сумма: decimal(15,2)" + ] + }], + "totalFields": ["Количество: Сумма", "Сумма: Сумма"], + "parameters": ["Период: StandardPeriod = LastMonth"], + "settingsVariants": [{ + "name": "Основной", + "settings": { + "selection": ["Номенклатура", "Количество", "Сумма", "Auto"], + "structure": [{ + "type": "group", "groupBy": ["Организация"], + "selection": ["Auto"], "order": ["Auto"], + "children": [{ "type": "group", "selection": ["Auto"], "order": ["Auto"] }] + }] + } + }] +} +``` + +И вызовет `/skd-compile` → `/skd-validate` → `/skd-info`. + +### Проверка существующей СКД + +``` +> Проверь корректность СКД Reports/МойОтчёт/Templates/ОсновнаяСхемаКомпоновкиДанных/Ext/Template.xml +``` + +Claude вызовет `/skd-validate` и покажет результат: ошибки (битые ссылки, дубликаты, невалидные типы) и предупреждения. + +## Структура файлов СКД + +``` +<Объект>/Templates/ +├── ИмяМакета.xml # Метаданные (UUID, TemplateType=DataCompositionSchema) +└── ИмяМакета/ + └── Ext/ + └── Template.xml # Тело схемы (DataCompositionSchema) +``` + +## Спецификации + +- [1c-dcs-spec.md](1c-dcs-spec.md) — XML-формат DataCompositionSchema, namespace, элементы, типы +- [skd-dsl-spec.md](skd-dsl-spec.md) — JSON DSL для описания СКД (формат входных данных `/skd-compile`)