feat(skd-compile): dataParameters auto — копирование value всех типов (ЕРП-паттерн)

Раньше "auto" копировал только variant для StandardPeriod, остальные типы
теряли значение по умолчанию. Теперь:

- value задан (не-Custom для StandardPeriod) → value + use=true (implicit),
  правильный xsi:type: boolean/decimal/dateTime/string, DesignTimeValue для
  ссылочных типов.
- value отсутствует или StandardPeriod=Custom → <use>false</use>
  + <value xsi:nil="true"/>.

Соответствует тому, как 1С Designer и ЕРП-отчёты персистят
SettingsParameterValue. Тест auto-data-parameters расширен покрытием
decimal/string/ref/nil.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-04-19 16:13:04 +03:00
co-authored by Claude Opus 4.7
parent 3f23be8219
commit 54d47aadad
5 changed files with 181 additions and 53 deletions
@@ -1,5 +1,5 @@
{
"name": "dataParameters: auto — наследование variant для StandardPeriod",
"name": "dataParameters: auto — наследование значений по всем типам",
"params": { "outputPath": "Template.xml" },
"input": {
"dataSets": [{
@@ -9,7 +9,12 @@
"parameters": [
"Период: СтандартныйПериод = LastMonth @autoDates",
"ПериодБезДефолта: СтандартныйПериод",
"Флаг: boolean = true"
"Флаг: boolean = true",
"Сумма: decimal(15,2) = 0",
"Ставка: decimal(5,2) = 13.5",
"Метка: string(50) = ТестовоеЗначение",
"ПустаяСтрока: string(50)",
"Валюта: СправочникСсылка.Валюты = Справочник.Валюты.EmptyRef"
],
"settingsVariants": [{
"name": "Основной",
@@ -83,6 +83,58 @@
</valueType>
<value xsi:type="xs:boolean">true</value>
</parameter>
<parameter>
<name>Сумма</name>
<valueType>
<v8:Type>xs:decimal</v8:Type>
<v8:NumberQualifiers>
<v8:Digits>15</v8:Digits>
<v8:FractionDigits>2</v8:FractionDigits>
<v8:AllowedSign>Any</v8:AllowedSign>
</v8:NumberQualifiers>
</valueType>
<value xsi:type="xs:decimal">0</value>
</parameter>
<parameter>
<name>Ставка</name>
<valueType>
<v8:Type>xs:decimal</v8:Type>
<v8:NumberQualifiers>
<v8:Digits>5</v8:Digits>
<v8:FractionDigits>2</v8:FractionDigits>
<v8:AllowedSign>Any</v8:AllowedSign>
</v8:NumberQualifiers>
</valueType>
<value xsi:type="xs:decimal">13.5</value>
</parameter>
<parameter>
<name>Метка</name>
<valueType>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>50</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</valueType>
<value xsi:type="xs:string">ТестовоеЗначение</value>
</parameter>
<parameter>
<name>ПустаяСтрока</name>
<valueType>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>50</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</valueType>
</parameter>
<parameter>
<name>Валюта</name>
<valueType>
<v8:Type xmlns:d5p1="http://v8.1c.ru/8.1/data/enterprise/current-config">d5p1:CatalogRef.Валюты</v8:Type>
</valueType>
<value xsi:type="dcscor:DesignTimeValue">Справочник.Валюты.EmptyRef</value>
</parameter>
<settingsVariant>
<dcsset:name>Основной</dcsset:name>
<dcsset:presentation xsi:type="v8:LocalStringType">
@@ -94,7 +146,6 @@
<dcsset:settings xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows">
<dcsset:dataParameters>
<dcscor:item xsi:type="dcsset:SettingsParameterValue">
<dcscor:use>false</dcscor:use>
<dcscor:parameter>Период</dcscor:parameter>
<dcscor:value xsi:type="v8:StandardPeriod">
<v8:variant xsi:type="v8:StandardPeriodVariant">LastMonth</v8:variant>
@@ -114,10 +165,36 @@
<dcsset:userSettingID>UUID-002</dcsset:userSettingID>
</dcscor:item>
<dcscor:item xsi:type="dcsset:SettingsParameterValue">
<dcscor:use>false</dcscor:use>
<dcscor:parameter>Флаг</dcscor:parameter>
<dcscor:value xsi:type="xs:boolean">true</dcscor:value>
<dcsset:userSettingID>UUID-003</dcsset:userSettingID>
</dcscor:item>
<dcscor:item xsi:type="dcsset:SettingsParameterValue">
<dcscor:parameter>Сумма</dcscor:parameter>
<dcscor:value xsi:type="xs:decimal">0</dcscor:value>
<dcsset:userSettingID>UUID-004</dcsset:userSettingID>
</dcscor:item>
<dcscor:item xsi:type="dcsset:SettingsParameterValue">
<dcscor:parameter>Ставка</dcscor:parameter>
<dcscor:value xsi:type="xs:decimal">13.5</dcscor:value>
<dcsset:userSettingID>UUID-005</dcsset:userSettingID>
</dcscor:item>
<dcscor:item xsi:type="dcsset:SettingsParameterValue">
<dcscor:parameter>Метка</dcscor:parameter>
<dcscor:value xsi:type="xs:string">ТестовоеЗначение</dcscor:value>
<dcsset:userSettingID>UUID-006</dcsset:userSettingID>
</dcscor:item>
<dcscor:item xsi:type="dcsset:SettingsParameterValue">
<dcscor:use>false</dcscor:use>
<dcscor:parameter>ПустаяСтрока</dcscor:parameter>
<dcscor:value xsi:nil="true"/>
<dcsset:userSettingID>UUID-007</dcsset:userSettingID>
</dcscor:item>
<dcscor:item xsi:type="dcsset:SettingsParameterValue">
<dcscor:parameter>Валюта</dcscor:parameter>
<dcscor:value xsi:type="dcscor:DesignTimeValue">Справочник.Валюты.EmptyRef</dcscor:value>
<dcsset:userSettingID>UUID-008</dcsset:userSettingID>
</dcscor:item>
</dcsset:dataParameters>
<dcsset:item xsi:type="dcsset:StructureItemGroup">
<dcsset:order>