From 48b08d77e55a16ff37ce8023be56ddafc70109ae Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Thu, 21 May 2026 16:20:59 +0300 Subject: [PATCH] =?UTF-8?q?test(skd-decompile):=206=20snapshot-based=20tes?= =?UTF-8?q?t=20cases=20=D0=BF=D0=BE=20=D1=81=D0=BB=D0=BE=D1=8F=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Кейсы создают исходник через preRun (skd-compile), декомпилируют его и сравнивают workDir со снапшотом (Template.xml + decompiled.json): - minimal-query — базовый DataSetQuery - fields-types-and-restrictions — типы, роли, restrictions, multilang title, appearance, composite type, presentationExpression - calc-total-params — calculatedFields, totalFields, parameters с autoDates/valueList/hidden/availableValues - templates-with-style-merge-drilldown — built-in стили header/data, merge >/|, drilldown свёртка - variant-full — selection с folder, filter Or, conditionalAppearance, outputParameters, dataParameters="auto", structure shorthand, groupTemplates - dataset-types — DataSetQuery + DataSetObject + DataSetUnion Все 6 passes на runtime=powershell. Готовая база для регрессии при питон-порте (можно прогнать тот же набор через --runtime python). Co-Authored-By: Claude Opus 4.7 --- tests/skills/cases/skd-decompile/_skill.json | 5 +- .../skd-decompile/calc-total-params.json | 43 + .../cases/skd-decompile/dataset-types.json | 33 + .../fields-types-and-restrictions.json | 31 + .../cases/skd-decompile/minimal-query.json | 2 +- .../snapshots/calc-total-params/Template.xml | 218 +++ .../calc-total-params/decompiled.json | 42 + .../snapshots/dataset-types/Template.xml | 115 ++ .../snapshots/dataset-types/decompiled.json | 38 + .../Template.xml | 179 +++ .../decompiled.json | 46 + .../snapshots/minimal-query/Template.xml | 44 + .../snapshots/minimal-query/decompiled.json | 11 + .../Template.xml | 1165 +++++++++++++++++ .../decompiled.json | 81 ++ .../snapshots/variant-full/Template.xml | 414 ++++++ .../snapshots/variant-full/decompiled.json | 87 ++ .../templates-with-style-merge-drilldown.json | 43 + .../cases/skd-decompile/variant-full.json | 60 + 19 files changed, 2654 insertions(+), 3 deletions(-) create mode 100644 tests/skills/cases/skd-decompile/calc-total-params.json create mode 100644 tests/skills/cases/skd-decompile/dataset-types.json create mode 100644 tests/skills/cases/skd-decompile/fields-types-and-restrictions.json create mode 100644 tests/skills/cases/skd-decompile/snapshots/calc-total-params/Template.xml create mode 100644 tests/skills/cases/skd-decompile/snapshots/calc-total-params/decompiled.json create mode 100644 tests/skills/cases/skd-decompile/snapshots/dataset-types/Template.xml create mode 100644 tests/skills/cases/skd-decompile/snapshots/dataset-types/decompiled.json create mode 100644 tests/skills/cases/skd-decompile/snapshots/fields-types-and-restrictions/Template.xml create mode 100644 tests/skills/cases/skd-decompile/snapshots/fields-types-and-restrictions/decompiled.json create mode 100644 tests/skills/cases/skd-decompile/snapshots/minimal-query/Template.xml create mode 100644 tests/skills/cases/skd-decompile/snapshots/minimal-query/decompiled.json create mode 100644 tests/skills/cases/skd-decompile/snapshots/templates-with-style-merge-drilldown/Template.xml create mode 100644 tests/skills/cases/skd-decompile/snapshots/templates-with-style-merge-drilldown/decompiled.json create mode 100644 tests/skills/cases/skd-decompile/snapshots/variant-full/Template.xml create mode 100644 tests/skills/cases/skd-decompile/snapshots/variant-full/decompiled.json create mode 100644 tests/skills/cases/skd-decompile/templates-with-style-merge-drilldown.json create mode 100644 tests/skills/cases/skd-decompile/variant-full.json diff --git a/tests/skills/cases/skd-decompile/_skill.json b/tests/skills/cases/skd-decompile/_skill.json index f8cbe464..11b69cba 100644 --- a/tests/skills/cases/skd-decompile/_skill.json +++ b/tests/skills/cases/skd-decompile/_skill.json @@ -2,10 +2,11 @@ "script": "skd-decompile/scripts/skd-decompile", "setup": "none", "args": [ - { "flag": "-TemplatePath", "from": "workPath", "field": "templatePath" } + { "flag": "-TemplatePath", "from": "workPath", "field": "templatePath" }, + { "flag": "-OutputPath", "from": "outputPath" } ], "snapshot": { "root": "workDir", - "normalizeUuids": false + "normalizeUuids": true } } diff --git a/tests/skills/cases/skd-decompile/calc-total-params.json b/tests/skills/cases/skd-decompile/calc-total-params.json new file mode 100644 index 00000000..e4f3b86b --- /dev/null +++ b/tests/skills/cases/skd-decompile/calc-total-params.json @@ -0,0 +1,43 @@ +{ + "name": "calculatedFields, totalFields, parameters с autoDates/valueList/hidden/availableValues", + "preRun": [ + { + "script": "skd-compile/scripts/skd-compile", + "input": { + "dataSets": [{ + "name": "Тест", + "query": "ВЫБРАТЬ * ИЗ Справочник.Номенклатура", + "fields": ["Цена: decimal(15,2)", "Закупка: decimal(15,2)"] + }], + "calculatedFields": [ + "Маржа = Цена - Закупка", + "Наценка [Наценка, %]: decimal(10,2) = Маржа / Закупка * 100", + "Служебное: string = \"\" #noField #noFilter #noGroup #noOrder" + ], + "totalFields": [ + "Цена: Сумма", + "Маржа: Сумма(Цена - Закупка)" + ], + "parameters": [ + "Период [Отчетный период]: StandardPeriod = LastMonth @autoDates", + "Организация: CatalogRef.Организации", + "СписокДокументов: CatalogRef.Документы @valueList", + "СлужебныйПар: string @hidden", + { + "name": "ПорядокОкругления", + "type": "EnumRef.Округления", + "value": "Перечисление.Округления.Окр1", + "availableValues": [ + {"value": "Перечисление.Округления.Окр1_00", "presentation": "руб. коп"}, + {"value": "Перечисление.Округления.Окр1", "presentation": "руб."} + ] + } + ] + }, + "args": { "-DefinitionFile": "{inputFile}", "-OutputPath": "Template.xml" }, + "cwd": "{workDir}" + } + ], + "params": { "templatePath": "Template.xml" }, + "outputPath": "decompiled.json" +} diff --git a/tests/skills/cases/skd-decompile/dataset-types.json b/tests/skills/cases/skd-decompile/dataset-types.json new file mode 100644 index 00000000..db445dc4 --- /dev/null +++ b/tests/skills/cases/skd-decompile/dataset-types.json @@ -0,0 +1,33 @@ +{ + "name": "DataSetQuery + DataSetObject + DataSetUnion в одной схеме", + "preRun": [ + { + "script": "skd-compile/scripts/skd-compile", + "input": { + "dataSets": [ + { + "name": "Запрос1", + "query": "ВЫБРАТЬ Номенклатура.Наименование КАК Имя ИЗ Справочник.Номенклатура КАК Номенклатура", + "fields": ["Имя: string"] + }, + { + "name": "Журнал", + "objectName": "ЖурналОшибок", + "fields": ["Сообщение: string(150)", "Уровень: string"] + }, + { + "name": "Объединение", + "items": [ + { "name": "Часть1", "query": "ВЫБРАТЬ 1 КАК Поле", "fields": ["Поле: decimal(10,2)"] }, + { "name": "Часть2", "query": "ВЫБРАТЬ 2 КАК Поле", "fields": ["Поле: decimal(10,2)"] } + ] + } + ] + }, + "args": { "-DefinitionFile": "{inputFile}", "-OutputPath": "Template.xml" }, + "cwd": "{workDir}" + } + ], + "params": { "templatePath": "Template.xml" }, + "outputPath": "decompiled.json" +} diff --git a/tests/skills/cases/skd-decompile/fields-types-and-restrictions.json b/tests/skills/cases/skd-decompile/fields-types-and-restrictions.json new file mode 100644 index 00000000..771c1192 --- /dev/null +++ b/tests/skills/cases/skd-decompile/fields-types-and-restrictions.json @@ -0,0 +1,31 @@ +{ + "name": "Поля: типы, роли, restrictions, multilang, appearance, composite, presentation", + "preRun": [ + { + "script": "skd-compile/scripts/skd-compile", + "input": { + "dataSets": [{ + "name": "Тест", + "query": "ВЫБРАТЬ * ИЗ Справочник.Номенклатура", + "fields": [ + "Наименование", + "Количество: decimal(15,2)", + "Организация: CatalogRef.Организации @dimension", + "Служебное: string #noField #noFilter", + "СтрокаФикс: string(50,fix)", + "Положительное: decimal(10,nonneg)", + "Дата1: date", + { "field": "СПояснением", "title": "Поле с пояснением", "type": "decimal(15,2)", "appearance": { "ГоризонтальноеПоложение": "Right", "МинимальнаяШирина": "80" } }, + { "field": "Многоязычное", "title": { "ru": "Русский", "en": "English" }, "type": "string" }, + { "field": "СоставноеПоле", "type": ["CatalogRef.Организации", "CatalogRef.Валюты"] }, + { "field": "СВыражениемПредставления", "type": "CatalogRef.Номенклатура", "presentationExpression": "Представление(СВыражениемПредставления)" } + ] + }] + }, + "args": { "-DefinitionFile": "{inputFile}", "-OutputPath": "Template.xml" }, + "cwd": "{workDir}" + } + ], + "params": { "templatePath": "Template.xml" }, + "outputPath": "decompiled.json" +} diff --git a/tests/skills/cases/skd-decompile/minimal-query.json b/tests/skills/cases/skd-decompile/minimal-query.json index 2c400d28..18d06ff0 100644 --- a/tests/skills/cases/skd-decompile/minimal-query.json +++ b/tests/skills/cases/skd-decompile/minimal-query.json @@ -15,5 +15,5 @@ } ], "params": { "templatePath": "Template.xml" }, - "expect": { "stdoutContains": "НаборДанных1" } + "outputPath": "decompiled.json" } diff --git a/tests/skills/cases/skd-decompile/snapshots/calc-total-params/Template.xml b/tests/skills/cases/skd-decompile/snapshots/calc-total-params/Template.xml new file mode 100644 index 00000000..776dd8e5 --- /dev/null +++ b/tests/skills/cases/skd-decompile/snapshots/calc-total-params/Template.xml @@ -0,0 +1,218 @@ + + + + ИсточникДанных1 + Local + + + Тест + + Цена + Цена + + xs:decimal + + 15 + 2 + Any + + + + + Закупка + Закупка + + xs:decimal + + 15 + 2 + Any + + + + ИсточникДанных1 + ВЫБРАТЬ * ИЗ Справочник.Номенклатура + + + Маржа + Цена - Закупка + + + Наценка + Маржа / Закупка * 100 + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Наценка, %</v8:content> + </v8:item> + + + xs:decimal + + 10 + 2 + Any + + + + + Служебное + "" + + xs:string + + 0 + Variable + + + + true + true + true + true + + + + Цена + Сумма(Цена) + + + Маржа + Сумма(Цена - Закупка) + + + Период + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Отчетный период</v8:content> + </v8:item> + + + v8:StandardPeriod + + + LastMonth + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + true + Always + + + НачалоПериода + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Начало периода</v8:content> + </v8:item> + + + xs:dateTime + + Date + + + 0001-01-01T00:00:00 + true + &Период.ДатаНачала + + + КонецПериода + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Конец периода</v8:content> + </v8:item> + + + xs:dateTime + + Date + + + 0001-01-01T00:00:00 + true + &Период.ДатаОкончания + + + Организация + + d5p1:CatalogRef.Организации + + + + + СписокДокументов + + d5p1:CatalogRef.Документы + + true + + + СлужебныйПар + + xs:string + + 0 + Variable + + + + true + false + + + ПорядокОкругления + + d5p1:EnumRef.Округления + + Перечисление.Округления.Окр1 + + Перечисление.Округления.Окр1_00 + + + ru + руб. коп + + + + + Перечисление.Округления.Окр1 + + + ru + руб. + + + + + + Основной + + + ru + Основной + + + + + + + + + + + + + + + + diff --git a/tests/skills/cases/skd-decompile/snapshots/calc-total-params/decompiled.json b/tests/skills/cases/skd-decompile/snapshots/calc-total-params/decompiled.json new file mode 100644 index 00000000..66b65f94 --- /dev/null +++ b/tests/skills/cases/skd-decompile/snapshots/calc-total-params/decompiled.json @@ -0,0 +1,42 @@ +{ + "dataSets": [ + { + "name": "Тест", + "query": "ВЫБРАТЬ * ИЗ Справочник.Номенклатура", + "fields": [ + "Цена: decimal(15,2)", + "Закупка: decimal(15,2)" + ] + } + ], + "calculatedFields": [ + "Маржа = Цена - Закупка", + "Наценка [Наценка, %]: decimal(10,2) = Маржа / Закупка * 100", + "Служебное: string = \"\" #noField #noFilter #noGroup #noOrder" + ], + "totalFields": [ + "Цена: Сумма", + "Маржа: Сумма(Цена - Закупка)" + ], + "parameters": [ + "Период [Отчетный период]: StandardPeriod = LastMonth @autoDates", + "Организация: CatalogRef.Организации", + "СписокДокументов: CatalogRef.Документы @valueList", + "СлужебныйПар: string @hidden", + { + "name": "ПорядокОкругления", + "type": "EnumRef.Округления", + "value": "Перечисление.Округления.Окр1", + "availableValues": [ + { + "value": "Перечисление.Округления.Окр1_00", + "presentation": "руб. коп" + }, + { + "value": "Перечисление.Округления.Окр1", + "presentation": "руб." + } + ] + } + ] +} \ No newline at end of file diff --git a/tests/skills/cases/skd-decompile/snapshots/dataset-types/Template.xml b/tests/skills/cases/skd-decompile/snapshots/dataset-types/Template.xml new file mode 100644 index 00000000..cf140321 --- /dev/null +++ b/tests/skills/cases/skd-decompile/snapshots/dataset-types/Template.xml @@ -0,0 +1,115 @@ + + + + ИсточникДанных1 + Local + + + Запрос1 + + Имя + Имя + + xs:string + + 0 + Variable + + + + ИсточникДанных1 + ВЫБРАТЬ Номенклатура.Наименование КАК Имя ИЗ Справочник.Номенклатура КАК Номенклатура + + + Журнал + + Сообщение + Сообщение + + xs:string + + 150 + Variable + + + + + Уровень + Уровень + + xs:string + + 0 + Variable + + + + ИсточникДанных1 + ЖурналОшибок + + + Объединение + + Часть1 + + Поле + Поле + + xs:decimal + + 10 + 2 + Any + + + + ИсточникДанных1 + ВЫБРАТЬ 1 КАК Поле + + + Часть2 + + Поле + Поле + + xs:decimal + + 10 + 2 + Any + + + + ИсточникДанных1 + ВЫБРАТЬ 2 КАК Поле + + + + Основной + + + ru + Основной + + + + + + + + + + + + + + + + diff --git a/tests/skills/cases/skd-decompile/snapshots/dataset-types/decompiled.json b/tests/skills/cases/skd-decompile/snapshots/dataset-types/decompiled.json new file mode 100644 index 00000000..e62c26ab --- /dev/null +++ b/tests/skills/cases/skd-decompile/snapshots/dataset-types/decompiled.json @@ -0,0 +1,38 @@ +{ + "dataSets": [ + { + "name": "Запрос1", + "query": "ВЫБРАТЬ Номенклатура.Наименование КАК Имя ИЗ Справочник.Номенклатура КАК Номенклатура", + "fields": [ + "Имя: string" + ] + }, + { + "name": "Журнал", + "objectName": "ЖурналОшибок", + "fields": [ + "Сообщение: string(150)", + "Уровень: string" + ] + }, + { + "name": "Объединение", + "items": [ + { + "name": "Часть1", + "query": "ВЫБРАТЬ 1 КАК Поле", + "fields": [ + "Поле: decimal(10,2)" + ] + }, + { + "name": "Часть2", + "query": "ВЫБРАТЬ 2 КАК Поле", + "fields": [ + "Поле: decimal(10,2)" + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/tests/skills/cases/skd-decompile/snapshots/fields-types-and-restrictions/Template.xml b/tests/skills/cases/skd-decompile/snapshots/fields-types-and-restrictions/Template.xml new file mode 100644 index 00000000..793154ab --- /dev/null +++ b/tests/skills/cases/skd-decompile/snapshots/fields-types-and-restrictions/Template.xml @@ -0,0 +1,179 @@ + + + + ИсточникДанных1 + Local + + + Тест + + Наименование + Наименование + + + Количество + Количество + + xs:decimal + + 15 + 2 + Any + + + + + Организация + Организация + + true + + + d5p1:CatalogRef.Организации + + + + Служебное + Служебное + + true + true + + + xs:string + + 0 + Variable + + + + + СтрокаФикс + СтрокаФикс + + xs:string + + 50 + Fixed + + + + + Положительное + Положительное + + xs:decimal + + 10 + 0 + Nonnegative + + + + + Дата1 + Дата1 + + xs:dateTime + + Date + + + + + СПояснением + СПояснением + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Поле с пояснением</v8:content> + </v8:item> + + + xs:decimal + + 15 + 2 + Any + + + + + ГоризонтальноеПоложение + Right + + + МинимальнаяШирина + 80 + + + + + Многоязычное + Многоязычное + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Русский</v8:content> + </v8:item> + <v8:item> + <v8:lang>en</v8:lang> + <v8:content>English</v8:content> + </v8:item> + + + xs:string + + 0 + Variable + + + + + СоставноеПоле + СоставноеПоле + + d5p1:CatalogRef.Организации + d5p1:CatalogRef.Валюты + + + + СВыражениемПредставления + СВыражениемПредставления + + d5p1:CatalogRef.Номенклатура + + Представление(СВыражениемПредставления) + + ИсточникДанных1 + ВЫБРАТЬ * ИЗ Справочник.Номенклатура + + + Основной + + + ru + Основной + + + + + + + + + + + + + + + + diff --git a/tests/skills/cases/skd-decompile/snapshots/fields-types-and-restrictions/decompiled.json b/tests/skills/cases/skd-decompile/snapshots/fields-types-and-restrictions/decompiled.json new file mode 100644 index 00000000..a50e7de0 --- /dev/null +++ b/tests/skills/cases/skd-decompile/snapshots/fields-types-and-restrictions/decompiled.json @@ -0,0 +1,46 @@ +{ + "dataSets": [ + { + "name": "Тест", + "query": "ВЫБРАТЬ * ИЗ Справочник.Номенклатура", + "fields": [ + "Наименование", + "Количество: decimal(15,2)", + "Организация: CatalogRef.Организации @dimension", + "Служебное: string #noField #noFilter", + "СтрокаФикс: string(50,fix)", + "Положительное: decimal(10,nonneg)", + "Дата1: date", + { + "field": "СПояснением", + "title": "Поле с пояснением", + "type": "decimal(15,2)", + "appearance": { + "ГоризонтальноеПоложение": "Right", + "МинимальнаяШирина": "80" + } + }, + { + "field": "Многоязычное", + "title": { + "ru": "Русский", + "en": "English" + }, + "type": "string" + }, + { + "field": "СоставноеПоле", + "type": [ + "CatalogRef.Организации", + "CatalogRef.Валюты" + ] + }, + { + "field": "СВыражениемПредставления", + "type": "CatalogRef.Номенклатура", + "presentationExpression": "Представление(СВыражениемПредставления)" + } + ] + } + ] +} \ No newline at end of file diff --git a/tests/skills/cases/skd-decompile/snapshots/minimal-query/Template.xml b/tests/skills/cases/skd-decompile/snapshots/minimal-query/Template.xml new file mode 100644 index 00000000..3a0642f3 --- /dev/null +++ b/tests/skills/cases/skd-decompile/snapshots/minimal-query/Template.xml @@ -0,0 +1,44 @@ + + + + ИсточникДанных1 + Local + + + НаборДанных1 + + Наименование + Наименование + + ИсточникДанных1 + ВЫБРАТЬ Номенклатура.Наименование КАК Наименование ИЗ Справочник.Номенклатура КАК Номенклатура + + + Основной + + + ru + Основной + + + + + + + + + + + + + + + + diff --git a/tests/skills/cases/skd-decompile/snapshots/minimal-query/decompiled.json b/tests/skills/cases/skd-decompile/snapshots/minimal-query/decompiled.json new file mode 100644 index 00000000..9206cba7 --- /dev/null +++ b/tests/skills/cases/skd-decompile/snapshots/minimal-query/decompiled.json @@ -0,0 +1,11 @@ +{ + "dataSets": [ + { + "name": "НаборДанных1", + "query": "ВЫБРАТЬ Номенклатура.Наименование КАК Наименование ИЗ Справочник.Номенклатура КАК Номенклатура", + "fields": [ + "Наименование" + ] + } + ] +} \ No newline at end of file diff --git a/tests/skills/cases/skd-decompile/snapshots/templates-with-style-merge-drilldown/Template.xml b/tests/skills/cases/skd-decompile/snapshots/templates-with-style-merge-drilldown/Template.xml new file mode 100644 index 00000000..051f4842 --- /dev/null +++ b/tests/skills/cases/skd-decompile/snapshots/templates-with-style-merge-drilldown/Template.xml @@ -0,0 +1,1165 @@ + + + + ИсточникДанных1 + Local + + + Тест + + Имя + Имя + + xs:string + + 0 + Variable + + + + + Сумма + Сумма + + xs:decimal + + 15 + 2 + Any + + + + ИсточникДанных1 + ВЫБРАТЬ * ИЗ Справочник.Номенклатура + + + + + Основной + + + ru + Основной + + + + + + + + + + + + + + + + diff --git a/tests/skills/cases/skd-decompile/snapshots/templates-with-style-merge-drilldown/decompiled.json b/tests/skills/cases/skd-decompile/snapshots/templates-with-style-merge-drilldown/decompiled.json new file mode 100644 index 00000000..3af36759 --- /dev/null +++ b/tests/skills/cases/skd-decompile/snapshots/templates-with-style-merge-drilldown/decompiled.json @@ -0,0 +1,81 @@ +{ + "dataSets": [ + { + "name": "Тест", + "query": "ВЫБРАТЬ * ИЗ Справочник.Номенклатура", + "fields": [ + "Имя: string", + "Сумма: decimal(15,2)" + ] + } + ], + "templates": [ + { + "name": "Шапка", + "style": "header", + "widths": [ + "20", + "30", + "25", + "25" + ], + "rows": [ + [ + "Имя", + "Сумма", + "Поступление", + ">" + ], + [ + "|", + "|", + "из произв.", + "со сч.40" + ], + [ + "К1", + "К2", + "К3", + "К4" + ] + ] + }, + { + "name": "Данные", + "style": "data", + "widths": [ + "20", + "30", + "25", + "25" + ], + "rows": [ + [ + "{Имя}", + "{Сумма}", + "{Поступление}", + "{СчетПрочее}" + ] + ], + "parameters": [ + { + "name": "Имя", + "expression": "Имя" + }, + { + "name": "Сумма", + "expression": "Сумма" + }, + { + "name": "Поступление", + "expression": "СуммаПоступления", + "drilldown": "СуммаПоступления" + }, + { + "name": "СчетПрочее", + "expression": "СчетПрочее" + } + ] + } + ] +} \ No newline at end of file diff --git a/tests/skills/cases/skd-decompile/snapshots/variant-full/Template.xml b/tests/skills/cases/skd-decompile/snapshots/variant-full/Template.xml new file mode 100644 index 00000000..ae38fd13 --- /dev/null +++ b/tests/skills/cases/skd-decompile/snapshots/variant-full/Template.xml @@ -0,0 +1,414 @@ + + + + ИсточникДанных1 + Local + + + Тест + + Организация + Организация + + true + + + d5p1:CatalogRef.Организации + + + + Номенклатура + Номенклатура + + true + + + d5p1:CatalogRef.Номенклатура + + + + Сумма + Сумма + + xs:decimal + + 15 + 2 + Any + + + + + Количество + Количество + + xs:decimal + + 15 + 3 + Any + + + + + Статус + Статус + + xs:string + + 0 + Variable + + + + ИсточникДанных1 + ВЫБРАТЬ * ИЗ Справочник.Номенклатура + + + Период + + v8:StandardPeriod + + + LastMonth + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + true + Always + + + НачалоПериода + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Начало периода</v8:content> + </v8:item> + + + xs:dateTime + + Date + + + 0001-01-01T00:00:00 + true + &Период.ДатаНачала + + + КонецПериода + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Конец периода</v8:content> + </v8:item> + + + xs:dateTime + + Date + + + 0001-01-01T00:00:00 + true + &Период.ДатаОкончания + + + Активные + + xs:boolean + + true + + + + ДанныеОтчета + Header + + + + Основной + + + ru + Основной вариант + + + + + + Организация + + + + + ru + Объёмы + + + + Сумма + + + Количество + + Auto + + + + + false + Организация + Equal + UUID-001 + + + OrGroup + + Статус + Equal + Активен + + + Сумма + Greater + 1000 + + + + + + Сумма + Desc + + + + + + + + Сумма + Greater + 10000 + + + + + ЦветТекста + style:НегативныйТекстЦвет + + + Большие суммы + Normal + UUID-002 + + + + + Заголовок + + + ru + Сводка по организациям + + + + + + + Период + + LastMonth + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + UUID-003 + + + Активные + true + UUID-004 + + + + + + Организация + Items + None + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + + + + + + + + + + Номенклатура + Items + None + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/skills/cases/skd-decompile/snapshots/variant-full/decompiled.json b/tests/skills/cases/skd-decompile/snapshots/variant-full/decompiled.json new file mode 100644 index 00000000..3481de64 --- /dev/null +++ b/tests/skills/cases/skd-decompile/snapshots/variant-full/decompiled.json @@ -0,0 +1,87 @@ +{ + "dataSets": [ + { + "name": "Тест", + "query": "ВЫБРАТЬ * ИЗ Справочник.Номенклатура", + "fields": [ + "Организация: CatalogRef.Организации @dimension", + "Номенклатура: CatalogRef.Номенклатура @dimension", + "Сумма: decimal(15,2)", + "Количество: decimal(15,3)", + "Статус: string" + ] + } + ], + "parameters": [ + "Период: StandardPeriod = LastMonth @autoDates", + "Активные: boolean = true" + ], + "templates": [ + { + "name": "Шапка", + "style": "header", + "rows": [ + [ + "Орг", + "Сум" + ] + ] + } + ], + "groupTemplates": [ + { + "groupName": "ДанныеОтчета", + "templateType": "GroupHeader", + "template": "Шапка" + } + ], + "settingsVariants": [ + { + "name": "Основной", + "title": "Основной вариант", + "settings": { + "selection": [ + "Организация", + { + "folder": "Объёмы", + "items": [ + "Сумма", + "Количество" + ] + } + ], + "filter": [ + "Организация = _ @off @user", + { + "group": "Or", + "items": [ + "Статус = Активен", + "Сумма > 1000" + ] + } + ], + "order": [ + "Сумма desc" + ], + "conditionalAppearance": [ + { + "filter": [ + "Сумма > 10000" + ], + "appearance": { + "ЦветТекста": "style:НегативныйТекстЦвет" + }, + "presentation": "Большие суммы", + "viewMode": "Normal", + "userSettingID": "auto" + } + ], + "outputParameters": { + "Заголовок": "Сводка по организациям" + }, + "dataParameters": "auto", + "structure": "Организация > Номенклатура > details" + } + } + ] +} \ No newline at end of file diff --git a/tests/skills/cases/skd-decompile/templates-with-style-merge-drilldown.json b/tests/skills/cases/skd-decompile/templates-with-style-merge-drilldown.json new file mode 100644 index 00000000..1ed85de9 --- /dev/null +++ b/tests/skills/cases/skd-decompile/templates-with-style-merge-drilldown.json @@ -0,0 +1,43 @@ +{ + "name": "templates с built-in стилями (header/data), merge >/|, drilldown свёрткой", + "preRun": [ + { + "script": "skd-compile/scripts/skd-compile", + "input": { + "dataSets": [{ + "name": "Тест", + "query": "ВЫБРАТЬ * ИЗ Справочник.Номенклатура", + "fields": ["Имя: string", "Сумма: decimal(15,2)"] + }], + "templates": [ + { + "name": "Шапка", + "style": "header", + "widths": [20, 30, 25, 25], + "rows": [ + ["Имя", "Сумма", "Поступление", ">"], + ["|", "|", "из произв.", "со сч.40"], + ["К1", "К2", "К3", "К4"] + ] + }, + { + "name": "Данные", + "style": "data", + "widths": [20, 30, 25, 25], + "rows": [["{Имя}", "{Сумма}", "{Поступление}", "{СчетПрочее}"]], + "parameters": [ + { "name": "Имя", "expression": "Имя" }, + { "name": "Сумма", "expression": "Сумма" }, + { "name": "Поступление", "expression": "СуммаПоступления", "drilldown": "СуммаПоступления" }, + { "name": "СчетПрочее", "expression": "СчетПрочее" } + ] + } + ] + }, + "args": { "-DefinitionFile": "{inputFile}", "-OutputPath": "Template.xml" }, + "cwd": "{workDir}" + } + ], + "params": { "templatePath": "Template.xml" }, + "outputPath": "decompiled.json" +} diff --git a/tests/skills/cases/skd-decompile/variant-full.json b/tests/skills/cases/skd-decompile/variant-full.json new file mode 100644 index 00000000..b65d4f3c --- /dev/null +++ b/tests/skills/cases/skd-decompile/variant-full.json @@ -0,0 +1,60 @@ +{ + "name": "settingsVariant — selection с folder, filter Or, conditionalAppearance, structure shorthand, dataParameters auto", + "preRun": [ + { + "script": "skd-compile/scripts/skd-compile", + "input": { + "dataSets": [{ + "name": "Тест", + "query": "ВЫБРАТЬ * ИЗ Справочник.Номенклатура", + "fields": [ + "Организация: CatalogRef.Организации @dimension", + "Номенклатура: CatalogRef.Номенклатура @dimension", + "Сумма: decimal(15,2)", + "Количество: decimal(15,3)", + "Статус: string" + ] + }], + "parameters": [ + "Период: StandardPeriod = LastMonth @autoDates", + "Активные: boolean = true" + ], + "templates": [{"name": "Шапка", "style": "header", "rows": [["Орг", "Сум"]]}], + "groupTemplates": [{"groupName": "ДанныеОтчета", "templateType": "GroupHeader", "template": "Шапка"}], + "settingsVariants": [{ + "name": "Основной", + "title": "Основной вариант", + "settings": { + "selection": [ + "Организация", + { "folder": "Объёмы", "items": ["Сумма", "Количество"] }, + "Auto" + ], + "filter": [ + "Организация = _ @off @user", + { "group": "Or", "items": [ + { "field": "Статус", "op": "=", "value": "Активен" }, + { "field": "Сумма", "op": ">", "value": 1000 } + ]} + ], + "order": ["Сумма desc", "Auto"], + "conditionalAppearance": [{ + "filter": ["Сумма > 10000"], + "appearance": { "ЦветТекста": "style:НегативныйТекстЦвет" }, + "presentation": "Большие суммы", + "viewMode": "Normal", + "userSettingID": "auto" + }], + "outputParameters": { "Заголовок": "Сводка по организациям" }, + "dataParameters": "auto", + "structure": "Организация > Номенклатура > details" + } + }] + }, + "args": { "-DefinitionFile": "{inputFile}", "-OutputPath": "Template.xml" }, + "cwd": "{workDir}" + } + ], + "params": { "templatePath": "Template.xml" }, + "outputPath": "decompiled.json" +}