mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-06-15 10:24:57 +03:00
chore(skd-compile): порт PS → PY + spec для последних расширений
В PS-версии накопилось три блока изменений за сессию, которые не были отражены в Python-порте — синхронизирую: - Emit-TableAxisBlock (filter/order/selection/outputParameters на column/row/point/series) - Emit-UserFields (UserFieldExpression / UserFieldCase в settings) DSL spec обновлён: добавлены разделы userFields, расширены примеры table column/row и chart points/series. В SKILL.md изменения не вносятся — фичи редкие, описаны только в spec. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
+76
-2
@@ -494,6 +494,7 @@ XML-маппинг — по `<group>` на каждый элемент:
|
||||
"name": "Основной",
|
||||
"presentation": "Основной вариант",
|
||||
"settings": {
|
||||
"userFields": [...],
|
||||
"selection": [...],
|
||||
"filter": [...],
|
||||
"order": [...],
|
||||
@@ -780,22 +781,95 @@ XML-маппинг — по `<group>` на каждый элемент:
|
||||
{ "groupBy": ["Номенклатура"], "selection": ["Auto"], "order": ["Auto"] }
|
||||
],
|
||||
"columns": [
|
||||
{ "groupBy": ["Период"], "selection": ["Auto"], "order": ["Auto"] }
|
||||
{
|
||||
"groupBy": ["Период"],
|
||||
"filter": ["Сумма > 0"],
|
||||
"selection": ["Auto"],
|
||||
"order": ["Auto"],
|
||||
"outputParameters": { "РасположениеИтогов": "None" }
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Каждая `column`/`row` принимает те же поля что и `group`: `groupBy`/`groupFields`, `filter`, `order`, `selection`, `outputParameters`.
|
||||
|
||||
#### Диаграмма (chart)
|
||||
|
||||
```json
|
||||
{
|
||||
"type": "chart",
|
||||
"points": { "groupBy": ["Организация"], "order": ["Auto"] },
|
||||
"points": { "groupBy": ["Организация"], "order": ["Auto"], "filter": [...] },
|
||||
"series": { "groupBy": ["Месяц"], "order": ["Auto"] },
|
||||
"selection": ["Сумма"]
|
||||
}
|
||||
```
|
||||
|
||||
`points` и `series` принимают те же поля что table column/row.
|
||||
|
||||
### userFields (пользовательские вычисляемые поля)
|
||||
|
||||
Дополнительные поля, которые пользователь может задать в режиме «Изменить вариант» через UI. Хранятся в settings варианта. Два подтипа определяются по содержимому объекта:
|
||||
|
||||
**Expression-форма** — поле вычисляется выражением (опционально с разделением для детальных строк и для итогов):
|
||||
|
||||
```json
|
||||
"userFields": [
|
||||
{
|
||||
"dataPath": "ПользовательскиеПоля.Поле1",
|
||||
"title": { "ru": "Отработано дней", "en": "Days worked" },
|
||||
"detail": {
|
||||
"expression": "Выбор Когда Группа = ... Тогда ОтработаноДней Иначе 0 Конец",
|
||||
"presentation": "Выбор Когда Группа = ... Тогда [Отработано дней] Иначе 0 Конец"
|
||||
},
|
||||
"total": {
|
||||
"expression": "Сумма(Выбор Когда Группа = ... Тогда ОтработаноДней Иначе 0 Конец)",
|
||||
"presentation": "Сумма(Выбор Когда Группа = ... Тогда [Отработано дней] Иначе 0 Конец)"
|
||||
}
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
| Поле | Описание |
|
||||
|------|----------|
|
||||
| `dataPath` | Путь поля в формате `ПользовательскиеПоля.ПолеN` |
|
||||
| `title` | Заголовок (строка или multilang dict) |
|
||||
| `detail.expression` | Выражение для детальных записей |
|
||||
| `detail.presentation` | Тот же expression с подстановкой `[Имя поля]` (для UI) |
|
||||
| `total.expression` | Выражение для итоговой строки |
|
||||
| `total.presentation` | Same для UI |
|
||||
|
||||
**Case-форма** — поле принимает разные значения в зависимости от условий:
|
||||
|
||||
```json
|
||||
"userFields": [
|
||||
{
|
||||
"dataPath": "ПользовательскиеПоля.Поле1",
|
||||
"title": { "ru": "Вид продаж" },
|
||||
"cases": [
|
||||
{
|
||||
"filter": ["ХозОперация <> Перечисление.ХозяйственныеОперации.РеализацияВРозницу"],
|
||||
"value": 2,
|
||||
"presentation": { "ru": "Только оптовые продажи", "en": "Wholesale only" }
|
||||
},
|
||||
{
|
||||
"filter": ["ХозОперация = Перечисление.ХозяйственныеОперации.РеализацияВРозницу"],
|
||||
"value": 3,
|
||||
"presentation": { "ru": "Только розничные продажи", "en": "Retail only" }
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
| Поле | Описание |
|
||||
|------|----------|
|
||||
| `cases[].filter` | Условие (как в settings filter) |
|
||||
| `cases[].value` | Значение поля если условие выполнено (типы автоопределяются: bool/decimal/string) |
|
||||
| `cases[].presentation` | Текст значения для UI (multilang) |
|
||||
|
||||
Тип элемента определяется автоматически: наличие `cases` → `UserFieldCase`, иначе → `UserFieldExpression`.
|
||||
|
||||
### viewMode (режим доступности)
|
||||
|
||||
`viewMode` управляет доступностью элемента в **пользовательских настройках** отчёта («Изменить вариант…» / «Настройки»). Возможные значения:
|
||||
|
||||
Reference in New Issue
Block a user