mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-09-19 16:35:52 +03:00
fix(meta-*): двоичные данные с длиной, корень реестра в py, ХранилищеЗначения в meta-info
Мелкие находки ревью, по одному кейсу на каждую: - meta-compile: BinaryData(N[,fixed|variable]) — фиксированная длина больше не теряется; голая форма по-прежнему 4294967292/Fixed, как её пишет платформа при импорте из СУБД. Посторонний текст в скобках (BinaryData(abc)) отвергается, а не даёт тихий безлимит — PS принимал его и молча подставлял дефолт, py такой тип не понимал вовсе. - meta-decompile: сворачивает в голый BinaryData только точное совпадение с этим дефолтом. - meta-info: xs:base64Binary без квалификаторов — вторая форма ХранилищаЗначения, а не двоичные данные; раньше два навыка читали один и тот же узел по-разному. - meta-remove (py): в ветке «файлов нет» корень реестра был жёстко Configuration, поэтому осиротевшая таблица внешнего источника не находилась и навык падал, тогда как PS её разрегистрировал. Сообщение в обоих портах теперь называет реальный реестр. Проверено: наборы meta-compile/decompile/info/remove/edit/validate зелёные в обоих рантаймах, гарды прошли, снэпшот eds-binary-data принят платформой 8.3.24.1691. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NBsZA5cr2WFThtgp7i5WVi
This commit is contained in:
co-authored by
Claude Opus 5
parent
7dc401718f
commit
a38f30c9dd
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env python3
|
||||
# meta-decompile v0.66 — XML объекта метаданных 1С → JSON-черновик формата meta-compile
|
||||
# meta-decompile v0.67 — XML объекта метаданных 1С → JSON-черновик формата meta-compile
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
#
|
||||
# Зеркало meta-decompile.ps1 (КАНОН). Структура 1:1 — те же имена функций, порядок, комментарии.
|
||||
@@ -317,8 +317,14 @@ def get_type_shorthand(type_node):
|
||||
if bq is not None:
|
||||
blen = bq.find('v8:Length', NS)
|
||||
bal = bq.find('v8:AllowedLength', NS)
|
||||
if blen is not None and bal is not None and _text(bal) == 'Variable':
|
||||
parts.append(f'BinaryData({_text(blen)})')
|
||||
blen_val = _text(blen).strip() if blen is not None else ''
|
||||
bal_val = _text(bal).strip() if bal is not None else ''
|
||||
# Голым BinaryData сворачиваем ТОЛЬКО точный дефолт компилятора
|
||||
# (4294967292/Fixed), иначе фиксированная длина терялась на раундтрипе.
|
||||
if bal_val.lower() == 'variable' and blen_val:
|
||||
parts.append(f'BinaryData({blen_val})')
|
||||
elif blen_val and blen_val != '4294967292':
|
||||
parts.append(f'BinaryData({blen_val},fixed)')
|
||||
else:
|
||||
parts.append('BinaryData')
|
||||
else:
|
||||
|
||||
Reference in New Issue
Block a user