Files
cc-1c-skills/tests/skills/cases/form-compile/special-fields.json
T
Nick Shirokov 7905615091 feat(form-decompile,form-compile): спец-поля документ/датчик из ring-3 (SpreadSheet/HTML/Text/Formatted/ProgressBar/TrackBar)
Кластер ring-3: 6 листовых полей-«документ/датчик» больше не валят
декомпилятор в fast-fail. По корпусу SpreadSheetDocumentField — 21% форм
(самый массовый триггер ring-3), обгоняет CommandInterface.

Декомпилятор: +ELEMENT_KEY, общий Decompile-SimpleField (скелет поля) +
Add-GaugeScalars (числовые min/max/шаги без xsi:type — ≠ типизированных
input). Типоспец. enum/bool скаляры — через GENERIC_SCALARS.
enableDrag/enableStartDrag — фактическое значение (платформа эмитит явный
false на SS; заодно покрыло не-дин-список таблицы). Форменные ScalingMode/
VerticalSpacing → KNOWN_FORM_PROPS.

Компилятор(+py байт-в-байт): тип-ключи spreadsheet/html/textDoc/formattedDoc/
progressBar/trackBar + синонимы (XML-имя/рус), общий Emit-SimpleField,
GENERIC_SCALARS (output/protection/scrollbars/viewScalingMode/show*/…).

Спец-типы реквизитов с локальным xmlns на <v8:Type> (mxl:SpreadsheetDocument
7387, fd:FormattedDocument, d5p1:TextDocument/Chart/GanttChart/Flowchart/Geo/
DataAnalysis, pdfdoc:PDFDocument, pl:Planner) — резолв по полному значению
типа (префикс d5p1 неоднозначен).

Выборка 2.17: ring3 61→37 (−24 формы), match 156→166, 0 dec/compile-fail.
Кейс special-fields (все 6 типов + спец-типы) сертифицирован загрузкой в 1С.
Регресс 40/40 (ps1+py).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 19:25:12 +03:00

37 lines
2.4 KiB
JSON

{
"name": "Форма со спец-полями (документ/датчик)",
"preRun": [
{
"script": "meta-compile/scripts/meta-compile",
"input": { "type": "DataProcessor", "name": "СпецПоля" },
"args": { "-JsonPath": "{inputFile}", "-OutputDir": "{workDir}" }
},
{
"script": "form-add/scripts/form-add",
"args": { "-ObjectPath": "{workDir}/DataProcessors/СпецПоля.xml", "-FormName": "Форма" }
}
],
"params": { "outputPath": "DataProcessors/СпецПоля/Forms/Форма/Ext/Form.xml" },
"validatePath": "DataProcessors/СпецПоля/Forms/Форма/Ext/Form.xml",
"input": {
"title": "Спец-поля",
"elements": [
{ "spreadsheet": "ТаблицаОтчета", "path": "ТаблицаОтчета", "titleLocation": "none", "readOnly": true, "verticalScrollBar": "true", "horizontalScrollBar": "true", "viewScalingMode": "Normal", "output": "Disable", "protection": true, "showGrid": false, "showHeaders": false, "enableDrag": false, "enableStartDrag": false },
{ "formattedDoc": "Описание", "path": "Описание", "titleLocation": "none", "readOnly": true, "editMode": "EnterOnInput" },
{ "html": "Содержимое", "path": "Содержимое", "titleLocation": "none", "width": 37, "horizontalStretch": false, "output": "Enable", "warningOnEditRepresentation": "DontShow" },
{ "textDoc": "ТекстXML", "path": "ТекстXML", "titleLocation": "none", "readOnly": true, "width": 56 },
{ "progressBar": "Прогресс", "path": "ПроцентВыполнения", "titleLocation": "none", "showPercent": true, "maxValue": 10000, "width": 30 },
{ "trackBar": "Масштаб", "path": "Масштаб", "titleLocation": "none", "minValue": 20, "maxValue": 400, "largeStep": 5, "markingStep": 20, "markingAppearance": "TopLeft", "width": 50 }
],
"attributes": [
{ "name": "Объект", "type": "DataProcessorObject.СпецПоля", "main": true },
{ "name": "ТаблицаОтчета", "type": "mxl:SpreadsheetDocument" },
{ "name": "Описание", "type": "fd:FormattedDocument" },
{ "name": "Содержимое", "type": "string" },
{ "name": "ТекстXML", "type": "d5p1:TextDocument" },
{ "name": "ПроцентВыполнения", "type": "decimal(5,2,nonneg)" },
{ "name": "Масштаб", "type": "decimal(10,0)" }
]
}
}