mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-15 07:15:17 +03:00
177c9bb0fa
Компилятор хардкодил <ExtendedEdit>false</>, <MinValue nil>, <MaxValue nil> и
AllowedLength=Variable; декомпилятор эти свойства не захватывал. Реквизиты с
диапазоном (год 2000-3999, код цены 1-3), фикс-длина строки, расширенное
редактирование теряли данные при роундтрипе.
Зеркало form-compile:
• minValue/maxValue — граница диапазона, типизировано: JSON-число →
xsi:type="xs:decimal", строка → xs:string (тип сохранён декомпилятором из
XML). Хелпер Emit-MinMaxValue (применён к Emit-Attribute/Dimension/Resource).
• extendedEdit — bool (многострочное поле).
• String(N,fixed) → <v8:AllowedLength>Fixed</v8:AllowedLength> (фикс. длина);
String(N)/String(N,variable) → Variable (дефолт). Парсер типа ps1+py.
Ловушка: Parse-AttributeShorthand строит НОВЫЙ hashtable только с известными
ключами — сначала забыл добавить minValue/maxValue/extendedEdit → $parsed.minValue
был $null, компилятор молча писал nil, хотя декомпилятор значение отдавал.
Роундтрип 120: match 100→108, TOTAL 120→78 (−42), Attribute>ExtendedEdit/
MaxValue/MinValue/AllowedLength=0, новых diff нет. Регресс 46/46 ps1+py, ps1↔py
identical. spec §3.2/§4.2, кейс catalog-attr-props (+min/max/String(3,fixed)/extEdit).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
18 lines
1.1 KiB
JSON
18 lines
1.1 KiB
JSON
{
|
|
"name": "Справочник с расширенными свойствами реквизита",
|
|
"input": {
|
|
"type": "Catalog", "name": "Контрагенты", "hierarchical": true,
|
|
"attributes": [
|
|
{ "name": "ИНН", "type": "String(12)", "fullTextSearch": "DontUse", "comment": "Налоговый номер",
|
|
"mask": "999999999999", "use": "ForFolderAndItem", "fillCheck": true },
|
|
{ "name": "Курс", "type": "Number(15,4)", "format": "ЧДЦ=4", "editFormat": { "ru": "ЧДЦ=4" },
|
|
"createOnInput": "Use", "quickChoice": false, "fillFromFillingValue": true, "dataHistory": "DontUse", "passwordMode": true },
|
|
{ "name": "ГодЗаключения", "type": "Number(4,0,nonneg)", "minValue": 2000, "maxValue": 3999 },
|
|
{ "name": "КодРегиона", "type": "String(3,fixed)", "minValue": "01", "maxValue": "99" },
|
|
{ "name": "Описание", "type": "String(500)", "extendedEdit": true }
|
|
]
|
|
},
|
|
"validatePath": "Catalogs/Контрагенты",
|
|
"expect": { "files": ["Catalogs/Контрагенты.xml"] }
|
|
}
|