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:
Nick Shirokov
2026-05-21 20:50:34 +03:00
parent e0ee927156
commit 55b80fdc08
18 changed files with 604 additions and 648 deletions
@@ -1,40 +1,38 @@
{
"dataSets": [
{
"name": "Тест",
"query": "ВЫБРАТЬ * ИЗ Справочник.Сотрудники",
"fields": [
{
"field": "ДатаДокумента",
"type": "date",
"appearance": {
"Формат": {
"ru": "ДЛФ=D",
"en": "DLF=D"
}
}
}
]
}
],
"settingsVariants": [
{
"name": "Основной",
"settings": {
"conditionalAppearance": [
{
"selection": [
"ДатаДокумента"
],
"appearance": {
"Формат": {
"ru": "ДЛФ=DT",
"en": "DLF=DT"
}
}
}
]
}
}
]
"dataSets": [
{
"name": "Тест",
"query": "ВЫБРАТЬ * ИЗ Справочник.Сотрудники",
"fields": [
{
"field": "ДатаДокумента",
"type": "date",
"appearance": {
"Формат": {
"ru": "ДЛФ=D",
"en": "DLF=D"
}
}
}
]
}
],
"settingsVariants": [
{
"name": "Основной",
"settings": {
"conditionalAppearance": [
{
"selection": ["ДатаДокумента"],
"appearance": {
"Формат": {
"ru": "ДЛФ=DT",
"en": "DLF=DT"
}
}
}
]
}
}
]
}
@@ -1,42 +1,32 @@
{
"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": "руб."
}
]
}
]
"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": "руб."
}
]
}
]
}
@@ -1,26 +1,26 @@
{
"dataSets": [
{
"name": "Тест",
"query": "ВЫБРАТЬ * ИЗ Справочник.Сотрудники",
"fields": [
"Период: date",
{
"field": "СальдоНаНачалоПериода",
"folder": true,
"title": "Сальдо на начало периода"
},
"СальдоНаНачалоПериода.Дт: decimal(15,2)",
"СальдоНаНачалоПериода.Кт: decimal(15,2)"
]
}
],
"settingsVariants": [
{
"name": "Основной",
"settings": {
"structure": "Auto > Период"
}
}
]
"dataSets": [
{
"name": "Тест",
"query": "ВЫБРАТЬ * ИЗ Справочник.Сотрудники",
"fields": [
"Период: date",
{
"field": "СальдоНаНачалоПериода",
"folder": true,
"title": "Сальдо на начало периода"
},
"СальдоНаНачалоПериода.Дт: decimal(15,2)",
"СальдоНаНачалоПериода.Кт: decimal(15,2)"
]
}
],
"settingsVariants": [
{
"name": "Основной",
"settings": {
"structure": "Auto > Период"
}
}
]
}
@@ -1,13 +1,9 @@
{
"dataSets": [
{
"name": "ПродажиПоПериодам",
"query": "@ПродажиПоПериодам.sql",
"fields": [
"Номенклатура: CatalogRef.Номенклатура @dimension",
"Количество: decimal(15,3)",
"Сумма: decimal(15,2)"
]
}
]
"dataSets": [
{
"name": "ПродажиПоПериодам",
"query": "@ПродажиПоПериодам.sql",
"fields": ["Номенклатура: CatalogRef.Номенклатура @dimension", "Количество: decimal(15,3)", "Сумма: decimal(15,2)"]
}
]
}
@@ -1,38 +1,29 @@
{
"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)"
]
}
]
}
]
"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)"]
}
]
}
]
}
@@ -1,66 +1,61 @@
{
"dataSets": [
{
"name": "Тест",
"query": "ВЫБРАТЬ * ИЗ Справочник.Сотрудники",
"fields": [
{
"field": "СегментНоменклатуры",
"type": "CatalogRef.СегментыНоменклатуры",
"inputParameters": [
{
"parameter": "ПараметрыВыбора",
"choiceParameters": [
{
"name": "Отбор.СпособФормирования",
"values": [
"Перечисление.СпособыФормированияСегментов.ФормироватьВручную",
"Перечисление.СпособыФормированияСегментов.ПериодическиОбновлять"
]
}
]
}
]
},
{
"field": "Сотрудник",
"type": "CatalogRef.Сотрудники",
"inputParameters": [
{
"parameter": "СвязиПараметровВыбора",
"choiceParameterLinks": [
{
"name": "Отбор.ТекущаяОрганизация",
"value": "Организация",
"mode": "Clear"
},
{
"name": "Отбор.ТекущееПодразделение",
"value": "Подразделение",
"mode": "Clear"
}
]
}
]
},
{
"field": "ПростоЕА",
"type": "CatalogRef.Сотрудники",
"inputParameters": [
{
"parameter": "ПараметрыВыбора",
"choiceParameters": [
]
},
{
"parameter": "БыстрыйВыбор",
"use": false,
"value": true
}
]
}
]
}
]
"dataSets": [
{
"name": "Тест",
"query": "ВЫБРАТЬ * ИЗ Справочник.Сотрудники",
"fields": [
{
"field": "СегментНоменклатуры",
"type": "CatalogRef.СегментыНоменклатуры",
"inputParameters": [
{
"parameter": "ПараметрыВыбора",
"choiceParameters": [
{
"name": "Отбор.СпособФормирования",
"values": ["Перечисление.СпособыФормированияСегментов.ФормироватьВручную", "Перечисление.СпособыФормированияСегментов.ПериодическиОбновлять"]
}
]
}
]
},
{
"field": "Сотрудник",
"type": "CatalogRef.Сотрудники",
"inputParameters": [
{
"parameter": "СвязиПараметровВыбора",
"choiceParameterLinks": [
{
"name": "Отбор.ТекущаяОрганизация",
"value": "Организация",
"mode": "Clear"
},
{
"name": "Отбор.ТекущееПодразделение",
"value": "Подразделение",
"mode": "Clear"
}
]
}
]
},
{
"field": "ПростоЕА",
"type": "CatalogRef.Сотрудники",
"inputParameters": [
{
"parameter": "ПараметрыВыбора",
"choiceParameters": []
},
{
"parameter": "БыстрыйВыбор",
"use": false,
"value": true
}
]
}
]
}
]
}
@@ -1,19 +1,19 @@
{
"dataSets": [
{
"name": "Тест",
"query": "ВЫБРАТЬ * ИЗ Справочник.ВидыРасчета",
"fields": [
{
"field": "ВидРасчета",
"type": "CatalogRef.ВидыРасчета",
"orderExpression": {
"expression": "ЕстьNULL(ВидРасчета.Порядок, 10000)",
"orderType": "Asc",
"autoOrder": false
}
}
]
}
]
"dataSets": [
{
"name": "Тест",
"query": "ВЫБРАТЬ * ИЗ Справочник.ВидыРасчета",
"fields": [
{
"field": "ВидРасчета",
"type": "CatalogRef.ВидыРасчета",
"orderExpression": {
"expression": "ЕстьNULL(ВидРасчета.Порядок, 10000)",
"orderType": "Asc",
"autoOrder": false
}
}
]
}
]
}
@@ -1,14 +1,9 @@
{
"dataSets": [
{
"name": "Тест",
"query": "ВЫБРАТЬ * ИЗ РегистрНакопления.Остатки",
"fields": [
"Период: date @period",
"Контрагент: CatalogRef.Контрагенты @dimension @required",
"СуммаНач: decimal(15,2) @balance balanceGroupName=Сумма balanceType=OpeningBalance",
"СуммаКон: decimal(15,2) @balance balanceGroupName=Сумма balanceType=ClosingBalance"
]
}
]
"dataSets": [
{
"name": "Тест",
"query": "ВЫБРАТЬ * ИЗ РегистрНакопления.Остатки",
"fields": ["Период: date @period", "Контрагент: CatalogRef.Контрагенты @dimension @required", "СуммаНач: decimal(15,2) @balance balanceGroupName=Сумма balanceType=OpeningBalance", "СуммаКон: decimal(15,2) @balance balanceGroupName=Сумма balanceType=ClosingBalance"]
}
]
}
@@ -1,46 +1,43 @@
{
"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": "Представление(СВыражениемПредставления)"
}
]
}
]
"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": "Представление(СВыражениемПредставления)"
}
]
}
]
}
@@ -1,11 +1,9 @@
{
"dataSets": [
{
"name": "НаборДанных1",
"query": "ВЫБРАТЬ Номенклатура.Наименование КАК Наименование ИЗ Справочник.Номенклатура КАК Номенклатура",
"fields": [
"Наименование"
]
}
]
"dataSets": [
{
"name": "НаборДанных1",
"query": "ВЫБРАТЬ Номенклатура.Наименование КАК Наименование ИЗ Справочник.Номенклатура КАК Номенклатура",
"fields": ["Наименование"]
}
]
}
@@ -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": ["ВидРасчета", "Сумма"]
}
}
]
}
]
}
}
]
}
@@ -1,22 +1,18 @@
{
"dataSets": [
{
"name": "Тест",
"query": "ВЫБРАТЬ * ИЗ Справочник.Сотрудники",
"fields": [
"Поле: string"
]
}
],
"templates": [
{
"name": "Заголовок",
"style": "myHeader",
"rows": [
[
"A"
]
]
}
]
"dataSets": [
{
"name": "Тест",
"query": "ВЫБРАТЬ * ИЗ Справочник.Сотрудники",
"fields": ["Поле: string"]
}
],
"templates": [
{
"name": "Заголовок",
"style": "myHeader",
"rows": [
["A"]
]
}
]
}
@@ -1,15 +1,15 @@
{
"myHeader": {
"font": "Calibri",
"fontSize": 11,
"bold": false,
"italic": false,
"hAlign": "Center",
"vAlign": "Center",
"wrap": false,
"bgColor": "style:ReportHeaderBackColor",
"textColor": null,
"borderColor": "style:ReportLineColor",
"borders": true
}
"myHeader": {
"font": "Calibri",
"fontSize": 11,
"bold": false,
"italic": false,
"hAlign": "Center",
"vAlign": "Center",
"wrap": false,
"bgColor": "style:ReportHeaderBackColor",
"textColor": null,
"borderColor": "style:ReportLineColor",
"borders": true
}
}
@@ -1,27 +1,25 @@
{
"dataSets": [
{
"name": "Тест",
"query": "ВЫБРАТЬ * ИЗ Справочник.Сотрудники",
"fields": [
"Поле: string"
]
}
],
"templates": [
{
"name": "СмешанныйМакет",
"style": "data",
"rows": [
[
"A",
{
"value": "B",
"style": "header"
},
"C"
]
]
}
]
"dataSets": [
{
"name": "Тест",
"query": "ВЫБРАТЬ * ИЗ Справочник.Сотрудники",
"fields": ["Поле: string"]
}
],
"templates": [
{
"name": "СмешанныйМакет",
"style": "data",
"rows": [
[
"A",
{
"value": "B",
"style": "header"
},
"C"
]
]
}
]
}
@@ -1,28 +1,19 @@
{
"dataSets": [
{
"name": "Тест",
"query": "ВЫБРАТЬ * ИЗ Справочник.Сотрудники",
"fields": [
"Поле1: string",
"Поле2: string"
]
}
],
"templates": [
{
"name": "БезСтиля",
"style": "none",
"widths": [
"7",
"7"
],
"rows": [
[
"A",
"B"
]
]
}
]
"dataSets": [
{
"name": "Тест",
"query": "ВЫБРАТЬ * ИЗ Справочник.Сотрудники",
"fields": ["Поле1: string", "Поле2: string"]
}
],
"templates": [
{
"name": "БезСтиля",
"style": "none",
"widths": ["7", "7"],
"rows": [
["A", "B"]
]
}
]
}
@@ -1,81 +1,48 @@
{
"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": "СчетПрочее"
}
]
}
]
"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": "СчетПрочее"
}
]
}
]
}
@@ -1,87 +1,65 @@
{
"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"
}
}
]
"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"
}
}
]
}