# /skd-info — полная справка по режимам

Компактное описание — в [SKILL.md](SKILL.md).

## overview (по умолчанию) — карта схемы

Компактная навигационная карта (10-25 строк). Показывает структуру и подсказывает следующие шаги:

```
=== DCS: ОсновнаяСхемаКомпоновкиДанных (362 lines) ===

Sources: ИсточникДанных1 (Local)

Datasets:
  [Query]  НоменклатураСЦенами   7 fields, query 40 lines
Calculated: 1
Resources: 1
Templates: 1 templates, 1 group bindings
Params: (none)

Variants:
  [1] НоменклатураИЦены  "Номенклатура и цены"  Table(detail)  3 filters
  [2] НоменклатураБезЦен  "Номенклатура без цен"  Group(detail)  2 filters

Next:
  -Mode query             query text
  -Mode fields            field tables by dataset
  -Mode calculated        calculated field expressions
  -Mode resources         resource aggregation
  -Mode variant -Name <N> variant structure (1..2)
```

Для DataSetUnion — дерево наборов + связи:
```
Datasets:
  [Union] РасчетНалогаНаИмущество  52 fields
    ├─ [Query] РасчетНалогаНаИмущество   51 fields, query 181 lines
    ├─ [Query] ДанныеПоКадастровой   29 fields, query 40 lines
    ├─ [Query] ДанныеПоСреднегодовой   34 fields, query 41 lines
Links: РасчетНалогаНаИмущество -> СостояниеОС (2 fields)
```

Параметры разделяются на видимые/скрытые:
```
Params: 18 (7 visible, 11 hidden): Период, Ответственный, ...
```

## query — текст запроса

`-Name <набор>` — имя DataSet (обязателен если наборов > 1).

Извлекает raw-текст запроса с деэкранированием XML (`&amp;`→`&`, `&gt;`→`>`). Для пакетных запросов — оглавление батчей:

```
=== Query: ДанныеТ13 (334 lines, 13 batches) ===
  Batch 1: lines 1-8     → ПОМЕСТИТЬ Представления_Периоды
  Batch 2: lines 9-26    → ПОМЕСТИТЬ Представления_СотрудникиОрганизации
  ...
--- Batch 1 ---
ВЫБРАТЬ
  ДАТАВРЕМЯ(1, 1, 1) КАК Период
ПОМЕСТИТЬ Представления_Периоды
...
```

Фильтр по номеру батча: `-Batch 3` покажет только 3-й пакет.

## fields — поля наборов данных

Без `-Name` — карта: имена полей по наборам:
```
=== Fields map ===
СостояниеОС [Query] (3): Организация, ОсновноеСредство, ДатаСостояния
РасчетНалогаНаИмущество [Union] (52): ДоляСтоимостиЧислитель, ...
  РасчетНалогаНаИмущество [Query] (51): КадастроваяСтоимость, ...
```

С `-Name <поле>` — детали конкретного поля:
```
=== Field: ДатаСостояния "Дата ввода в эксплуатацию" ===

Dataset: СостояниеОС [Query]
Format: ДФ=dd.MM.yyyy
```

Показывает: dataset, title, type, role, useRestriction, format, presentationExpression.

## links — связи наборов данных

```
=== Links (4) ===

РасчетНалогаНаИмущество -> СостояниеОС :
  Организация -> Организация
  ОсновноеСредство -> ОсновноеСредство
```

Группирует по парам наборов. Показывает поля связи и параметры.

## calculated — вычисляемые поля

Без `-Name` — карта: имена и заголовки:
```
=== Calculated fields (23) ===
  ДоляСтоимости  "Доля стоимости"
  КоэффициентКи  "Коэффициент Ки"
  ...
```

С `-Name <поле>` — полное выражение:
```
=== Calculated: ДоляСтоимости ===

Expression:
  ВЫБОР КОГДА ... ТОГДА "1" ИНАЧЕ ... КОНЕЦ
Title: Доля стоимости
Restrict: condition
```

## resources — ресурсы (итоги по группировкам)

Без `-Name` — карта: имена полей, `*` = есть формулы по группировкам:
```
=== Resources (51) ===
  НалоговаяБаза
  КоэффициентКи *
  ...
  * = has group-level formulas
```

С `-Name <поле>` — формулы агрегации:
```
=== Resource: ДатаСостояния ===

  [ОсновноеСредство] ЕстьNull(ДатаСостояния, "")
```

## params — параметры схемы

```
=== Parameters (16) ===
  Name                       Type                   Default          Visible  Expression
  Период                     StandardPeriod         LastMonth        yes      -
  НачалоПериода              DateTime               -                hidden   &Период.ДатаНачала
  Организация                CatalogRef.Организации null             yes      -
```

## variant — варианты отчёта

Без `-Name` — список вариантов:
```
=== Variants (2) ===
  [1] НоменклатураИЦены  "Номенклатура и цены"  Table(detail)  3 filters
  [2] НоменклатураБезЦен  "Номенклатура без цен"  Group(detail)  2 filters
```

С `-Name <N|имя>` — структура конкретного варианта:
```
=== Variant [1]: НоменклатураИЦены "Номенклатура и цены" ===

Structure:
  Table "Таблица"
  ├── Columns: [ТипЦен Items]
  │     Selection: Auto, Цена
  └── Rows: [Номенклатура Items]
        Selection: Номенклатура, УИД, Auto

Filter:
  [ ] Номенклатура InHierarchy  [user]
  [ ] ТипЦен Equal
  [x] ВАрхиве = false  "Исключая скрытые товары"

DataParams: КлючВарианта="НоменклатураИЦены"
Output: style=ЧерноБелый  groups=Separately  totalsH=None  totalsV=None
```

## templates — привязки шаблонов вывода

Три типа привязок: `fieldTemplate` (к полю), `groupTemplate` (к группировке, Header/Footer), `groupHeaderTemplate` (заголовок группы).

Без `-Name` — карта привязок:
```
=== Templates (70 defined: 49 field, 37 group) ===

Field bindings (49): (all trivial)
  ОстаточнаяСтоимостьНа0101, ОстаточнаяСтоимостьНа0102, ...

Group bindings (37):
  ВидНалоговойБазы
    Header -> Макет3 (1 rows, 1 params)
  СреднегодоваяСтоимость2019
    Footer -> Макет50 (1 rows) spacer
    GroupHeader -> Макет40 (3 rows)
```

С `-Name <группировка|поле>` — содержимое шаблонов:
```
=== Templates: СреднегодоваяСтоимость2019 ===

Footer -> Макет50 [1 rows, 1 cells]:
  Row 1: (empty)

GroupHeader -> Макет40 [3 rows, 78 cells]:
  Row 1: "№ п/п" | "###Группировки1###" | "Инв. номер" | ...
  Row 2: "01.01" | "01.02" | ... | "31.12"
  Row 3: "1" | "2" | ... | "26"
```

Для field-привязок:
```
=== Field template: ОстаточнаяСтоимостьНа0101 -> Макет4 ===
[1 rows, 1 cells]
  Row 1: {ОстаточнаяСтоимостьНа0101}
  (all params trivial)
```

**Тривиальность выражений**: `Поле = Поле` и `Поле = Представление(Поле)` считаются тривиальными и НЕ выводятся. Показываются только нетривиальные — когда выражение содержит другое поле, вызов метода, пустую строку и т.д.

## trace — трассировка поля от заголовка до запроса

Ищет поле по dataPath ИЛИ заголовку (включая подстроку) и показывает полную цепочку происхождения за один вызов:

```
=== Trace: КоэффициентКи "Коэффициент Ки" ===

Dataset: (schema-level only, not in dataset fields)

Calculated:
  ВЫБОР КОГДА ... ТОГДА 0 ИНАЧЕ ... КОНЕЦ
  Operands:
    КоличествоМесяцевИспользования -> РасчетНалогаНаИмущество [Query]
    КоличествоМесяцевВладения -> РасчетНалогаНаИмущество [Query]

Resource:
  [ОсновноеСредство] Сумма(КоэффициентКи)
```

Типичный сценарий: пользователь видит колонку "Коэффициент Ки" в отчёте и спрашивает как она считается. Один вызов `trace` показывает: формулу вычисления, откуда берутся операнды, как агрегируется в ресурс.

## Что не выводится

- XML namespace-декларации
- Обёртки v8:item/v8:lang/v8:content (извлекаем чистый текст)
- userSettingID (GUID-ы пользовательских настроек)
- Дефолтные periodAdditionBegin/End = 0001-01-01
- viewMode
