From 2367eaa35362f42d051ce4599aadb54ff19d0be7 Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Sun, 7 Jun 2026 16:02:07 +0300 Subject: [PATCH] =?UTF-8?q?fix(form-compile):=20Page=20=D1=81=20=D0=BD?= =?UTF-8?q?=D0=B0=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5?= =?UTF-8?q?=D0=BC=20=D1=80=D0=B0=D1=81=D0=BA=D0=BB=D0=B0=D0=B4=D0=BA=D0=B8?= =?UTF-8?q?=20=E2=86=92=20=D0=BD=D0=B5=20=D0=BF=D1=83=D1=82=D0=B0=D1=82?= =?UTF-8?q?=D1=8C=20=D1=81=20UsualGroup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit У Page/Pages ключ `group` означает направление раскладки детей (Horizontal), а не тип UsualGroup. Диспетчер типа элемента проверял `group` раньше `page`/`pages`, поэтому страница с горизонтальной раскладкой компилировалась как вместо . Переставил `pages`/`page` перед `group` в TYPE_KEYS (ps1 + py зеркало) — реальная UsualGroup ключа page/pages не несёт, конфликта нет. Emit-Page уже корректно эмитит из ключа group. Регресс: добавил group:horizontal на страницу в кейс pages.json + снэпшот. Co-Authored-By: Claude Opus 4.8 --- .claude/skills/form-compile/scripts/form-compile.ps1 | 6 ++++-- .claude/skills/form-compile/scripts/form-compile.py | 6 ++++-- tests/skills/cases/form-compile/pages.json | 2 +- .../pages/DataProcessors/Мастер/Forms/Форма/Ext/Form.xml | 1 + 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/.claude/skills/form-compile/scripts/form-compile.ps1 b/.claude/skills/form-compile/scripts/form-compile.ps1 index 9e84e5e1..59a022a0 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.60 — Compile 1C managed form from JSON or object metadata +# form-compile v1.61 — Compile 1C managed form from JSON or object metadata # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [string]$JsonPath, @@ -2394,7 +2394,9 @@ function Emit-Element { # picture/picField — НИЗКИЙ приоритет: 'picture' это и тип (PictureDecoration), и свойство-иконка # у popup/button/cmdBar. Тип-ключ владельца (popup/button/…) должен выиграть. - foreach ($key in @("columnGroup","buttonGroup","group","input","check","radio","label","labelField","table","pages","page","button","calendar","cmdBar","popup","picField","picture")) { + # pages/page ПЕРЕД group: у Page/Pages ключ 'group' — это направление раскладки детей + # (Horizontal), а не тип UsualGroup. Реальная UsualGroup ключа page/pages не несёт. + foreach ($key in @("columnGroup","buttonGroup","pages","page","group","input","check","radio","label","labelField","table","button","calendar","cmdBar","popup","picField","picture")) { if ($el.$key -ne $null) { $typeKey = $key break diff --git a/.claude/skills/form-compile/scripts/form-compile.py b/.claude/skills/form-compile/scripts/form-compile.py index c516a7c8..42bcd81b 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.60 — Compile 1C managed form from JSON or object metadata +# form-compile v1.61 — Compile 1C managed form from JSON or object metadata # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse import copy @@ -1798,7 +1798,9 @@ KNOWN_KEYS = { # picture/picField — НИЗКИЙ приоритет: 'picture' это и тип (PictureDecoration), и свойство-иконка # у popup/button/cmdBar. Тип-ключ владельца (popup/button/…) должен выиграть. -TYPE_KEYS = ["columnGroup", "buttonGroup", "group", "input", "check", "radio", "label", "labelField", "table", "pages", "page", +# pages/page ПЕРЕД group: у Page/Pages ключ 'group' — это направление раскладки детей +# (Horizontal), а не тип UsualGroup. Реальная UsualGroup ключа page/pages не несёт. +TYPE_KEYS = ["columnGroup", "buttonGroup", "pages", "page", "group", "input", "check", "radio", "label", "labelField", "table", "button", "calendar", "cmdBar", "popup", "picField", "picture"] # Synonyms: model often writes XML name or Russian (ПолеПереключателя/RadioButtonField → radio) diff --git a/tests/skills/cases/form-compile/pages.json b/tests/skills/cases/form-compile/pages.json index 8d1401f8..bda3d629 100644 --- a/tests/skills/cases/form-compile/pages.json +++ b/tests/skills/cases/form-compile/pages.json @@ -21,7 +21,7 @@ { "page": "Шаг1", "title": "", "children": [ { "input": "Параметр1", "path": "Параметр1" } ]}, - { "page": "Шаг2", "title": "Результат", "tooltip": "Шаг \"Результат\"", "children": [ + { "page": "Шаг2", "title": "Результат", "tooltip": "Шаг \"Результат\"", "group": "horizontal", "children": [ { "input": "Итог", "path": "Итог", "readOnly": true } ]} ]}, diff --git a/tests/skills/cases/form-compile/snapshots/pages/DataProcessors/Мастер/Forms/Форма/Ext/Form.xml b/tests/skills/cases/form-compile/snapshots/pages/DataProcessors/Мастер/Forms/Форма/Ext/Form.xml index 96138f60..6328fbc7 100644 --- a/tests/skills/cases/form-compile/snapshots/pages/DataProcessors/Мастер/Forms/Форма/Ext/Form.xml +++ b/tests/skills/cases/form-compile/snapshots/pages/DataProcessors/Мастер/Forms/Форма/Ext/Form.xml @@ -42,6 +42,7 @@ Шаг "Результат" + Horizontal