mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-15 07:15:17 +03:00
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>
This commit is contained in:
+14
-3
@@ -444,15 +444,26 @@ JSON DSL для описания объектов метаданных конф
|
||||
| `parameterUseMode` | ParameterUseMode | `Single` (`Single`/`Multiple`) |
|
||||
| `modifiesData` | ModifiesData | `false` (bool) |
|
||||
| `representation` | Representation | `Auto` |
|
||||
| `picture` / `shortcut` | Picture / Shortcut | пусто |
|
||||
| `picture` | Picture | пусто (структурный блок, см. ниже) |
|
||||
| `loadTransparent` | Picture/LoadTransparent | `true` (bool, sibling `picture`) |
|
||||
| `shortcut` | Shortcut | пусто |
|
||||
| `onMainServerUnavalableBehavior` | OnMainServerUnavalableBehavior | `Auto` |
|
||||
|
||||
**`picture`** — картинка команды `<Picture>` (структурный блок `<xr:Ref>`+`<xr:LoadTransparent>`, зеркало form-compile).
|
||||
Значение: строка-ref (`StdPicture.X` / `CommonPicture.X`; встроенная — префикс `abs:` → `<xr:Abs>`) ЛИБО объект
|
||||
`{src, loadTransparent?, transparentPixel?}`. LoadTransparent платформа пишет всегда, **дефолт `true`** (конвенция
|
||||
кнопки/команды) — фиксируем только `false`: строкой-ref + sibling-ключ `loadTransparent: false`, либо внутри объекта.
|
||||
`transparentPixel: {x, y}` → `<xr:TransparentPixel>`. Декомпилятор: скаляр при LoadTransparent=true без пикселя,
|
||||
иначе объект.
|
||||
|
||||
```json
|
||||
"commands": {
|
||||
"ПечатьЭтикеток": {
|
||||
"synonym": "Печать этикеток", "group": "FormCommandBarImportant",
|
||||
"commandParameterType": "CatalogRef.Номенклатура", "modifiesData": true
|
||||
}
|
||||
"commandParameterType": "CatalogRef.Номенклатура", "modifiesData": true,
|
||||
"picture": "StdPicture.Print"
|
||||
},
|
||||
"ЗагрузитьИзФайла": { "picture": "CommonPicture.Загрузка", "loadTransparent": false }
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user