mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-05 03:00:22 +03:00
fix(meta-compile,meta-decompile): не-дефолтный TypeReductionMode измерения и nil в FixedArray
Раундтрип по документам и регистрам УТ (1283 объекта) вскрыл два пробела. TypeReductionMode измерения РС: декомпилятор значение захватывал, но парсер измерения в компиляторе не переносил ключ дальше, и любое отклонение от дефолта молча заменялось на TransformValues. Так терялось третье значение свойства — DeleteData («Удалять данные»); всего у свойства три режима: Преобразовывать значения (дефолт), Удалять данные, Запрещать. Синтетика на матрице платформ: DeleteData принимается и переживает роундтрип на 8.3.25, 8.3.26 и 8.3.27 — порог тот же, что у самого свойства (2.18). nil-элемент внутри FixedArray (<v8:Value xsi:nil="true"/>) декомпилировался пустой строкой, компилятор эмитил xs:string. Теперь это JSON null в обе стороны. Конструкция не новая — есть уже в дампе 8.3.20. Спеки: у TypeReductionMode перечислены все три значения с названиями из конфигуратора; версия появления исправлена с 2.20 на 2.18. Проверка: УТ tier-1 1283 объекта -> 1280 совпадений (было 1273), сюита meta-compile 76/76 на обоих портах. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
75e861da6e
commit
3d5c9e5bee
@@ -219,6 +219,9 @@ function Get-TypeShorthand {
|
||||
# string/dateTime/DesignTimeRef → строка (компилятор auto-детектит обратно).
|
||||
function Convert-ChScalarNode {
|
||||
param($vN)
|
||||
# nil-элемент массива (<v8:Value xsi:nil="true"/>) → JSON null. Без этого он приезжал пустой
|
||||
# строкой и компилятор эмитил xs:string вместо nil.
|
||||
if ($vN.GetAttribute('nil', 'http://www.w3.org/2001/XMLSchema-instance') -eq 'true') { return $null }
|
||||
$xt = $vN.GetAttribute('type', 'http://www.w3.org/2001/XMLSchema-instance')
|
||||
$txt = $vN.InnerText
|
||||
if ($xt -match 'boolean$') { return ($txt -eq 'true') }
|
||||
|
||||
@@ -291,6 +291,10 @@ def get_type_shorthand(type_node):
|
||||
|
||||
# Скалярное значение параметра выбора (<Value xsi:type=...>) → JSON-значение (bool/число/строка).
|
||||
def convert_ch_scalar_node(vN):
|
||||
# nil-элемент массива (<v8:Value xsi:nil="true"/>) -> JSON null. Без этого он приезжал пустой
|
||||
# строкой и компилятор эмитил xs:string вместо nil.
|
||||
if _attr(vN, 'nil', NS_XSI) == 'true':
|
||||
return None
|
||||
xt = _attr(vN, 'type', NS_XSI)
|
||||
txt = _text(vN)
|
||||
if re.search(r'boolean$', xt, re.I):
|
||||
|
||||
Reference in New Issue
Block a user