Files
cc-1c-skills/tests/skills/cases/skd-decompile/structure-nested-and-folder.json
T
Nick Shirokov a73517ee07 feat(skd): nested folder + nestedObject + groupItem object form (round-trip)
Закрывает категорию B полностью на ERP-корпусе:
- selection.folder теперь рекурсивный: внутри items могут быть string,
  {field, title}, или ещё одна {folder, items: [...]}. Compile/decompile
  обходят дерево рекурсивно (Emit-SelectionItem / Build-SelectionItem).
- structure: новая ветка type=nestedObject с {objectID, settings:
  {selection, filter, order, conditionalAppearance, outputParameters}}.
- groupFields теперь объектная форма {field, groupType?, periodAdditionType?}
  когда не дефолт (Items / None). Compile уже принимал; decompile перестаёт
  ставить warning GroupItemDetails. Try-StructureShorthand игнорирует
  object-form поля при сворачивании в строку.
- Refactor: Build-Structure для StructureItemGroup теперь использует
  общий Get-GroupFields вместо дублированного inline-кода.

В SKILL.md не добавляем (формы редкие/сложные, модель не пишет с нуля).

Новый тест structure-nested-and-folder покрывает все три случая bit-perfect.
Versions: compile v1.30→v1.31, decompile v0.12→v0.13.

На сэмпле 30 ERP-отчётов: 754 → 32 sentinel'ов (-96%), clean 4 → 24/30.
Остаточные 32 — все TemplateStyleMismatch (категория C, диагностика).
2026-05-21 18:19:49 +03:00

66 lines
2.3 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"name": "Структура: nestedObject + selection с вложенными folder и field-with-title + groupItem object form",
"preRun": [
{
"script": "skd-compile/scripts/skd-compile",
"input": {
"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": ["ВидРасчета", "Сумма"]
}}
]
}
]
}
}
]
},
"args": { "-DefinitionFile": "{inputFile}", "-OutputPath": "Template.xml" },
"cwd": "{workDir}"
}
],
"params": { "templatePath": "Template.xml" },
"outputPath": "decompiled.json"
}