From a59be4b914d6b2edccd1011c508361509dce3d00 Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Sat, 2 May 2026 16:51:43 +0300 Subject: [PATCH] =?UTF-8?q?fix(form-compile):=20SavedData=3Dtrue=20=D0=B4?= =?UTF-8?q?=D0=BB=D1=8F=20object/RecordManager=20=D0=B3=D0=BB=D0=B0=D0=B2?= =?UTF-8?q?=D0=BD=D0=BE=D0=B3=D0=BE=20=D1=80=D0=B5=D0=BA=D0=B2=D0=B8=D0=B7?= =?UTF-8?q?=D0=B8=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Без true платформа не маркирует форму как modified при изменении главного реквизита — confirmation dialog при Esc не появляется, canonical flow «изменил → Esc → Да» сломан. Правило выведено из реальной выгрузки acc 8.3.27: SavedData ставится только для редактируемых форм с типом *Object.X (Catalog/Document/ChartOf…/ ExchangePlan/BusinessProcess/Task) или *RecordManager.X. DynamicList/Report/ DataProcessor/ConstantsSet/RecordSet — не трогаем, отдаём решение DSL через явный savedData: true. Поднял версию до v1.10. Обновил 5 snapshot'ов (формы элементов/документа). Co-Authored-By: Claude Opus 4.7 (1M context) --- .claude/skills/form-compile/scripts/form-compile.ps1 | 8 ++++++-- .claude/skills/form-compile/scripts/form-compile.py | 8 ++++++-- .../Catalogs/Валюты/Forms/ФормаЭлемента/Ext/Form.xml | 1 + .../ВидыНоменклатуры/Forms/ФормаЭлемента/Ext/Form.xml | 1 + .../Forms/ФормаДокумента/Ext/Form.xml | 1 + .../ОбменДанными/Forms/ФормаЭлемента/Ext/Form.xml | 1 + .../Catalogs/Товары/Forms/ФормаЭлемента/Ext/Form.xml | 1 + 7 files changed, 17 insertions(+), 4 deletions(-) diff --git a/.claude/skills/form-compile/scripts/form-compile.ps1 b/.claude/skills/form-compile/scripts/form-compile.ps1 index 483a1bcf..e56459f0 100644 --- a/.claude/skills/form-compile/scripts/form-compile.ps1 +++ b/.claude/skills/form-compile/scripts/form-compile.ps1 @@ -1,4 +1,4 @@ -# form-compile v1.9 — Compile 1C managed form from JSON or object metadata +# form-compile v1.10 — Compile 1C managed form from JSON or object metadata # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [string]$JsonPath, @@ -2464,7 +2464,11 @@ function Emit-Attributes { if ($attr.main -eq $true) { X "$innertrue" } - if ($attr.savedData -eq $true) { + $mainSaved = $false + if ($attr.main -eq $true -and $attr.type) { + $mainSaved = ("$($attr.type)") -match '^(CatalogObject|DocumentObject|ChartOfAccountsObject|ChartOfCalculationTypesObject|ChartOfCharacteristicTypesObject|ExchangePlanObject|BusinessProcessObject|TaskObject)\.' -or ("$($attr.type)") -match 'RecordManager\.' + } + if ($attr.savedData -eq $true -or $mainSaved) { X "$innertrue" } if ($attr.fillChecking) { diff --git a/.claude/skills/form-compile/scripts/form-compile.py b/.claude/skills/form-compile/scripts/form-compile.py index 54f41a86..f945590f 100644 --- a/.claude/skills/form-compile/scripts/form-compile.py +++ b/.claude/skills/form-compile/scripts/form-compile.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# form-compile v1.9 — Compile 1C managed form from JSON or object metadata +# form-compile v1.10 — Compile 1C managed form from JSON or object metadata # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse import copy @@ -2153,7 +2153,11 @@ def emit_attributes(lines, attrs, indent): if attr.get('main') is True: lines.append(f'{inner}true') - if attr.get('savedData') is True: + main_saved = False + if attr.get('main') is True and attr.get('type'): + t = str(attr['type']) + main_saved = bool(re.match(r'^(CatalogObject|DocumentObject|ChartOfAccountsObject|ChartOfCalculationTypesObject|ChartOfCharacteristicTypesObject|ExchangePlanObject|BusinessProcessObject|TaskObject)\.', t)) or ('RecordManager.' in t) + if attr.get('savedData') is True or main_saved: lines.append(f'{inner}true') if attr.get('fillChecking'): lines.append(f'{inner}{attr["fillChecking"]}') diff --git a/tests/skills/cases/form-compile-from-object/snapshots/catalog-item-simple/Catalogs/Валюты/Forms/ФормаЭлемента/Ext/Form.xml b/tests/skills/cases/form-compile-from-object/snapshots/catalog-item-simple/Catalogs/Валюты/Forms/ФормаЭлемента/Ext/Form.xml index 222ebb09..76d47c0a 100644 --- a/tests/skills/cases/form-compile-from-object/snapshots/catalog-item-simple/Catalogs/Валюты/Forms/ФормаЭлемента/Ext/Form.xml +++ b/tests/skills/cases/form-compile-from-object/snapshots/catalog-item-simple/Catalogs/Валюты/Forms/ФормаЭлемента/Ext/Form.xml @@ -80,6 +80,7 @@ cfg:CatalogObject.Валюты true + true diff --git a/tests/skills/cases/form-compile-from-object/snapshots/ccoct-item-simple/ChartsOfCharacteristicTypes/ВидыНоменклатуры/Forms/ФормаЭлемента/Ext/Form.xml b/tests/skills/cases/form-compile-from-object/snapshots/ccoct-item-simple/ChartsOfCharacteristicTypes/ВидыНоменклатуры/Forms/ФормаЭлемента/Ext/Form.xml index a0314456..627849bc 100644 --- a/tests/skills/cases/form-compile-from-object/snapshots/ccoct-item-simple/ChartsOfCharacteristicTypes/ВидыНоменклатуры/Forms/ФормаЭлемента/Ext/Form.xml +++ b/tests/skills/cases/form-compile-from-object/snapshots/ccoct-item-simple/ChartsOfCharacteristicTypes/ВидыНоменклатуры/Forms/ФормаЭлемента/Ext/Form.xml @@ -50,6 +50,7 @@ cfg:ChartOfCharacteristicTypesObject.ВидыНоменклатуры true + true diff --git a/tests/skills/cases/form-compile-from-object/snapshots/document-item-medium/Documents/АктВыполненныхВнутреннихРабот/Forms/ФормаДокумента/Ext/Form.xml b/tests/skills/cases/form-compile-from-object/snapshots/document-item-medium/Documents/АктВыполненныхВнутреннихРабот/Forms/ФормаДокумента/Ext/Form.xml index b42de34b..4629a4b4 100644 --- a/tests/skills/cases/form-compile-from-object/snapshots/document-item-medium/Documents/АктВыполненныхВнутреннихРабот/Forms/ФормаДокумента/Ext/Form.xml +++ b/tests/skills/cases/form-compile-from-object/snapshots/document-item-medium/Documents/АктВыполненныхВнутреннихРабот/Forms/ФормаДокумента/Ext/Form.xml @@ -242,6 +242,7 @@ cfg:DocumentObject.АктВыполненныхВнутреннихРабот true + true diff --git a/tests/skills/cases/form-compile-from-object/snapshots/exchangeplan-item-simple/ExchangePlans/ОбменДанными/Forms/ФормаЭлемента/Ext/Form.xml b/tests/skills/cases/form-compile-from-object/snapshots/exchangeplan-item-simple/ExchangePlans/ОбменДанными/Forms/ФормаЭлемента/Ext/Form.xml index b07d0630..6881ccff 100644 --- a/tests/skills/cases/form-compile-from-object/snapshots/exchangeplan-item-simple/ExchangePlans/ОбменДанными/Forms/ФормаЭлемента/Ext/Form.xml +++ b/tests/skills/cases/form-compile-from-object/snapshots/exchangeplan-item-simple/ExchangePlans/ОбменДанными/Forms/ФормаЭлемента/Ext/Form.xml @@ -67,6 +67,7 @@ cfg:ExchangePlanObject.ОбменДанными true + true diff --git a/tests/skills/cases/form-compile/snapshots/catalog-form/Catalogs/Товары/Forms/ФормаЭлемента/Ext/Form.xml b/tests/skills/cases/form-compile/snapshots/catalog-form/Catalogs/Товары/Forms/ФормаЭлемента/Ext/Form.xml index c4f31cb2..b9f83d05 100644 --- a/tests/skills/cases/form-compile/snapshots/catalog-form/Catalogs/Товары/Forms/ФормаЭлемента/Ext/Form.xml +++ b/tests/skills/cases/form-compile/snapshots/catalog-form/Catalogs/Товары/Forms/ФормаЭлемента/Ext/Form.xml @@ -37,6 +37,7 @@ cfg:CatalogObject.Товары true + true