From 24e7116b7d5e24227125f734afbe4a36dedcb6a0 Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Tue, 9 Jun 2026 17:15:23 +0300 Subject: [PATCH] =?UTF-8?q?fix(form-compile):=20=D1=8D=D0=BC=D0=B8=D1=82?= =?UTF-8?q?=D0=B8=D1=82=D1=8C=20=D0=BF=D1=83=D1=81=D1=82=D0=BE=D0=B9=20=20=D1=83=20=D1=84=D0=BE=D1=80=D0=BC=20=D0=B1=D0=B5?= =?UTF-8?q?=D0=B7=20=D1=80=D0=B5=D0=BA=D0=B2=D0=B8=D0=B7=D0=B8=D1=82=D0=BE?= =?UTF-8?q?=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Компилятор при отсутствии реквизитов не эмитил вовсе (предполагал толерантность 1С — не проверено). Корпус: 100% форм (17033) имеют , 162 — пустой , 0 без него. Платформа эмитит ВСЕГДА. Emit-Attributes теперь эмитит при пустом списке. Зеркало py. Кейс minimal (форма только с заголовком) → снапшот +, сертифицирован загрузкой в 1С (форма с пустым Attributes грузится). Форма РазблокированиеРеквизитов → match. Раундтрип: match 156→157, with diff 3→2 (остаток — 2 GroupList, осознанно непокрыты). Co-Authored-By: Claude Opus 4.8 (1M context) --- .claude/skills/form-compile/scripts/form-compile.ps1 | 5 +++-- .claude/skills/form-compile/scripts/form-compile.py | 4 +++- .../DataProcessors/Минимальная/Forms/Форма/Ext/Form.xml | 1 + 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.claude/skills/form-compile/scripts/form-compile.ps1 b/.claude/skills/form-compile/scripts/form-compile.ps1 index 0494f2f8..202c759c 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.93 — Compile 1C managed form from JSON or object metadata +# form-compile v1.94 — Compile 1C managed form from JSON or object metadata # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [string]$JsonPath, @@ -4526,7 +4526,8 @@ function Emit-DLParameters { function Emit-Attributes { param($attrs, [string]$indent) - if (-not $attrs -or $attrs.Count -eq 0) { return } + # Платформа ВСЕГДА эмитит (100% корпуса; 162 формы — пустой ). + if (-not $attrs -or $attrs.Count -eq 0) { X "$indent"; return } X "$indent" $seenAttrs = @{} diff --git a/.claude/skills/form-compile/scripts/form-compile.py b/.claude/skills/form-compile/scripts/form-compile.py index e4683c85..2d31454b 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.93 — Compile 1C managed form from JSON or object metadata +# form-compile v1.94 — Compile 1C managed form from JSON or object metadata # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse import copy @@ -4240,7 +4240,9 @@ def emit_dl_parameters(lines, params, indent): def emit_attributes(lines, attrs, indent): + # Платформа ВСЕГДА эмитит (100% корпуса; 162 формы — пустой ). if not attrs or len(attrs) == 0: + lines.append(f'{indent}') return lines.append(f'{indent}') diff --git a/tests/skills/cases/form-compile/snapshots/minimal/DataProcessors/Минимальная/Forms/Форма/Ext/Form.xml b/tests/skills/cases/form-compile/snapshots/minimal/DataProcessors/Минимальная/Forms/Форма/Ext/Form.xml index 9e065af0..ab95f86f 100644 --- a/tests/skills/cases/form-compile/snapshots/minimal/DataProcessors/Минимальная/Forms/Форма/Ext/Form.xml +++ b/tests/skills/cases/form-compile/snapshots/minimal/DataProcessors/Минимальная/Forms/Форма/Ext/Form.xml @@ -8,4 +8,5 @@ false +