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
+
+
+ ru
+ Наценка, %
+
+
+
+ xs:decimal
+
+ 10
+ 2
+ Any
+
+
+
+
+ Служебное
+ ""
+
+ xs:string
+
+ 0
+ Variable
+
+
+
+ true
+ true
+ true
+ true
+
+
+
+ Цена
+ Сумма(Цена)
+
+
+ Маржа
+ Сумма(Цена - Закупка)
+
+
+ Период
+
+
+ ru
+ Отчетный период
+
+
+
+ v8:StandardPeriod
+
+
+ LastMonth
+ 0001-01-01T00:00:00
+ 0001-01-01T00:00:00
+
+ true
+
+
+
+ НачалоПериода
+
+
+ ru
+ Начало периода
+
+
+
+ xs:dateTime
+
+ Date
+
+
+ 0001-01-01T00:00:00
+ true
+ &Период.ДатаНачала
+
+
+ КонецПериода
+
+
+ ru
+ Конец периода
+
+
+
+ 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
+
+
+
+
+ СПояснением
+ СПояснением
+
+
+ ru
+ Поле с пояснением
+
+
+
+ xs:decimal
+
+ 15
+ 2
+ Any
+
+
+
+
+ ГоризонтальноеПоложение
+ Right
+
+
+ МинимальнаяШирина
+ 80
+
+
+
+
+ Многоязычное
+ Многоязычное
+
+
+ ru
+ Русский
+
+
+ en
+ English
+
+
+
+ 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
+ Имя
+
+
+
+
+
+ ЦветФона
+ d8p1:ReportHeaderBackColor
+
+
+ ЦветГраницы
+ d8p1:ReportLineColor
+
+
+ СтильГраницы
+
+ None
+
+
+ СтильГраницы.Слева
+
+ Solid
+
+
+
+ СтильГраницы.Сверху
+
+ Solid
+
+
+
+ СтильГраницы.Справа
+
+ Solid
+
+
+
+ СтильГраницы.Снизу
+
+ Solid
+
+
+
+
+ Шрифт
+
+
+
+ ГоризонтальноеПоложение
+ Center
+
+
+ Размещение
+ Wrap
+
+
+ МинимальнаяШирина
+ 20
+
+
+ МаксимальнаяШирина
+ 20
+
+
+
+
+
+
+
+ ru
+ Сумма
+
+
+
+
+
+ ЦветФона
+ d8p1:ReportHeaderBackColor
+
+
+ ЦветГраницы
+ d8p1:ReportLineColor
+
+
+ СтильГраницы
+
+ None
+
+
+ СтильГраницы.Слева
+
+ Solid
+
+
+
+ СтильГраницы.Сверху
+
+ Solid
+
+
+
+ СтильГраницы.Справа
+
+ Solid
+
+
+
+ СтильГраницы.Снизу
+
+ Solid
+
+
+
+
+ Шрифт
+
+
+
+ ГоризонтальноеПоложение
+ Center
+
+
+ Размещение
+ Wrap
+
+
+ МинимальнаяШирина
+ 30
+
+
+ МаксимальнаяШирина
+ 30
+
+
+
+
+
+
+
+ ru
+ Поступление
+
+
+
+
+
+ ЦветФона
+ d8p1:ReportHeaderBackColor
+
+
+ ЦветГраницы
+ d8p1:ReportLineColor
+
+
+ СтильГраницы
+
+ None
+
+
+ СтильГраницы.Слева
+
+ Solid
+
+
+
+ СтильГраницы.Сверху
+
+ Solid
+
+
+
+ СтильГраницы.Справа
+
+ Solid
+
+
+
+ СтильГраницы.Снизу
+
+ Solid
+
+
+
+
+ Шрифт
+
+
+
+ ГоризонтальноеПоложение
+ Center
+
+
+ Размещение
+ Wrap
+
+
+ МинимальнаяШирина
+ 25
+
+
+ МаксимальнаяШирина
+ 25
+
+
+
+
+
+
+ ЦветФона
+ d8p1:ReportHeaderBackColor
+
+
+ ЦветГраницы
+ d8p1:ReportLineColor
+
+
+ СтильГраницы
+
+ None
+
+
+ СтильГраницы.Слева
+
+ Solid
+
+
+
+ СтильГраницы.Сверху
+
+ Solid
+
+
+
+ СтильГраницы.Справа
+
+ Solid
+
+
+
+ СтильГраницы.Снизу
+
+ Solid
+
+
+
+
+ Шрифт
+
+
+
+ ГоризонтальноеПоложение
+ Center
+
+
+ Размещение
+ Wrap
+
+
+ МинимальнаяШирина
+ 25
+
+
+ МаксимальнаяШирина
+ 25
+
+
+ ОбъединятьПоГоризонтали
+ true
+
+
+
+
+
+
+
+
+ ЦветФона
+ d8p1:ReportHeaderBackColor
+
+
+ ЦветГраницы
+ d8p1:ReportLineColor
+
+
+ СтильГраницы
+
+ None
+
+
+ СтильГраницы.Слева
+
+ Solid
+
+
+
+ СтильГраницы.Сверху
+
+ Solid
+
+
+
+ СтильГраницы.Справа
+
+ Solid
+
+
+
+ СтильГраницы.Снизу
+
+ Solid
+
+
+
+
+ Шрифт
+
+
+
+ ГоризонтальноеПоложение
+ Center
+
+
+ Размещение
+ Wrap
+
+
+ МинимальнаяШирина
+ 20
+
+
+ МаксимальнаяШирина
+ 20
+
+
+ ОбъединятьПоВертикали
+ true
+
+
+
+
+
+
+ ЦветФона
+ d8p1:ReportHeaderBackColor
+
+
+ ЦветГраницы
+ d8p1:ReportLineColor
+
+
+ СтильГраницы
+
+ None
+
+
+ СтильГраницы.Слева
+
+ Solid
+
+
+
+ СтильГраницы.Сверху
+
+ Solid
+
+
+
+ СтильГраницы.Справа
+
+ Solid
+
+
+
+ СтильГраницы.Снизу
+
+ Solid
+
+
+
+
+ Шрифт
+
+
+
+ ГоризонтальноеПоложение
+ Center
+
+
+ Размещение
+ Wrap
+
+
+ МинимальнаяШирина
+ 30
+
+
+ МаксимальнаяШирина
+ 30
+
+
+ ОбъединятьПоВертикали
+ true
+
+
+
+
+
+
+
+ ru
+ из произв.
+
+
+
+
+
+ ЦветФона
+ d8p1:ReportHeaderBackColor
+
+
+ ЦветГраницы
+ d8p1:ReportLineColor
+
+
+ СтильГраницы
+
+ None
+
+
+ СтильГраницы.Слева
+
+ Solid
+
+
+
+ СтильГраницы.Сверху
+
+ Solid
+
+
+
+ СтильГраницы.Справа
+
+ Solid
+
+
+
+ СтильГраницы.Снизу
+
+ Solid
+
+
+
+
+ Шрифт
+
+
+
+ ГоризонтальноеПоложение
+ Center
+
+
+ Размещение
+ Wrap
+
+
+ МинимальнаяШирина
+ 25
+
+
+ МаксимальнаяШирина
+ 25
+
+
+
+
+
+
+
+ ru
+ со сч.40
+
+
+
+
+
+ ЦветФона
+ d8p1:ReportHeaderBackColor
+
+
+ ЦветГраницы
+ d8p1:ReportLineColor
+
+
+ СтильГраницы
+
+ None
+
+
+ СтильГраницы.Слева
+
+ Solid
+
+
+
+ СтильГраницы.Сверху
+
+ Solid
+
+
+
+ СтильГраницы.Справа
+
+ Solid
+
+
+
+ СтильГраницы.Снизу
+
+ Solid
+
+
+
+
+ Шрифт
+
+
+
+ ГоризонтальноеПоложение
+ Center
+
+
+ Размещение
+ Wrap
+
+
+ МинимальнаяШирина
+ 25
+
+
+ МаксимальнаяШирина
+ 25
+
+
+
+
+
+
+
+
+
+ ru
+ К1
+
+
+
+
+
+ ЦветФона
+ d8p1:ReportHeaderBackColor
+
+
+ ЦветГраницы
+ d8p1:ReportLineColor
+
+
+ СтильГраницы
+
+ None
+
+
+ СтильГраницы.Слева
+
+ Solid
+
+
+
+ СтильГраницы.Сверху
+
+ Solid
+
+
+
+ СтильГраницы.Справа
+
+ Solid
+
+
+
+ СтильГраницы.Снизу
+
+ Solid
+
+
+
+
+ Шрифт
+
+
+
+ ГоризонтальноеПоложение
+ Center
+
+
+ Размещение
+ Wrap
+
+
+ МинимальнаяШирина
+ 20
+
+
+ МаксимальнаяШирина
+ 20
+
+
+
+
+
+
+
+ ru
+ К2
+
+
+
+
+
+ ЦветФона
+ d8p1:ReportHeaderBackColor
+
+
+ ЦветГраницы
+ d8p1:ReportLineColor
+
+
+ СтильГраницы
+
+ None
+
+
+ СтильГраницы.Слева
+
+ Solid
+
+
+
+ СтильГраницы.Сверху
+
+ Solid
+
+
+
+ СтильГраницы.Справа
+
+ Solid
+
+
+
+ СтильГраницы.Снизу
+
+ Solid
+
+
+
+
+ Шрифт
+
+
+
+ ГоризонтальноеПоложение
+ Center
+
+
+ Размещение
+ Wrap
+
+
+ МинимальнаяШирина
+ 30
+
+
+ МаксимальнаяШирина
+ 30
+
+
+
+
+
+
+
+ ru
+ К3
+
+
+
+
+
+ ЦветФона
+ d8p1:ReportHeaderBackColor
+
+
+ ЦветГраницы
+ d8p1:ReportLineColor
+
+
+ СтильГраницы
+
+ None
+
+
+ СтильГраницы.Слева
+
+ Solid
+
+
+
+ СтильГраницы.Сверху
+
+ Solid
+
+
+
+ СтильГраницы.Справа
+
+ Solid
+
+
+
+ СтильГраницы.Снизу
+
+ Solid
+
+
+
+
+ Шрифт
+
+
+
+ ГоризонтальноеПоложение
+ Center
+
+
+ Размещение
+ Wrap
+
+
+ МинимальнаяШирина
+ 25
+
+
+ МаксимальнаяШирина
+ 25
+
+
+
+
+
+
+
+ ru
+ К4
+
+
+
+
+
+ ЦветФона
+ d8p1:ReportHeaderBackColor
+
+
+ ЦветГраницы
+ d8p1:ReportLineColor
+
+
+ СтильГраницы
+
+ None
+
+
+ СтильГраницы.Слева
+
+ Solid
+
+
+
+ СтильГраницы.Сверху
+
+ Solid
+
+
+
+ СтильГраницы.Справа
+
+ Solid
+
+
+
+ СтильГраницы.Снизу
+
+ Solid
+
+
+
+
+ Шрифт
+
+
+
+ ГоризонтальноеПоложение
+ Center
+
+
+ Размещение
+ Wrap
+
+
+ МинимальнаяШирина
+ 25
+
+
+ МаксимальнаяШирина
+ 25
+
+
+
+
+
+
+
+ Данные
+
+
+
+
+ Имя
+
+
+
+ ЦветФона
+ d8p1:ReportGroup1BackColor
+
+
+ ЦветГраницы
+ d8p1:ReportLineColor
+
+
+ СтильГраницы
+
+ None
+
+
+ СтильГраницы.Слева
+
+ Solid
+
+
+
+ СтильГраницы.Сверху
+
+ Solid
+
+
+
+ СтильГраницы.Справа
+
+ Solid
+
+
+
+ СтильГраницы.Снизу
+
+ Solid
+
+
+
+
+ Шрифт
+
+
+
+ МинимальнаяШирина
+ 20
+
+
+ МаксимальнаяШирина
+ 20
+
+
+
+
+
+ Сумма
+
+
+
+ ЦветФона
+ d8p1:ReportGroup1BackColor
+
+
+ ЦветГраницы
+ d8p1:ReportLineColor
+
+
+ СтильГраницы
+
+ None
+
+
+ СтильГраницы.Слева
+
+ Solid
+
+
+
+ СтильГраницы.Сверху
+
+ Solid
+
+
+
+ СтильГраницы.Справа
+
+ Solid
+
+
+
+ СтильГраницы.Снизу
+
+ Solid
+
+
+
+
+ Шрифт
+
+
+
+ МинимальнаяШирина
+ 30
+
+
+ МаксимальнаяШирина
+ 30
+
+
+
+
+
+ Поступление
+
+
+
+ ЦветФона
+ d8p1:ReportGroup1BackColor
+
+
+ ЦветГраницы
+ d8p1:ReportLineColor
+
+
+ СтильГраницы
+
+ None
+
+
+ СтильГраницы.Слева
+
+ Solid
+
+
+
+ СтильГраницы.Сверху
+
+ Solid
+
+
+
+ СтильГраницы.Справа
+
+ Solid
+
+
+
+ СтильГраницы.Снизу
+
+ Solid
+
+
+
+
+ Шрифт
+
+
+
+ МинимальнаяШирина
+ 25
+
+
+ МаксимальнаяШирина
+ 25
+
+
+ Расшифровка
+ Расшифровка_СуммаПоступления
+
+
+
+
+
+ СчетПрочее
+
+
+
+ ЦветФона
+ d8p1:ReportGroup1BackColor
+
+
+ ЦветГраницы
+ d8p1:ReportLineColor
+
+
+ СтильГраницы
+
+ None
+
+
+ СтильГраницы.Слева
+
+ Solid
+
+
+
+ СтильГраницы.Сверху
+
+ Solid
+
+
+
+ СтильГраницы.Справа
+
+ Solid
+
+
+
+ СтильГраницы.Снизу
+
+ Solid
+
+
+
+
+ Шрифт
+
+
+
+ МинимальнаяШирина
+ 25
+
+
+ МаксимальнаяШирина
+ 25
+
+
+
+
+
+
+ Имя
+ Имя
+
+
+ Сумма
+ Сумма
+
+
+ Поступление
+ СуммаПоступления
+
+
+ Расшифровка_СуммаПоступления
+
+ ИмяРесурса
+ "СуммаПоступления"
+
+ DrillDown
+
+
+ СчетПрочее
+ СчетПрочее
+
+
+
+ Основной
+
+
+ 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
+
+
+
+ НачалоПериода
+
+
+ ru
+ Начало периода
+
+
+
+ xs:dateTime
+
+ Date
+
+
+ 0001-01-01T00:00:00
+ true
+ &Период.ДатаНачала
+
+
+ КонецПериода
+
+
+ ru
+ Конец периода
+
+
+
+ xs:dateTime
+
+ Date
+
+
+ 0001-01-01T00:00:00
+ true
+ &Период.ДатаОкончания
+
+
+ Активные
+
+ xs:boolean
+
+ true
+
+
+ Шапка
+
+
+
+
+
+
+ ru
+ Орг
+
+
+
+
+
+ ЦветФона
+ d8p1:ReportHeaderBackColor
+
+
+ ЦветГраницы
+ d8p1:ReportLineColor
+
+
+ СтильГраницы
+
+ None
+
+
+ СтильГраницы.Слева
+
+ Solid
+
+
+
+ СтильГраницы.Сверху
+
+ Solid
+
+
+
+ СтильГраницы.Справа
+
+ Solid
+
+
+
+ СтильГраницы.Снизу
+
+ Solid
+
+
+
+
+ Шрифт
+
+
+
+ ГоризонтальноеПоложение
+ Center
+
+
+ Размещение
+ Wrap
+
+
+
+
+
+
+
+ ru
+ Сум
+
+
+
+
+
+ ЦветФона
+ d8p1:ReportHeaderBackColor
+
+
+ ЦветГраницы
+ d8p1:ReportLineColor
+
+
+ СтильГраницы
+
+ None
+
+
+ СтильГраницы.Слева
+
+ Solid
+
+
+
+ СтильГраницы.Сверху
+
+ Solid
+
+
+
+ СтильГраницы.Справа
+
+ Solid
+
+
+
+ СтильГраницы.Снизу
+
+ Solid
+
+
+
+
+ Шрифт
+
+
+
+ ГоризонтальноеПоложение
+ Center
+
+
+ Размещение
+ Wrap
+
+
+
+
+
+
+
+ ДанныеОтчета
+ 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"
+}