mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-09 04:53:20 +03:00
fix(form-decompile): фильтр right xs:string "1"/дата — явный valueType (авто-детект дал бы число/дату)
Значение фильтра <dcsset:right xsi:type="xs:string">1</dcsset:right> терялось как тип: декомпилятор исключал xs:-типы из захвата valueType (расчёт на авто-детект компилятора), но компилятор авто-детектит строку "1" как xs:decimal (число) → xs:string-ность терялась. Принцип (подтверждён пользователем): когда авто-вывод типа компилятором дал бы ДРУГОЙ тип, чем фактический — декомпилятор должен указать valueType явно. Фикс: при xs:string + значение-строка матчит числовой/дату-паттерн (что компилятор детектит иначе) → фиксируем valueType="xs:string". Компилятор honors явный тип. Корпус: 8 значений в 3 формах. Форма ЭлектронныйЗаказЗаявка/ТитулГрузоотправителя → match. Декомпилятор-only. ps1==py байт-в-байт. Регресс 43/43. 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
4855f79403
commit
26c804391a
@@ -1,4 +1,4 @@
|
||||
# form-decompile v0.142 — Decompile 1C managed Form.xml to JSON DSL (draft)
|
||||
# form-decompile v0.143 — Decompile 1C managed Form.xml to JSON DSL (draft)
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
# ВНИМАНИЕ: раундтрип не гарантируется. Навык исключён из авто-использования моделью.
|
||||
param(
|
||||
@@ -691,6 +691,10 @@ function Build-FilterItem {
|
||||
("$($vt.value)" -match '^(Перечисление|Справочник|ПланСчетов|Документ|ПланВидовХарактеристик|ПланВидовРасчета|БизнесПроцесс|Задача|РегистрСведений|ПланОбмена|Catalog|Enum|Document|ChartOfAccounts|ChartOfCharacteristicTypes|ChartOfCalculationTypes|BusinessProcess|Task|InformationRegister|ExchangePlan)\.')
|
||||
if ($vt.type -and $vt.type -notmatch '^xs:' -and -not $autoDetectsDTV) {
|
||||
$valueTypeAttr = $vt.type
|
||||
} elseif ($vt.type -eq 'xs:string' -and ($value -is [string]) -and ($value -match '^(-?\d+(\.\d+)?|\d{4}-\d{2}-\d{2}T)')) {
|
||||
# Значение-строка "1"/"2020-..." с xsi:type="xs:string": компилятор авто-детектит число/дату
|
||||
# (теряет xs:string). Когда авто-вывод дал бы ДРУГОЙ тип — фиксируем явный valueType.
|
||||
$valueTypeAttr = 'xs:string'
|
||||
}
|
||||
}
|
||||
} elseif ($rightNodes.Count -gt 1) {
|
||||
|
||||
Reference in New Issue
Block a user