mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-06-14 18:04:58 +03:00
feat(form-decompile,form-compile): report-form свойства + 3 элементных скаляра (раскрыто из-под ring-3)
Закрытие спец-полей раскрыло пробелы в формах Report-объектов (доминируют среди SpreadSheet-форм). 6 форменных скаляров report-формы → KNOWN_FORM_PROPS (decompiler-only; компилятор уже эмитит через Emit-Properties): ReportResult/ DetailsData (имена реквизитов), ReportFormType (Main/Settings/Variant), AutoShowState (Auto/DontShow/ShowOnComposition), ReportResultViewMode/ ViewModeApplicationOnSetReportResult (всегда Auto). + 3 элементных generic-скаляра (обе стороны, +py): HorizontalSpacing (группа, 3592 в корпусе), RepresentationInContextMenu (кнопка, 1673), SettingsNamedItemDetailedRepresentation (таблица, 778). Выборка 2.17: TOTAL 101→23, match 166→170, diff 17→13 (ring3 37, 0 крашей). Кейсы groups/commands/table расширены и сертифицированы загрузкой в 1С. Регресс 40/40 (ps1+py). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
# form-compile v1.95 — Compile 1C managed form from JSON or object metadata
|
||||
# form-compile v1.96 — Compile 1C managed form from JSON or object metadata
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
param(
|
||||
[string]$JsonPath,
|
||||
@@ -2614,6 +2614,8 @@ function Emit-Element {
|
||||
"horizontalScrollBar"=1;"viewScalingMode"=1;"output"=1;"selectionShowMode"=1;"protection"=1
|
||||
"edit"=1;"showGrid"=1;"showGroups"=1;"showHeaders"=1;"showRowAndColumnNames"=1;"showCellNames"=1
|
||||
"pointerType"=1;"drawingSelectionShowMode"=1;"warningOnEditRepresentation"=1;"markingAppearance"=1
|
||||
# report-form контекст (generic-скаляры элементов)
|
||||
"horizontalSpacing"=1;"representationInContextMenu"=1;"settingsNamedItemDetailedRepresentation"=1
|
||||
# columnGroup-specific
|
||||
"showInHeader"=1
|
||||
# radio-specific
|
||||
@@ -2914,6 +2916,10 @@ $script:genericScalars = @(
|
||||
@{ Tag='ShowRowAndColumnNames'; Key='showRowAndColumnNames'; Kind='bool' }
|
||||
@{ Tag='ShowCellNames'; Key='showCellNames'; Kind='bool' }
|
||||
@{ Tag='ShowPercent'; Key='showPercent'; Kind='bool' }
|
||||
# Report-form контекст: интервал группы / представление кнопки в контекстном меню / детальное представление настройки таблицы
|
||||
@{ Tag='HorizontalSpacing'; Key='horizontalSpacing'; Kind='value' }
|
||||
@{ Tag='RepresentationInContextMenu'; Key='representationInContextMenu'; Kind='value' }
|
||||
@{ Tag='SettingsNamedItemDetailedRepresentation'; Key='settingsNamedItemDetailedRepresentation'; Kind='bool' }
|
||||
)
|
||||
|
||||
function Emit-GenericScalars {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env python3
|
||||
# form-compile v1.95 — Compile 1C managed form from JSON or object metadata
|
||||
# form-compile v1.96 — Compile 1C managed form from JSON or object metadata
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
import argparse
|
||||
import copy
|
||||
@@ -1835,6 +1835,8 @@ KNOWN_KEYS = {
|
||||
"horizontalScrollBar", "viewScalingMode", "output", "selectionShowMode", "protection",
|
||||
"edit", "showGrid", "showGroups", "showHeaders", "showRowAndColumnNames", "showCellNames",
|
||||
"pointerType", "drawingSelectionShowMode", "warningOnEditRepresentation", "markingAppearance",
|
||||
# report-form контекст (generic-скаляры элементов)
|
||||
"horizontalSpacing", "representationInContextMenu", "settingsNamedItemDetailedRepresentation",
|
||||
}
|
||||
|
||||
# picture/picField — НИЗКИЙ приоритет: 'picture' это и тип (PictureDecoration), и свойство-иконка
|
||||
@@ -2735,6 +2737,10 @@ GENERIC_SCALARS = [
|
||||
('ShowRowAndColumnNames', 'showRowAndColumnNames', 'bool'),
|
||||
('ShowCellNames', 'showCellNames', 'bool'),
|
||||
('ShowPercent', 'showPercent', 'bool'),
|
||||
# Report-form контекст: интервал группы / представление кнопки в контекстном меню / детальное представление настройки таблицы
|
||||
('HorizontalSpacing', 'horizontalSpacing', 'value'),
|
||||
('RepresentationInContextMenu', 'representationInContextMenu', 'value'),
|
||||
('SettingsNamedItemDetailedRepresentation', 'settingsNamedItemDetailedRepresentation', 'bool'),
|
||||
]
|
||||
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# form-decompile v0.71 — Decompile 1C managed Form.xml to JSON DSL (draft)
|
||||
# form-decompile v0.72 — Decompile 1C managed Form.xml to JSON DSL (draft)
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
# ВНИМАНИЕ: раундтрип не гарантируется. Навык исключён из авто-использования моделью.
|
||||
param(
|
||||
@@ -1188,6 +1188,10 @@ $GENERIC_SCALARS = @(
|
||||
@{ Tag='ShowRowAndColumnNames'; Key='showRowAndColumnNames'; Kind='bool' }
|
||||
@{ Tag='ShowCellNames'; Key='showCellNames'; Kind='bool' }
|
||||
@{ Tag='ShowPercent'; Key='showPercent'; Kind='bool' }
|
||||
# Report-form контекст: интервал группы / представление кнопки в контекстном меню / детальное представление настройки таблицы
|
||||
@{ Tag='HorizontalSpacing'; Key='horizontalSpacing'; Kind='value' }
|
||||
@{ Tag='RepresentationInContextMenu'; Key='representationInContextMenu'; Kind='value' }
|
||||
@{ Tag='SettingsNamedItemDetailedRepresentation'; Key='settingsNamedItemDetailedRepresentation'; Kind='bool' }
|
||||
)
|
||||
|
||||
# Захват generic-скаляров. Специфичная обработка (если ключ уже задан) — побеждает.
|
||||
@@ -1758,7 +1762,7 @@ $titleNode = $root.SelectSingleNode("lf:Title", $ns)
|
||||
if ($titleNode) { $t = Get-LangText $titleNode; if ($null -ne $t) { $dsl['title'] = $t } }
|
||||
|
||||
# properties (прямые скаляры под <Form>, PascalCase → camelCase)
|
||||
$KNOWN_FORM_PROPS = @('AutoTitle','WindowOpeningMode','CommandBarLocation','SaveDataInSettings','AutoSaveDataInSettings','AutoTime','UsePostingMode','RepostOnWrite','AutoURL','AutoFillCheck','Customizable','EnterKeyBehavior','VerticalScroll','Width','Height','Group','UseForFoldersAndItems','SaveWindowSettings','ScalingMode','VerticalSpacing')
|
||||
$KNOWN_FORM_PROPS = @('AutoTitle','ReportResult','DetailsData','ReportFormType','AutoShowState','ReportResultViewMode','ViewModeApplicationOnSetReportResult','WindowOpeningMode','CommandBarLocation','SaveDataInSettings','AutoSaveDataInSettings','AutoTime','UsePostingMode','RepostOnWrite','AutoURL','AutoFillCheck','Customizable','EnterKeyBehavior','VerticalScroll','Width','Height','Group','UseForFoldersAndItems','SaveWindowSettings','ScalingMode','VerticalSpacing')
|
||||
$props = [ordered]@{}
|
||||
foreach ($pn in $KNOWN_FORM_PROPS) {
|
||||
$v = Get-Child $root $pn
|
||||
|
||||
@@ -67,6 +67,12 @@
|
||||
| `height` | `<Height>` | число |
|
||||
| `group` | `<Group>` | `Vertical`, `Horizontal`, `AlwaysHorizontal`, `AlwaysVertical` |
|
||||
| `useForFoldersAndItems` | `<UseForFoldersAndItems>` | `Folders`, `Items`, `FoldersAndItems` |
|
||||
| `reportResult` | `<ReportResult>` | Имя реквизита-результата (форма отчёта) |
|
||||
| `detailsData` | `<DetailsData>` | Имя реквизита данных расшифровки (форма отчёта) |
|
||||
| `reportFormType` | `<ReportFormType>` | `Main`, `Settings`, `Variant` |
|
||||
| `autoShowState` | `<AutoShowState>` | `Auto`, `DontShow`, `ShowOnComposition` |
|
||||
| `reportResultViewMode` | `<ReportResultViewMode>` | `Auto` |
|
||||
| `viewModeApplicationOnSetReportResult` | `<ViewModeApplicationOnSetReportResult>` | `Auto` |
|
||||
|
||||
Нераспознанные ключи преобразуются с автоматическим PascalCase (первая буква в верхний регистр).
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
"elements": [
|
||||
{ "cmdBar": "Панель", "horizontalLocation": "right", "children": [
|
||||
{ "button": "Выполнить", "command": "Выполнить", "defaultButton": true },
|
||||
{ "button": "Закрыть", "stdCommand": "Close" }
|
||||
{ "button": "Закрыть", "stdCommand": "Close", "representationInContextMenu": "None" }
|
||||
]},
|
||||
{ "input": "Результат", "path": "Результат", "multiLine": true, "height": 8, "readOnly": true }
|
||||
],
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
"title": "Группы",
|
||||
"elements": [
|
||||
{ "cmdBar": "КоманднаяПанель", "autofill": true },
|
||||
{ "group": "horizontal", "name": "ГруппаШапка", "behavior": "usual", "showTitle": true, "title": "Шапка", "horizontalStretch": true, "groupHorizontalAlign": "Right", "throughAlign": "Use", "verticalAlign": "Top", "childItemsWidth": "Equal", "children": [
|
||||
{ "group": "horizontal", "name": "ГруппаШапка", "behavior": "usual", "showTitle": true, "title": "Шапка", "horizontalStretch": true, "groupHorizontalAlign": "Right", "throughAlign": "Use", "verticalAlign": "Top", "childItemsWidth": "Equal", "horizontalSpacing": "None", "children": [
|
||||
{ "input": "Поле1", "path": "Поле1", "title": "Поле 1", "width": 20, "skipOnInput": true, "mask": "999-999" },
|
||||
{ "input": "Поле2", "path": "Поле2", "title": "Поле 2" },
|
||||
{ "labelField": "Метка", "path": "Поле1", "groupVerticalAlign": "Center" }
|
||||
|
||||
+1
@@ -36,6 +36,7 @@
|
||||
<Button name="Закрыть" id="5">
|
||||
<Type>CommandBarButton</Type>
|
||||
<CommandName>Form.StandardCommand.Close</CommandName>
|
||||
<RepresentationInContextMenu>None</RepresentationInContextMenu>
|
||||
<ExtendedTooltip name="ЗакрытьРасширеннаяПодсказка" id="6"/>
|
||||
</Button>
|
||||
</ChildItems>
|
||||
|
||||
+1
@@ -29,6 +29,7 @@
|
||||
<VerticalAlign>Top</VerticalAlign>
|
||||
<ThroughAlign>Use</ThroughAlign>
|
||||
<ChildItemsWidth>Equal</ChildItemsWidth>
|
||||
<HorizontalSpacing>None</HorizontalSpacing>
|
||||
<ExtendedTooltip name="ГруппаШапкаРасширеннаяПодсказка" id="4"/>
|
||||
<ChildItems>
|
||||
<InputField name="Поле1" id="5">
|
||||
|
||||
+1
@@ -21,6 +21,7 @@
|
||||
<ViewStatusLocation>None</ViewStatusLocation>
|
||||
<SearchControlLocation>None</SearchControlLocation>
|
||||
<Height>80</Height>
|
||||
<SettingsNamedItemDetailedRepresentation>false</SettingsNamedItemDetailedRepresentation>
|
||||
<CommandSet>
|
||||
<ExcludedCommand>Add</ExcludedCommand>
|
||||
<ExcludedCommand>Delete</ExcludedCommand>
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
"input": {
|
||||
"title": "Просмотр данных",
|
||||
"elements": [
|
||||
{ "table": "Данные", "path": "Данные", "changeRowSet": true, "titleLocation": "top", "height": 80, "heightInTableRows": 5, "autofill": true, "multipleChoice": true, "searchOnInput": "Use", "markIncomplete": true,
|
||||
{ "table": "Данные", "path": "Данные", "changeRowSet": true, "titleLocation": "top", "height": 80, "heightInTableRows": 5, "autofill": true, "multipleChoice": true, "searchOnInput": "Use", "markIncomplete": true, "settingsNamedItemDetailedRepresentation": false,
|
||||
"viewStatusLocation": "None", "searchControlLocation": "None",
|
||||
"excludedCommands": ["Add", "Delete", "MoveUp", "MoveDown"],
|
||||
"commandBar": { "autofill": false, "children": [
|
||||
|
||||
Reference in New Issue
Block a user