Files
cc-1c-skills/tests/skills/cases/meta-compile/catalog-command.json
T
Nick Shirokov 1212cbd9ed feat(meta-compile,meta-decompile): Command>Picture — структурный блок (v1.29/v0.20)
Ключ `picture` команды компилятор писал плоской строкой, склеивая содержимое
структурного блока: <Picture><xr:Ref>CommonPicture.X</xr:Ref>
<xr:LoadTransparent>false</xr:LoadTransparent></Picture> → «CommonPicture.Xfalse»
(декомпилятор брал .InnerText всего блока). Багофикс формы значения.

Зеркало form-compile/form-decompile:
  • picture — строка-ref (StdPicture.X / CommonPicture.X; встроенная abs: → <xr:Abs>)
    + sibling `loadTransparent` (дефолт true, конвенция кнопки/команды — фиксируем
    только false) ЛИБО объект {src, loadTransparent?, transparentPixel?}.
  • Emit-CommandPicture (компилятор) + структурный захват в декомпиляторе.
Структура {Ref, LoadTransparent} стабильна на корпусе (40/40, Std/CommonPicture).

Попутно (вскрыто roundtrip-сверкой ps1↔py): в py object-form реквизита список
flags не лоуэркейзился (в отличие от строкового пути), из-за чего декомпиляторный
`indexAdditional` не матчил `indexadditional` — PS -contains регистронезависим, а
py `in` нет → py писал DontIndex вместо IndexWithAdditionalOrder. Фикс зеркалит
строковый путь.

Роундтрип 120 объектов: match 94→95, TOTAL 183→158 (−25), Command>Picture=0,
новых diff нет. Регресс 46/46 ps1+py, ps1↔py identical. spec §7.1.3, кейс
catalog-command (3 формы picture: строка/loadTransparent:false/объект+transparentPixel).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 14:48:20 +03:00

30 lines
1.1 KiB
JSON

{
"name": "Справочник с командой",
"input": {
"type": "Catalog", "name": "Номенклатура",
"commands": {
"ПечатьЭтикеток": {
"synonym": { "ru": "Печать этикеток", "en": "Print labels" },
"group": "FormCommandBarImportant",
"commandParameterType": "CatalogRef.Номенклатура",
"parameterUseMode": "Multiple",
"modifiesData": true,
"tooltip": "Печать этикеток для выбранных товаров",
"picture": "StdPicture.Print"
},
"ЗагрузитьИзФайла": {
"synonym": "Загрузить из файла",
"picture": "CommonPicture.Загрузка",
"loadTransparent": false
},
"ОбновитьСписок": {
"picture": { "src": "StdPicture.Refresh", "transparentPixel": { "x": 0, "y": 0 } }
}
}
},
"validatePath": "Catalogs/Номенклатура",
"expect": {
"files": ["Catalogs/Номенклатура.xml", "Catalogs/Номенклатура/Commands/ПечатьЭтикеток/Ext/CommandModule.bsl"]
}
}