mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-09-20 00:45:54 +03:00
fix(meta-decompile): слоты форм таблицы внешнего источника терялись при разборе
Раундтрип B на стенде вскрыл пробел: у таблицы внешнего источника декомпилятор не снимал DefaultObjectForm/DefaultRecordForm/DefaultListForm/DefaultChoiceForm, хотя DSL их поддерживает, компилятор эмитит, а у прочих объектов они снимаются. Пересборка стенда молча теряла назначенную форму списка. Сами формы вне скоупа раундтрипа (это отдельные файлы, их делает навык form-add), поэтому собранная из такого DSL конфигурация не загрузится — ровно как и у справочника с формой. Договорённость одна и та же, записана в docs/meta-dsl-spec.md. Раундтрип B после правки: из выгрузки стенда → DSL → meta-compile → загрузка в базу → выгрузка платформой = побайтово то же, что собрал компилятор. Против исходной выгрузки стенда остаются два известных расхождения: UnfilledParentValue (загрузкой XML не задаётся, замерено тремя опытами) и регистрация <Form> (вне скоупа). 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
5c79b494cd
commit
41e2eca638
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env python3
|
||||
# meta-decompile v0.68 — XML объекта метаданных 1С → JSON-черновик формата meta-compile
|
||||
# meta-decompile v0.69 — XML объекта метаданных 1С → JSON-черновик формата meta-compile
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
#
|
||||
# Зеркало meta-decompile.ps1 (КАНОН). Структура 1:1 — те же имена функций, порядок, комментарии.
|
||||
@@ -2272,6 +2272,15 @@ def main():
|
||||
t_et = TP('EditType')
|
||||
if t_et and t_et != 'InDialog':
|
||||
tbl['editType'] = t_et
|
||||
# Слоты форм — такая же часть свойств таблицы, как у прочих объектов (сами формы
|
||||
# вне скоупа раундтрипа: это отдельные файлы, их делает навык form-add).
|
||||
for xml_tag, dsl_key in (('DefaultObjectForm', 'defaultObjectForm'),
|
||||
('DefaultRecordForm', 'defaultRecordForm'),
|
||||
('DefaultListForm', 'defaultListForm'),
|
||||
('DefaultChoiceForm', 'defaultChoiceForm')):
|
||||
fv = TP(xml_tag)
|
||||
if fv:
|
||||
tbl[dsl_key] = fv
|
||||
based_on = [_text(it) for it in tp.findall('md:BasedOn/xr:Item', NS)]
|
||||
if based_on:
|
||||
tbl['basedOn'] = based_on
|
||||
|
||||
Reference in New Issue
Block a user