mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-20 01:20:59 +03:00
feat(form-decompile,form-compile): StandardBeginningDate в значении фильтра — структурно {variant, date?}
Значение фильтра типа v8:StandardBeginningDate (стандартная дата начала) серилизуется
структурно: <v8:variant xsi:type="v8:StandardBeginningDateVariant">Custom</v8:variant>
+ <v8:date>… (Custom несёт дату; именованные варианты — без). Компилятор эмитил
плоскую склейку InnerText (Custom3999-12-31T23:59:59), декомпилятор брал
сцепленный текст. Корпус 8.3.24: 307 случаев (Custom 280 с датой, BeginningOfThisDay
23, …Week 3, …Year 1; StandardEndDate/StandardPeriod как значение фильтра не
встречаются, но обработаны симметрично).
Не «забытый порт» — skd-decompile тоже не структурирует SBD в filter right (только в
dataParameters). DSL: value = {variant, date?} + valueType="v8:StandardBeginningDate".
Декомпилятор Get-FilterValueWithType читает variant/date; компилятор Emit-FilterItem
эмитит структурно (variant xsi:type выводится из valueType). Зеркало py.
Форма УправлениеОбменом (ДатаЗакрытия = SBD, op Equal): SBD-потерь 0 (остаток diff —
несвязанный TitleFont/FooterText). Кейс input-fields (+CA фильтр SBD Custom+date и
именованный вариант) сертифицирован в 1С, round-trip декомпиляции подтверждён.
Регресс 43/43.
ОТДЕЛЬНАЯ НАХОДКА (не в этом коммите): операторы Filled/NotFilled несут
тип-зависимый плейсхолдер <dcsset:right> (пустой xs:string для строк, SBD с дефолт.
датой для дат), который декомпилятор дропает как беззначный — нужен отдельный фикс.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
459d3feb69
commit
3ce71d436f
@@ -66,14 +66,17 @@
|
||||
{ "name": "ФлагПлатформенный", "type": "boolean" },
|
||||
{ "name": "ФлагЯвный", "type": "boolean" },
|
||||
{ "name": "ФлагТумблер", "type": "boolean" },
|
||||
{ "name": "ЧисловоеПоле", "type": "number(10,2)" }
|
||||
{ "name": "ЧисловоеПоле", "type": "number(10,2)" },
|
||||
{ "name": "ДатаПоля", "type": "dateTime" }
|
||||
],
|
||||
"conditionalAppearance": [
|
||||
{ "selection": ["ОбычноеПоле"], "filter": ["ЧисловоеПоле > 100"], "appearance": { "ЦветФона": "style:FormBackColor", "Текст": "Плоский текст" },
|
||||
"presentation": { "ru": "Подсветка", "en": "Highlight" } },
|
||||
{ "filter": ["ЧисловоеПоле = 0"], "appearance": { "Текст": { "ru": "Локализованный", "en": "Localized" } } },
|
||||
{ "filter": ["ЧисловоеПоле < 0"], "appearance": { "Текст": "" } },
|
||||
{ "filter": ["ЧисловоеПоле = 1"], "appearance": { "Текст": { "field": "ОбычноеПоле" } } }
|
||||
{ "filter": ["ЧисловоеПоле = 1"], "appearance": { "Текст": { "field": "ОбычноеПоле" } } },
|
||||
{ "filter": [{ "field": "ДатаПоля", "op": "=", "value": { "variant": "Custom", "date": "3999-12-31T23:59:59" }, "valueType": "v8:StandardBeginningDate" }], "appearance": { "ЦветТекста": "web:Gray" } },
|
||||
{ "filter": [{ "field": "ДатаПоля", "op": ">=", "value": { "variant": "BeginningOfThisDay" }, "valueType": "v8:StandardBeginningDate" }], "appearance": { "ЦветТекста": "web:Silver" } }
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
+51
@@ -610,6 +610,20 @@
|
||||
</v8:NumberQualifiers>
|
||||
</Type>
|
||||
</Attribute>
|
||||
<Attribute name="ДатаПоля" id="57">
|
||||
<Title>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Дата поля</v8:content>
|
||||
</v8:item>
|
||||
</Title>
|
||||
<Type>
|
||||
<v8:Type>xs:dateTime</v8:Type>
|
||||
<v8:DateQualifiers>
|
||||
<v8:DateFractions>DateTime</v8:DateFractions>
|
||||
</v8:DateQualifiers>
|
||||
</Type>
|
||||
</Attribute>
|
||||
<ConditionalAppearance>
|
||||
<dcsset:item>
|
||||
<dcsset:selection>
|
||||
@@ -702,6 +716,43 @@
|
||||
</dcscor:item>
|
||||
</dcsset:appearance>
|
||||
</dcsset:item>
|
||||
<dcsset:item>
|
||||
<dcsset:selection/>
|
||||
<dcsset:filter>
|
||||
<dcsset:item xsi:type="dcsset:FilterItemComparison">
|
||||
<dcsset:left xsi:type="dcscor:Field">ДатаПоля</dcsset:left>
|
||||
<dcsset:comparisonType>Equal</dcsset:comparisonType>
|
||||
<dcsset:right xsi:type="v8:StandardBeginningDate">
|
||||
<v8:variant xsi:type="v8:StandardBeginningDateVariant">Custom</v8:variant>
|
||||
<v8:date>3999-12-31T23:59:59</v8:date>
|
||||
</dcsset:right>
|
||||
</dcsset:item>
|
||||
</dcsset:filter>
|
||||
<dcsset:appearance>
|
||||
<dcscor:item xsi:type="dcsset:SettingsParameterValue">
|
||||
<dcscor:parameter>ЦветТекста</dcscor:parameter>
|
||||
<dcscor:value xsi:type="v8ui:Color">web:Gray</dcscor:value>
|
||||
</dcscor:item>
|
||||
</dcsset:appearance>
|
||||
</dcsset:item>
|
||||
<dcsset:item>
|
||||
<dcsset:selection/>
|
||||
<dcsset:filter>
|
||||
<dcsset:item xsi:type="dcsset:FilterItemComparison">
|
||||
<dcsset:left xsi:type="dcscor:Field">ДатаПоля</dcsset:left>
|
||||
<dcsset:comparisonType>GreaterOrEqual</dcsset:comparisonType>
|
||||
<dcsset:right xsi:type="v8:StandardBeginningDate">
|
||||
<v8:variant xsi:type="v8:StandardBeginningDateVariant">BeginningOfThisDay</v8:variant>
|
||||
</dcsset:right>
|
||||
</dcsset:item>
|
||||
</dcsset:filter>
|
||||
<dcsset:appearance>
|
||||
<dcscor:item xsi:type="dcsset:SettingsParameterValue">
|
||||
<dcscor:parameter>ЦветТекста</dcscor:parameter>
|
||||
<dcscor:value xsi:type="v8ui:Color">web:Silver</dcscor:value>
|
||||
</dcscor:item>
|
||||
</dcsset:appearance>
|
||||
</dcsset:item>
|
||||
</ConditionalAppearance>
|
||||
</Attributes>
|
||||
</Form>
|
||||
|
||||
Reference in New Issue
Block a user