mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-09-17 07:15:21 +03:00
feat(skd-decompile): компактный JSON-сериализатор + расширенный shorthand totalFields
Заменил ConvertTo-Json (PS5.1) на собственный ConvertTo-CompactJson: - 2-пробельный indent (вместо 4 + выравнивание keys по длине) - Массивы примитивов (string/number/bool/null) — inline `[a, b, c]` - Массивы с объектами/nested arrays — multi-line как раньше - Кириллица в UTF-8 (без \uXXXX-escapes) - Корректный escape строк (\\", \\, \n, \r, \t, \uXXXX для control chars) Build-TotalField: shorthand "name: expr" для любого однострочного expression. Раньше object form применялась когда expression не Func(arg). Теперь — только когда есть group или expression многострочный. Compile принимает любой shorthand вида "dataPath: expression" (Parse- TotalShorthand делает split по первому ":"). Save-UserStyles тоже использует новый сериализатор. Все 16 декомпиляционных snapshot'ов обновлены (косметика — JSON структурно тот же, тесты round-trip проходят). На реальном отчёте (целевой корпус): 405 → 264 строк (-35%). v0.18 → v0.19.
This commit is contained in:
+68
-78
@@ -1,80 +1,70 @@
|
||||
{
|
||||
"dataSets": [
|
||||
{
|
||||
"name": "DSОбъединение",
|
||||
"items": [
|
||||
{
|
||||
"name": "Часть1",
|
||||
"objectName": "ДанныеЧасть1"
|
||||
},
|
||||
{
|
||||
"name": "Часть2",
|
||||
"objectName": "ДанныеЧасть2"
|
||||
}
|
||||
],
|
||||
"fields": [
|
||||
"Период: date",
|
||||
"ВидРасчета: CatalogRef.ВидыРасчета",
|
||||
"Сумма: decimal(15,2)",
|
||||
"Подразделение: CatalogRef.Подразделения"
|
||||
]
|
||||
}
|
||||
],
|
||||
"settingsVariants": [
|
||||
{
|
||||
"name": "Основной",
|
||||
"settings": {
|
||||
"selection": [
|
||||
"Период",
|
||||
{
|
||||
"field": "Сумма",
|
||||
"title": "Итого"
|
||||
},
|
||||
{
|
||||
"folder": "Группа итогов",
|
||||
"items": [
|
||||
"ВидРасчета",
|
||||
{
|
||||
"field": "Сумма",
|
||||
"title": "Сумма с расшифровкой"
|
||||
},
|
||||
{
|
||||
"folder": "Подгруппа",
|
||||
"items": [
|
||||
"Подразделение"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"structure": [
|
||||
{
|
||||
"name": "Группа1",
|
||||
"groupFields": [
|
||||
{
|
||||
"field": "Период",
|
||||
"periodAdditionType": "Day"
|
||||
},
|
||||
{
|
||||
"field": "Подразделение",
|
||||
"groupType": "Hierarchy"
|
||||
}
|
||||
],
|
||||
"children": [
|
||||
{
|
||||
"type": "nestedObject",
|
||||
"objectID": "ДанныеЧасть1",
|
||||
"settings": {
|
||||
"selection": [
|
||||
"ВидРасчета",
|
||||
"Сумма"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
"dataSets": [
|
||||
{
|
||||
"name": "DSОбъединение",
|
||||
"items": [
|
||||
{
|
||||
"name": "Часть1",
|
||||
"objectName": "ДанныеЧасть1"
|
||||
},
|
||||
{
|
||||
"name": "Часть2",
|
||||
"objectName": "ДанныеЧасть2"
|
||||
}
|
||||
],
|
||||
"fields": ["Период: date", "ВидРасчета: CatalogRef.ВидыРасчета", "Сумма: decimal(15,2)", "Подразделение: CatalogRef.Подразделения"]
|
||||
}
|
||||
],
|
||||
"settingsVariants": [
|
||||
{
|
||||
"name": "Основной",
|
||||
"settings": {
|
||||
"selection": [
|
||||
"Период",
|
||||
{
|
||||
"field": "Сумма",
|
||||
"title": "Итого"
|
||||
},
|
||||
{
|
||||
"folder": "Группа итогов",
|
||||
"items": [
|
||||
"ВидРасчета",
|
||||
{
|
||||
"field": "Сумма",
|
||||
"title": "Сумма с расшифровкой"
|
||||
},
|
||||
{
|
||||
"folder": "Подгруппа",
|
||||
"items": ["Подразделение"]
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"structure": [
|
||||
{
|
||||
"name": "Группа1",
|
||||
"groupFields": [
|
||||
{
|
||||
"field": "Период",
|
||||
"periodAdditionType": "Day"
|
||||
},
|
||||
{
|
||||
"field": "Подразделение",
|
||||
"groupType": "Hierarchy"
|
||||
}
|
||||
],
|
||||
"children": [
|
||||
{
|
||||
"type": "nestedObject",
|
||||
"objectID": "ДанныеЧасть1",
|
||||
"settings": {
|
||||
"selection": ["ВидРасчета", "Сумма"]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user