diff --git a/.claude/skills/form-compile/scripts/form-compile.ps1 b/.claude/skills/form-compile/scripts/form-compile.ps1 index 5b09f4e0..f18570ec 100644 --- a/.claude/skills/form-compile/scripts/form-compile.ps1 +++ b/.claude/skills/form-compile/scripts/form-compile.ps1 @@ -1,4 +1,4 @@ -# form-compile v1.62 — Compile 1C managed form from JSON or object metadata +# form-compile v1.63 — Compile 1C managed form from JSON or object metadata # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [string]$JsonPath, @@ -2464,7 +2464,7 @@ function Emit-Element { # button-specific "type"=1;"command"=1;"commandName"=1;"stdCommand"=1;"defaultButton"=1;"locationInCommandBar"=1 # picture/decoration - "src"=1;"valuesPicture"=1;"loadTransparent"=1 + "src"=1;"valuesPicture"=1;"loadTransparent"=1;"headerPicture"=1;"footerPicture"=1 # cmdBar-specific "autofill"=1 } @@ -2558,6 +2558,49 @@ function Emit-CommonElementProps { if ($el.headerHorizontalAlign) { X "$indent$($el.headerHorizontalAlign)" } } +# Картинка-ссылка с прозрачностью (HeaderPicture/FooterPicture/ValuesPicture). +# Платформа ВСЕГДА эмитит → пишем всегда (false по умолчанию). +# Значение: скаляр (Ref) ИЛИ объект {src, loadTransparent}. +function Emit-PictureRef { + param($val, [string]$picTag, [string]$indent) + if (-not $val) { return } + $src = $null; $lt = $false + if ($val -is [string]) { $src = $val } + else { $src = $val.src; if ($val.loadTransparent -eq $true) { $lt = $true } } + if (-not $src) { return } + X "$indent<$picTag>" + X "$indent`t$src" + X "$indent`t$(if ($lt) { 'true' } else { 'false' })" + X "$indent" +} + +# Картинки заголовка/подвала колонки поля — по схеме сразу после , +# перед тип-специфичными элементами и layout (порядок XDTO строгий именно здесь). +function Emit-ColumnPics { + param($el, [string]$indent) + Emit-PictureRef -val $el.headerPicture -picTag 'HeaderPicture' -indent $indent + Emit-PictureRef -val $el.footerPicture -picTag 'FooterPicture' -indent $indent +} + +# кнопки/попапа/команды. Дефолт LoadTransparent=true, отклонение false +# (обратная конвенция относительно header/values-картинок). Прощающий ввод: +# принимает скаляр (Ref) ИЛИ объект {src, loadTransparent} — на случай если модель +# опишет картинку объектно по аналогии с headerPicture. $elemLt — legacy +# элемент-уровневый ключ loadTransparent (используется, если в объекте флаг не задан). +function Emit-CommandPicture { + param($pic, $elemLt, [string]$indent) + if (-not $pic) { return } + $src = $null; $lt = $null + if ($pic -is [string]) { $src = $pic } + else { $src = $pic.src; if ($null -ne $pic.loadTransparent) { $lt = [bool]$pic.loadTransparent } } + if (-not $src) { return } + if ($null -eq $lt -and $null -ne $elemLt) { $lt = [bool]$elemLt } + X "$indent" + X "$indent`t$src" + X "$indent`t$(if ($lt -eq $false) { 'false' } else { 'true' })" + X "$indent" +} + function Emit-Layout { param($el, [string]$indent, [switch]$skipHeight, [bool]$multiLineDefault = $false) Emit-CommonElementProps -el $el -indent $indent @@ -2777,6 +2820,7 @@ function Emit-Input { if ($el.dropListButton -eq $true) { X "$innertrue" } if ($el.markIncomplete -eq $true) { X "$innertrue" } if ($el.editMode) { X "$inner$($el.editMode)" } + Emit-ColumnPics -el $el -indent $inner if ($el.textEdit -eq $false) { X "$innerfalse" } # InputField-специфичные скаляры (захват «как есть»: платформа эмитит явное не-дефолтное значение) foreach ($p in @( @@ -2815,6 +2859,7 @@ function Emit-Check { Emit-CommonFlags -el $el -indent $inner if ($el.editMode) { X "$inner$($el.editMode)" } + Emit-ColumnPics -el $el -indent $inner # CheckBoxType: нет ключа → умный дефолт Auto; "" → подавить; значение → маппинг if ($null -ne $el.PSObject.Properties['checkBoxType']) { if ($el.checkBoxType) { @@ -3117,6 +3162,7 @@ function Emit-LabelField { if ($el.titleLocation) { X "$inner$(Map-TitleLoc "$($el.titleLocation)")" } if ($el.editMode) { X "$inner$($el.editMode)" } + Emit-ColumnPics -el $el -indent $inner # ВНИМАНИЕ: у LabelField платформенный тег именно (опечатка 1С), не . if ($el.hyperlink -eq $true) { X "$innertrue" } Emit-Layout -el $el -indent $inner @@ -3398,12 +3444,7 @@ function Emit-Button { if ($el.defaultButton -eq $true) { X "$innertrue" } # Picture - if ($el.picture) { - X "$inner" - X "$inner`t$($el.picture)" - X "$inner`t$(if ($el.loadTransparent -eq $false){'false'}else{'true'})" - X "$inner" - } + Emit-CommandPicture -pic $el.picture -elemLt $el.loadTransparent -indent $inner if ($el.representation) { X "$inner$($el.representation)" @@ -3463,19 +3504,16 @@ function Emit-PictureField { Emit-Title -el $el -name $name -indent $inner Emit-CommonFlags -el $el -indent $inner + if ($el.editMode) { X "$inner$($el.editMode)" } + Emit-ColumnPics -el $el -indent $inner if ($el.titleLocation) { X "$inner$(Map-TitleLoc "$($el.titleLocation)")" } + Emit-Layout -el $el -indent $inner + # ValuesPicture — picture (collection) used to render the field's value. # Required for a Boolean-bound PictureField to actually show an icon. - # loadTransparent emitted only when true (1С default is false). - if ($el.valuesPicture) { - X "$inner" - X "$inner`t$($el.valuesPicture)" - if ($el.loadTransparent) { X "$inner`ttrue" } - X "$inner" - } - - Emit-Layout -el $el -indent $inner + # Скаляр (Ref) или объект {src, loadTransparent}; LoadTransparent эмитится всегда. + Emit-PictureRef -val $el.valuesPicture -picTag 'ValuesPicture' -indent $inner # Companions Emit-CompanionPanel -tag "ContextMenu" -name "${name}КонтекстноеМеню" -indent $inner -panel $el.contextMenu @@ -3597,12 +3635,7 @@ function Emit-Popup { Emit-Title -el $el -name $name -indent $inner -auto Emit-CommonFlags -el $el -indent $inner - if ($el.picture) { - X "$inner" - X "$inner`t$($el.picture)" - X "$inner`t$(if ($el.loadTransparent -eq $false){'false'}else{'true'})" - X "$inner" - } + Emit-CommandPicture -pic $el.picture -elemLt $el.loadTransparent -indent $inner if ($el.representation) { X "$inner$($el.representation)" @@ -3855,12 +3888,7 @@ function Emit-Commands { X "$inner$($cmd.shortcut)" } - if ($cmd.picture) { - X "$inner" - X "$inner`t$($cmd.picture)" - X "$inner`t$(if ($cmd.loadTransparent -eq $false){'false'}else{'true'})" - X "$inner" - } + Emit-CommandPicture -pic $cmd.picture -elemLt $cmd.loadTransparent -indent $inner if ($cmd.representation) { X "$inner$($cmd.representation)" diff --git a/.claude/skills/form-compile/scripts/form-compile.py b/.claude/skills/form-compile/scripts/form-compile.py index 0e14f3af..52f17dc4 100644 --- a/.claude/skills/form-compile/scripts/form-compile.py +++ b/.claude/skills/form-compile/scripts/form-compile.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# form-compile v1.62 — Compile 1C managed form from JSON or object metadata +# form-compile v1.63 — Compile 1C managed form from JSON or object metadata # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse import copy @@ -1784,7 +1784,7 @@ KNOWN_KEYS = { "pagesRepresentation", "type", "command", "commandName", "stdCommand", "defaultButton", "locationInCommandBar", "commandBar", "contextMenu", "commandSource", - "src", "valuesPicture", "loadTransparent", + "src", "valuesPicture", "loadTransparent", "headerPicture", "footerPicture", "autofill", "choiceMode", "initialTreeView", "enableDrag", "enableStartDrag", "rowSelectionMode", "verticalLines", "horizontalLines", @@ -2215,6 +2215,57 @@ def emit_common_element_props(lines, el, indent): lines.append(f"{indent}{el['headerHorizontalAlign']}") +def emit_picture_ref(lines, val, pic_tag, indent): + """Картинка-ссылка с прозрачностью (HeaderPicture/FooterPicture/ValuesPicture). + Платформа ВСЕГДА эмитит → пишем всегда (false по умолчанию). + Значение: скаляр (Ref) ИЛИ объект {src, loadTransparent}.""" + if not val: + return + if isinstance(val, str): + src, lt = val, False + else: + src = val.get('src') + lt = val.get('loadTransparent') is True + if not src: + return + lines.append(f"{indent}<{pic_tag}>") + lines.append(f"{indent}\t{src}") + lines.append(f'{indent}\t{"true" if lt else "false"}') + lines.append(f"{indent}") + + +def emit_column_pics(lines, el, indent): + """Картинки заголовка/подвала колонки поля — по схеме сразу после , + перед тип-специфичными элементами и layout (порядок XDTO строгий именно здесь).""" + emit_picture_ref(lines, el.get('headerPicture'), 'HeaderPicture', indent) + emit_picture_ref(lines, el.get('footerPicture'), 'FooterPicture', indent) + + +def emit_command_picture(lines, pic, elem_lt, indent): + """ кнопки/попапа/команды. Дефолт LoadTransparent=true, отклонение false + (обратная конвенция относительно header/values-картинок). Прощающий ввод: + принимает скаляр (Ref) ИЛИ объект {src, loadTransparent} — на случай если модель + опишет картинку объектно по аналогии с headerPicture. elem_lt — legacy + элемент-уровневый ключ loadTransparent (если в объекте флаг не задан).""" + if not pic: + return + lt = None + if isinstance(pic, str): + src = pic + else: + src = pic.get('src') + if pic.get('loadTransparent') is not None: + lt = bool(pic.get('loadTransparent')) + if not src: + return + if lt is None and elem_lt is not None: + lt = bool(elem_lt) + lines.append(f'{indent}') + lines.append(f'{indent}\t{src}') + lines.append(f'{indent}\t{"false" if lt is False else "true"}') + lines.append(f'{indent}') + + def emit_layout(lines, el, indent, skip_height=False, multi_line_default=False): # Общие layout-свойства — применимы ко всем элементам. Порядок согласован # с историческим выводом input/label, чтобы не сдвигать существующие снапшоты. @@ -2684,6 +2735,7 @@ def emit_input(lines, el, name, eid, indent): lines.append(f'{inner}true') if el.get('editMode'): lines.append(f'{inner}{el["editMode"]}') + emit_column_pics(lines, el, inner) if el.get('textEdit') is False: lines.append(f'{inner}false') # InputField-специфичные скаляры (захват «как есть»: платформа эмитит явное не-дефолтное значение) @@ -2721,6 +2773,7 @@ def emit_check(lines, el, name, eid, indent): if el.get('editMode'): lines.append(f'{inner}{el["editMode"]}') + emit_column_pics(lines, el, inner) # CheckBoxType: нет ключа → умный дефолт Auto; "" → подавить; значение → маппинг _cbt_map = {'auto': 'Auto', 'checkbox': 'CheckBox', 'switcher': 'Switcher', 'tumbler': 'Tumbler'} if 'checkBoxType' in el: @@ -2825,6 +2878,7 @@ def emit_label_field(lines, el, name, eid, indent): lines.append(f'{inner}{map_title_loc(el["titleLocation"])}') if el.get('editMode'): lines.append(f'{inner}{el["editMode"]}') + emit_column_pics(lines, el, inner) # ВНИМАНИЕ: у LabelField платформенный тег (опечатка 1С), не . if el.get('hyperlink') is True: lines.append(f'{inner}true') @@ -3096,11 +3150,7 @@ def emit_button(lines, el, name, eid, indent, in_cmd_bar=False): lines.append(f'{inner}true') # Picture - if el.get('picture'): - lines.append(f'{inner}') - lines.append(f'{inner}\t{el["picture"]}') - lines.append(f'{inner}\t{"false" if el.get("loadTransparent") is False else "true"}') - lines.append(f'{inner}') + emit_command_picture(lines, el.get('picture'), el.get('loadTransparent'), inner) if el.get('representation'): lines.append(f'{inner}{el["representation"]}') @@ -3155,20 +3205,18 @@ def emit_picture_field(lines, el, name, eid, indent): emit_title(lines, el, name, inner) emit_common_flags(lines, el, inner) + if el.get('editMode'): + lines.append(f'{inner}{el["editMode"]}') + emit_column_pics(lines, el, inner) if el.get('titleLocation'): lines.append(f'{inner}{map_title_loc(el["titleLocation"])}') + emit_layout(lines, el, inner) + # ValuesPicture \u2014 picture (collection) used to render the field's value. # Required for a Boolean-bound PictureField to actually show an icon. - # loadTransparent emitted only when true (1\u0421 default is false). - if el.get('valuesPicture'): - lines.append(f'{inner}') - lines.append(f'{inner}\t{el["valuesPicture"]}') - if el.get('loadTransparent'): - lines.append(f'{inner}\ttrue') - lines.append(f'{inner}') - - emit_layout(lines, el, inner) + # \u0421\u043a\u0430\u043b\u044f\u0440 (Ref) \u0438\u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442 {src, loadTransparent}; LoadTransparent \u044d\u043c\u0438\u0442\u0438\u0442\u0441\u044f \u0432\u0441\u0435\u0433\u0434\u0430. + emit_picture_ref(lines, el.get('valuesPicture'), 'ValuesPicture', inner) # Companions emit_companion_panel(lines, 'ContextMenu', f'{name}\u041a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u043e\u0435\u041c\u0435\u043d\u044e', inner, el.get('contextMenu')) @@ -3250,11 +3298,7 @@ def emit_popup(lines, el, name, eid, indent): emit_title(lines, el, name, inner, auto=True) emit_common_flags(lines, el, inner) - if el.get('picture'): - lines.append(f'{inner}') - lines.append(f'{inner}\t{el["picture"]}') - lines.append(f'{inner}\t{"false" if el.get("loadTransparent") is False else "true"}') - lines.append(f'{inner}') + emit_command_picture(lines, el.get('picture'), el.get('loadTransparent'), inner) if el.get('representation'): lines.append(f'{inner}{el["representation"]}') @@ -3510,11 +3554,7 @@ def emit_commands(lines, cmds, indent): if cmd.get('shortcut'): lines.append(f'{inner}{cmd["shortcut"]}') - if cmd.get('picture'): - lines.append(f'{inner}') - lines.append(f'{inner}\t{cmd["picture"]}') - lines.append(f'{inner}\t{"false" if cmd.get("loadTransparent") is False else "true"}') - lines.append(f'{inner}') + emit_command_picture(lines, cmd.get('picture'), cmd.get('loadTransparent'), inner) if cmd.get('representation'): lines.append(f'{inner}{cmd["representation"]}') diff --git a/.claude/skills/form-decompile/scripts/form-decompile.ps1 b/.claude/skills/form-decompile/scripts/form-decompile.ps1 index 39429da6..6a512a7d 100644 --- a/.claude/skills/form-decompile/scripts/form-decompile.ps1 +++ b/.claude/skills/form-decompile/scripts/form-decompile.ps1 @@ -1,4 +1,4 @@ -# form-decompile v0.44 — Decompile 1C managed Form.xml to JSON DSL (draft) +# form-decompile v0.45 — Decompile 1C managed Form.xml to JSON DSL (draft) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills # ВНИМАНИЕ: раундтрип не гарантируется. Навык исключён из авто-использования моделью. param( @@ -853,6 +853,20 @@ function Decompile-AttrColumn { } # Общие свойства элемента (visible/enabled/readonly/title/events) → в hash +# Картинка-ссылка с прозрачностью (HeaderPicture/FooterPicture/ValuesPicture). +# Платформа ВСЕГДА эмитит (и true, и false) → дефолт DSL = false. +# Скаляр (Ref) при loadTransparent=false; объект {src,loadTransparent:true} при true. +function Get-PictureRef { + param($node, [string]$picTag) + $ref = $node.SelectSingleNode("lf:$picTag/xr:Ref", $ns) + if (-not $ref) { return $null } + $lt = $node.SelectSingleNode("lf:$picTag/xr:LoadTransparent", $ns) + if ($lt -and $lt.InnerText -eq 'true') { + return [ordered]@{ src = $ref.InnerText; loadTransparent = $true } + } + return $ref.InnerText +} + function Add-CommonProps { param($obj, $node, [string]$elName) if ((Get-Child $node 'Visible') -eq 'false') { $obj['hidden'] = $true } @@ -868,6 +882,9 @@ function Add-CommonProps { $ttNode = $node.SelectSingleNode("lf:ToolTip", $ns) if ($ttNode) { $tt = Get-LangText $ttNode; if ($null -ne $tt) { $obj['tooltip'] = $tt } } $ttr = Get-Child $node 'ToolTipRepresentation'; if ($ttr) { $obj['tooltipRepresentation'] = $ttr } + # Картинки заголовка/подвала колонки (любой field-тип, эмитятся платформой как column header/footer icon) + $hp = Get-PictureRef $node 'HeaderPicture'; if ($null -ne $hp) { $obj['headerPicture'] = $hp } + $fp = Get-PictureRef $node 'FooterPicture'; if ($null -ne $fp) { $obj['footerPicture'] = $fp } $ev = Get-Events $node $elName if ($ev) { $obj['events'] = $ev } } @@ -1121,8 +1138,9 @@ function Decompile-Element { $obj[$key] = $name $dp = Get-Child $node 'DataPath'; if ($dp) { $obj['path'] = $dp } Add-CommonProps $obj $node $name + $em = Get-Child $node 'EditMode'; if ($em) { $obj['editMode'] = $em } $tl = Get-Child $node 'TitleLocation'; if ($tl) { $obj['titleLocation'] = $tl.ToLower() } - $ref = $node.SelectSingleNode("lf:ValuesPicture/xr:Ref", $ns); if ($ref) { $obj['valuesPicture'] = $ref.InnerText } + $vp = Get-PictureRef $node 'ValuesPicture'; if ($null -ne $vp) { $obj['valuesPicture'] = $vp } } 'CalendarField' { $obj[$key] = $name diff --git a/docs/form-dsl-spec.md b/docs/form-dsl-spec.md index 2188da73..b541704a 100644 --- a/docs/form-dsl-spec.md +++ b/docs/form-dsl-spec.md @@ -221,8 +221,24 @@ companion-панели с собственным контентом. Оба не | `autoCellHeight` | `` | bool — авто-высота ячейки | | `footerHorizontalAlign` | `` | `Left`/`Right`/`Center` | | `headerHorizontalAlign` | `` | `Left`/`Right`/`Center`/`Auto` | +| `headerPicture` | `` | Картинка в шапке колонки. Формат — см. «Картинка-ссылка» ниже | +| `footerPicture` | `` | Картинка в подвале колонки. Формат — см. «Картинка-ссылка» ниже | -> `defaultItem`/`enableStartDrag`/`fileDragMode`/`skipOnInput` + cell-свойства (`showInHeader`/`showInFooter`/`autoCellHeight`/`footerHorizontalAlign`/`headerHorizontalAlign`) — общие для любого поля-колонки (input, label, picField, check). +> `defaultItem`/`enableStartDrag`/`fileDragMode`/`skipOnInput` + cell-свойства (`showInHeader`/`showInFooter`/`autoCellHeight`/`footerHorizontalAlign`/`headerHorizontalAlign`/`headerPicture`/`footerPicture`) — общие для любого поля-колонки (input, label, picField, check). + +#### Картинка-ссылка (`headerPicture`/`footerPicture`/`valuesPicture`) + +Картинка с флагом прозрачности. Два формата: + +```json +"headerPicture": "CommonPicture.Важность" // loadTransparent = false (частый случай) +"headerPicture": { "src": "StdPicture.ExecuteTask", "loadTransparent": true } // отклонение +``` + +- скаляр-строка — ссылка `StdPicture.*`/`CommonPicture.*`, `loadTransparent=false` (дефолт по корпусу: ~64% картинок); +- объект `{ src, loadTransparent: true }` — только когда нужен `true` (объектная форма существует ровно ради этого отклонения; флаг привязан к конкретной картинке, т.к. на одном поле их бывает несколько). + +> Не путать с `loadTransparent` у `` кнопки/команды/попапа (§«button»/§7) — там обратная конвенция (дефолт `true`, отдельный скаляр-ключ на элементе). ### 4.2. События элемента и автоименование обработчиков @@ -499,8 +515,8 @@ Pages поддерживает `pagesRepresentation`: `None`, `TabsOnTop`, `Tabs | `stdCommand` | string | Стандартная команда (→ `Form.StandardCommand.`; `X.Y` → `Form.Item.X.StandardCommand.Y`) | | `type` | string | `usual`, `hyperlink`, `commandBar` | | `defaultButton` | bool | Кнопка по умолчанию | -| `picture` | string | Ссылка на картинку (`StdPicture.Name`) | -| `loadTransparent` | bool | Загружать картинку прозрачной (у `` кнопки/команды/попапа). **Дефолт `true`** (эмитится всегда; `false` — явно). Также у `command` (§7) и `popup` | +| `picture` | string \| object | Ссылка на картинку (`StdPicture.Name`). Скаляр-строка ИЛИ объект `{src, loadTransparent}` (прощающий ввод — флаг можно задать прямо в объекте) | +| `loadTransparent` | bool | Загружать картинку прозрачной (у `` кнопки/команды/попапа). **Дефолт `true`** (эмитится всегда; `false` — явно). Элемент-уровневый ключ ИЛИ поле объекта `picture`. Также у `command` (§7) и `popup`. ⚠️ Полярность обратна `headerPicture`/`valuesPicture` (там дефолт `false`, см. §4.1) | | `path` | string | DataPath кнопки общей команды (`Объект.Ref`, `Items.X.CurrentData.Поле`) — привязка к контексту | | `representation` | string | `Auto`, `Picture`, `Text`, `PictureAndText` | | `locationInCommandBar` | string | `InCommandBar`, `InAdditionalSubmenu` | @@ -529,13 +545,13 @@ Pages поддерживает `pagesRepresentation`: `None`, `TabsOnTop`, `Tabs ```json { "picField": "Картинка", "path": "Таблица.Картинка", - "valuesPicture": "StdPicture.Favorites", "loadTransparent": true } + "valuesPicture": "StdPicture.FilterCriterion" } ``` | Свойство | Тип | Описание | |----------|-----|----------| -| `valuesPicture` | string | Ссылка на картинку значения (`StdPicture.*`, `CommonPicture.*`) | -| `loadTransparent` | bool | Скрыть кадр «нет значения». Выводится только при `true` | +| `valuesPicture` | string \| object | Картинка значения. Формат картинки-ссылки — см. §4.1 «Картинка-ссылка» | +| `editMode` | string | Режим редактирования колонки (`EnterOnInput` и т.п.) | #### calendar — CalendarField diff --git a/tests/skills/cases/form-compile/picture-field.json b/tests/skills/cases/form-compile/picture-field.json index b84f89e9..c5507cc7 100644 --- a/tests/skills/cases/form-compile/picture-field.json +++ b/tests/skills/cases/form-compile/picture-field.json @@ -20,8 +20,8 @@ "on": ["Selection"], "handlers": { "Selection": "ТаблицаДанныхВыбор" }, "columns": [ { "input": "ТаблицаДанныхНоменклатура", "path": "ТаблицаДанных.Номенклатура" }, - { "picField": "ТаблицаДанныхКартинка", "path": "ТаблицаДанных.Картинка", "titleLocation": "none", "valuesPicture": "StdPicture.Favorites", "loadTransparent": true }, - { "check": "ТаблицаДанныхКартинкаФлаг", "path": "ТаблицаДанных.Картинка", "title": "Флаг" } + { "picField": "ТаблицаДанныхКартинка", "path": "ТаблицаДанных.Картинка", "titleLocation": "none", "editMode": "EnterOnInput", "headerPicture": "StdPicture.ExecuteTask", "valuesPicture": { "src": "StdPicture.FilterCriterion", "loadTransparent": true } }, + { "check": "ТаблицаДанныхКартинкаФлаг", "path": "ТаблицаДанных.Картинка", "title": "Флаг", "headerPicture": { "src": "StdPicture.ClearFilter", "loadTransparent": true } } ]} ], "attributes": [ diff --git a/tests/skills/cases/form-compile/snapshots/picture-field/DataProcessors/КартинкаВСтроке/Forms/Форма/Ext/Form.xml b/tests/skills/cases/form-compile/snapshots/picture-field/DataProcessors/КартинкаВСтроке/Forms/Форма/Ext/Form.xml index 43686a25..21846689 100644 --- a/tests/skills/cases/form-compile/snapshots/picture-field/DataProcessors/КартинкаВСтроке/Forms/Форма/Ext/Form.xml +++ b/tests/skills/cases/form-compile/snapshots/picture-field/DataProcessors/КартинкаВСтроке/Forms/Форма/Ext/Form.xml @@ -46,9 +46,14 @@ ТаблицаДанных.Картинка + EnterOnInput + + StdPicture.ExecuteTask + false + None - StdPicture.Favorites + StdPicture.FilterCriterion true @@ -62,6 +67,10 @@ Флаг + + StdPicture.ClearFilter + true + Auto Right