diff --git a/.claude/skills/skd-edit/scripts/skd-edit.ps1 b/.claude/skills/skd-edit/scripts/skd-edit.ps1 index f7430037..05dacc58 100644 --- a/.claude/skills/skd-edit/scripts/skd-edit.ps1 +++ b/.claude/skills/skd-edit/scripts/skd-edit.ps1 @@ -1893,8 +1893,10 @@ switch ($Operation) { if ($groupName) { # Find named StructureItemGroup $dcssetNs = "http://v8.1c.ru/8.1/data-composition-system/settings" + $xsiNs = "http://www.w3.org/2001/XMLSchema-instance" $nsMgr = New-Object System.Xml.XmlNamespaceManager($xmlDoc.NameTable) $nsMgr.AddNamespace("dcsset", $dcssetNs) + $nsMgr.AddNamespace("xsi", $xsiNs) $groupEl = $settings.SelectSingleNode(".//dcsset:item[@xsi:type='dcsset:StructureItemGroup'][dcsset:name='$groupName']", $nsMgr) if (-not $groupEl) { Write-Host "[WARN] StructureItemGroup `"$groupName`" not found — adding to variant level" diff --git a/tests/skills/cases/skd-compile/available-values-and-folders.json b/tests/skills/cases/skd-compile/available-values-and-folders.json new file mode 100644 index 00000000..9605231f --- /dev/null +++ b/tests/skills/cases/skd-compile/available-values-and-folders.json @@ -0,0 +1,48 @@ +{ + "name": "availableValues, denyIncompleteValues, Folder в selection", + "params": { "outputPath": "Template.xml" }, + "input": { + "dataSets": [{ + "name": "Основной", + "query": "ВЫБРАТЬ Т.Счет, Т.Остаток, Т.Поступление1, Т.Поступление2, Т.Выбытие1, Т.Выбытие2 ИЗ Регистр КАК Т", + "fields": ["Счет: string", "Остаток: decimal(15,2)", "Поступление1: decimal(15,2)", "Поступление2: decimal(15,2)", "Выбытие1: decimal(15,2)", "Выбытие2: decimal(15,2)"] + }], + "parameters": [{ + "name": "ПорядокОкругления", + "type": "EnumRef.Округления", + "value": "Перечисление.Округления.Окр1_00", + "use": "Always", + "denyIncompleteValues": true, + "availableValues": [ + {"value": "Перечисление.Округления.Окр1_00", "presentation": "руб. коп"}, + {"value": "Перечисление.Округления.Окр1", "presentation": "руб."}, + {"value": "Перечисление.Округления.Окр1000", "presentation": "тыс. руб"} + ] + }], + "settingsVariants": [{ + "name": "Основной", + "settings": { + "selection": [ + "Auto", + "Счет", + "Остаток", + {"folder": "Поступление", "items": ["Поступление1", "Поступление2"]}, + {"folder": "Выбытие", "items": ["Выбытие1", "Выбытие2"]} + ], + "structure": { + "type": "group", + "name": "ДанныеОтчета", + "groupBy": ["Счет"], + "selection": [ + "Auto", + {"folder": "Поступление", "items": ["Поступление1", "Поступление2"]} + ] + } + } + }] + }, + "validatePath": "Template.xml", + "expect": { + "files": ["Template.xml"] + } +} diff --git a/tests/skills/cases/skd-compile/snapshots/available-values-and-folders/Template.xml b/tests/skills/cases/skd-compile/snapshots/available-values-and-folders/Template.xml new file mode 100644 index 00000000..45bf05ca --- /dev/null +++ b/tests/skills/cases/skd-compile/snapshots/available-values-and-folders/Template.xml @@ -0,0 +1,208 @@ + + + + ИсточникДанных1 + Local + + + Основной + + Счет + Счет + + xs:string + + 0 + Variable + + + + + Остаток + Остаток + + xs:decimal + + 15 + 2 + Any + + + + + Поступление1 + Поступление1 + + xs:decimal + + 15 + 2 + Any + + + + + Поступление2 + Поступление2 + + xs:decimal + + 15 + 2 + Any + + + + + Выбытие1 + Выбытие1 + + xs:decimal + + 15 + 2 + Any + + + + + Выбытие2 + Выбытие2 + + xs:decimal + + 15 + 2 + Any + + + + ИсточникДанных1 + ВЫБРАТЬ Т.Счет, Т.Остаток, Т.Поступление1, Т.Поступление2, Т.Выбытие1, Т.Выбытие2 ИЗ Регистр КАК Т + + + ПорядокОкругления + + d5p1:EnumRef.Округления + + Перечисление.Округления.Окр1_00 + + Перечисление.Округления.Окр1_00 + + + ru + руб. коп + + + + + Перечисление.Округления.Окр1 + + + ru + руб. + + + + + Перечисление.Округления.Окр1000 + + + ru + тыс. руб + + + + true + Always + + + Основной + + + ru + Основной + + + + + + Счет + + + Остаток + + + + + ru + Поступление + + + + Поступление1 + + + Поступление2 + + Auto + + + + + ru + Выбытие + + + + Выбытие1 + + + Выбытие2 + + Auto + + + + ДанныеОтчета + + + Счет + Items + None + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + + + + + + + + + ru + Поступление + + + + Поступление1 + + + Поступление2 + + Auto + + + + + + diff --git a/tests/skills/cases/skd-edit/conditional-appearance-v2.json b/tests/skills/cases/skd-edit/conditional-appearance-v2.json new file mode 100644 index 00000000..43901275 --- /dev/null +++ b/tests/skills/cases/skd-edit/conditional-appearance-v2.json @@ -0,0 +1,22 @@ +{ + "name": "conditionalAppearance: DesignTimeValue, Format, OrGroup", + "preRun": [ + { + "script": "skd-compile/scripts/skd-compile", + "input": { + "dataSets": [{ + "name": "Основной", + "query": "ВЫБРАТЬ Т.Сумма ИЗ Регистр КАК Т", + "fields": ["Сумма: decimal(15,2)"] + }], + "parameters": ["ПорядокОкругления: string"] + }, + "args": { "-DefinitionFile": "{inputFile}", "-OutputPath": "{workDir}/Template.xml" } + } + ], + "params": { + "templatePath": "Template.xml", + "operation": "add-conditionalAppearance", + "value": "Формат = ЧЦ=15; ЧДЦ=2 when ПараметрыДанных.ПорядокОкругления = Перечисление.Округления.Окр1_00 ;; Формат = ЧЦ=15; ЧДЦ=0 when ПараметрыДанных.ПорядокОкругления = Перечисление.Округления.Окр1 or ПараметрыДанных.ПорядокОкругления = Перечисление.Округления.Окр1000" + } +} diff --git a/tests/skills/cases/skd-edit/modify-parameter.json b/tests/skills/cases/skd-edit/modify-parameter.json new file mode 100644 index 00000000..05309342 --- /dev/null +++ b/tests/skills/cases/skd-edit/modify-parameter.json @@ -0,0 +1,22 @@ +{ + "name": "modify-parameter: use, denyIncompleteValues, availableValue", + "preRun": [ + { + "script": "skd-compile/scripts/skd-compile", + "input": { + "dataSets": [{ + "name": "Основной", + "query": "ВЫБРАТЬ Т.Сумма ИЗ Регистр КАК Т", + "fields": ["Сумма: decimal(15,2)"] + }], + "parameters": [{"name": "ПорядокОкругления", "type": "string", "value": "Окр1_00"}] + }, + "args": { "-DefinitionFile": "{inputFile}", "-OutputPath": "{workDir}/Template.xml" } + } + ], + "params": { + "templatePath": "Template.xml", + "operation": "modify-parameter", + "value": "ПорядокОкругления use=Always ;; ПорядокОкругления denyIncompleteValues=true ;; ПорядокОкругления availableValue=Перечисление.Округления.Окр1_00 presentation=руб. коп ;; ПорядокОкругления availableValue=Перечисление.Округления.Окр1 presentation=руб." + } +} diff --git a/tests/skills/cases/skd-edit/set-structure-named.json b/tests/skills/cases/skd-edit/set-structure-named.json new file mode 100644 index 00000000..d2231ee6 --- /dev/null +++ b/tests/skills/cases/skd-edit/set-structure-named.json @@ -0,0 +1,25 @@ +{ + "name": "set-structure с @name= и Folder в selection + @group=", + "preRun": [ + { + "script": "skd-compile/scripts/skd-compile", + "input": { + "dataSets": [{ + "name": "Основной", + "query": "ВЫБРАТЬ Т.Счет, Т.Поступление1, Т.Поступление2, Т.Выбытие1 ИЗ Регистр КАК Т", + "fields": ["Счет: string", "Поступление1: decimal(15,2)", "Поступление2: decimal(15,2)", "Выбытие1: decimal(15,2)"] + }] + }, + "args": { "-DefinitionFile": "{inputFile}", "-OutputPath": "{workDir}/Template.xml" } + }, + { + "script": "skd-edit/scripts/skd-edit", + "args": { "-TemplatePath": "{workDir}/Template.xml", "-Operation": "set-structure", "-Value": "Счет @name=ДанныеОтчета" } + } + ], + "params": { + "templatePath": "Template.xml", + "operation": "add-selection", + "value": "Auto @group=ДанныеОтчета ;; Счет @group=ДанныеОтчета ;; Folder(Поступление: Поступление1, Поступление2) @group=ДанныеОтчета ;; Выбытие1 @group=ДанныеОтчета" + } +} diff --git a/tests/skills/cases/skd-edit/snapshots/conditional-appearance-v2/Template.xml b/tests/skills/cases/skd-edit/snapshots/conditional-appearance-v2/Template.xml new file mode 100644 index 00000000..4f068625 --- /dev/null +++ b/tests/skills/cases/skd-edit/snapshots/conditional-appearance-v2/Template.xml @@ -0,0 +1,107 @@ + + + + ИсточникДанных1 + Local + + + Основной + + Сумма + Сумма + + xs:decimal + + 15 + 2 + Any + + + + ИсточникДанных1 + ВЫБРАТЬ Т.Сумма ИЗ Регистр КАК Т + + + ПорядокОкругления + + xs:string + + 0 + Variable + + + + + Основной + + + ru + Основной + + + + + + + + + + + ПараметрыДанных.ПорядокОкругления + Equal + Перечисление.Округления.Окр1_00 + + + + + Формат + + + ru + ЧЦ=15; ЧДЦ=2 + + + + + + + + + + OrGroup + + ПараметрыДанных.ПорядокОкругления + Equal + Перечисление.Округления.Окр1 + + + ПараметрыДанных.ПорядокОкругления + Equal + Перечисление.Округления.Окр1000 + + + + + + Формат + + + ru + ЧЦ=15; ЧДЦ=0 + + + + + + + + + + + + + + + + + diff --git a/tests/skills/cases/skd-edit/snapshots/modify-parameter/Template.xml b/tests/skills/cases/skd-edit/snapshots/modify-parameter/Template.xml new file mode 100644 index 00000000..a2fde25a --- /dev/null +++ b/tests/skills/cases/skd-edit/snapshots/modify-parameter/Template.xml @@ -0,0 +1,76 @@ + + + + ИсточникДанных1 + Local + + + Основной + + Сумма + Сумма + + xs:decimal + + 15 + 2 + Any + + + + ИсточникДанных1 + ВЫБРАТЬ Т.Сумма ИЗ Регистр КАК Т + + + ПорядокОкругления + + xs:string + + 0 + Variable + + + Окр1_00Always + true + + + Перечисление.Округления.Окр1_00 + + + ru + руб. коп + + + + + Перечисление.Округления.Окр1 + + + ru + руб. + + + + + + Основной + + + ru + Основной + + + + + + + + + + + + + + + + diff --git a/tests/skills/cases/skd-edit/snapshots/set-structure-named/Template.xml b/tests/skills/cases/skd-edit/snapshots/set-structure-named/Template.xml new file mode 100644 index 00000000..b04acea4 --- /dev/null +++ b/tests/skills/cases/skd-edit/snapshots/set-structure-named/Template.xml @@ -0,0 +1,112 @@ + + + + ИсточникДанных1 + Local + + + Основной + + Счет + Счет + + xs:string + + 0 + Variable + + + + + Поступление1 + Поступление1 + + xs:decimal + + 15 + 2 + Any + + + + + Поступление2 + Поступление2 + + xs:decimal + + 15 + 2 + Any + + + + + Выбытие1 + Выбытие1 + + xs:decimal + + 15 + 2 + Any + + + + ИсточникДанных1 + ВЫБРАТЬ Т.Счет, Т.Поступление1, Т.Поступление2, Т.Выбытие1 ИЗ Регистр КАК Т + + + Основной + + + ru + Основной + + + + + ДанныеОтчета + + + Счет + Items + None + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + + + + + + + + Счет + + + + + ru + Поступление + + + + Поступление1 + + + Поступление2 + + Auto + + + Выбытие1 + + + + + + + +