diff --git a/.claude/skills/cfe-borrow/scripts/cfe-borrow.ps1 b/.claude/skills/cfe-borrow/scripts/cfe-borrow.ps1 index 21dd99350..e9ed0270c 100644 --- a/.claude/skills/cfe-borrow/scripts/cfe-borrow.ps1 +++ b/.claude/skills/cfe-borrow/scripts/cfe-borrow.ps1 @@ -1,4 +1,4 @@ -# cfe-borrow v1.38 — Borrow objects from configuration into extension (CFE) +# cfe-borrow v1.39 — Borrow objects from configuration into extension (CFE) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills [CmdletBinding(PositionalBinding=$false)] param( @@ -1043,8 +1043,8 @@ function Borrow-Form { $childItemsXml = $childItemsXml.Remove($pm.Index, $pm.Length) } } - # Strip StdPicture blocks (except Print) - $childItemsXml = [regex]::Replace($childItemsXml, '(?s)\s*\s*StdPicture\.(?!Print\b)\w+.*?', '') + # Стандартные картинки (StdPicture.*) не вырезаются: Конфигуратор оставляет их у кнопок, подменю + # и страниц в обеих частях формы (эталоны 8.3.27, 26 элементов в 3 формах). # Same Picture strip for AutoCommandBar if ($autoCmdXml) { @@ -1056,7 +1056,6 @@ function Borrow-Form { $autoCmdXml = $autoCmdXml.Remove($pm.Index, $pm.Length) } } - $autoCmdXml = [regex]::Replace($autoCmdXml, '(?s)\s*\s*StdPicture\.(?!Print\b)\w+.*?', '') } # Auto-borrow StyleItems referenced in ChildItems diff --git a/.claude/skills/cfe-borrow/scripts/cfe-borrow.py b/.claude/skills/cfe-borrow/scripts/cfe-borrow.py index af1565bfd..9a05aaafd 100644 --- a/.claude/skills/cfe-borrow/scripts/cfe-borrow.py +++ b/.claude/skills/cfe-borrow/scripts/cfe-borrow.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# cfe-borrow v1.38 — Borrow objects from configuration into extension (CFE) +# cfe-borrow v1.39 — Borrow objects from configuration into extension (CFE) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse @@ -2005,8 +2005,8 @@ def main(): cp_name = pm.group(1) if cp_name not in borrowed_pic_set: child_items_xml = child_items_xml[:pm.start()] + child_items_xml[pm.end():] - # Strip StdPicture blocks (except Print) - child_items_xml = re.sub(r'\s*\s*StdPicture\.(?!Print\b)\w+.*?', '', child_items_xml, flags=re.DOTALL) + # Стандартные картинки (StdPicture.*) не вырезаются: Конфигуратор оставляет их у кнопок, подменю + # и страниц в обеих частях формы (эталоны 8.3.27, 26 элементов в 3 формах). # Same Picture strip for AutoCommandBar if auto_cmd_xml: @@ -2015,7 +2015,6 @@ def main(): cp_name = pm.group(1) if cp_name not in borrowed_pic_set: auto_cmd_xml = auto_cmd_xml[:pm.start()] + auto_cmd_xml[pm.end():] - auto_cmd_xml = re.sub(r'\s*\s*StdPicture\.(?!Print\b)\w+.*?', '', auto_cmd_xml, flags=re.DOTALL) # Auto-borrow StyleItems referenced in ChildItems referenced_styles = set() diff --git a/docs/1c-extension-spec.md b/docs/1c-extension-spec.md index 44ba65876..7d8c9662a 100644 --- a/docs/1c-extension-spec.md +++ b/docs/1c-extension-spec.md @@ -481,14 +481,19 @@ Form.xml заимствованной формы — **двухчастный ф 8. **Events элементов: удаление** (вариант B) — все `` внутри визуальных элементов удаляются в обеих секциях. Обработчики расширения добавляются через `elementEvents` в Part 1 с `callType`. -9. **Picture stripping** (вариант B) — блоки `` с `CommonPicture.XXX` удаляются, если `CommonPicture.XXX` **не заимствован** в расширение. Сам элемент PictureDecoration остаётся, только `` убирается. `StdPicture.Print` сохраняется, остальные StdPicture удаляются. +9. **Картинки элементов** (сверено с Конфигуратором 8.3.27): + - у `PictureDecoration` блок `` удаляется в обеих секциях при любом виде картинки (`xr:Abs`, `CommonPicture`, `StdPicture`). Сам элемент остаётся; + - `StdPicture.*` у кнопок, подменю и страниц **сохраняется** в обеих секциях как есть; + - блоки `` с `CommonPicture.XXX` удаляются, только если `CommonPicture.XXX` не заимствуется (нет в конфигурации-источнике). -10. **Авто-заимствование CommonPictures** — при заимствовании формы автоматически заимствуются все CommonPictures, на которые ссылаются элементы формы. +10. **Авто-заимствование CommonPictures** — при заимствовании формы автоматически заимствуются все CommonPictures, на которые ссылаются элементы формы (картинки декораций к этому моменту уже удалены и заимствования не вызывают). 11. **Авто-заимствование StyleItems** — элементы формы ссылаются на StyleItems через `` и `style:XXX`. Все такие StyleItems должны быть заимствованы. Стандартные стили (NormalTextFont, AccentColor, FormBackColor и др.) не имеют файлов и автоматически пропускаются. 12. **Авто-заимствование Enums + EnumValues** — `` могут содержать `Enum.XXX.EnumValue.YYY`. Перечисление `Enum.XXX` заимствуется вместе с конкретными `EnumValue` (borrowed с `ExtendedConfigurationObject` указывающим на UUID оригинального значения). +13. **Файлы встроенных картинок** — ссылка `Файл` в свойстве элемента (`Picture`, `RowsPicture`, `HeaderPicture`, `ValuesPicture`) указывает на `Ext/Form/Items/<имя элемента>/<Файл>`. Файлы, на которые ссылается итоговая форма, копируются из источника байт в байт; без них платформа отвергает загрузку («Файл не найден»). Уже лежащий в расширении файл при повторном заимствовании не перезаписывается. + #### 5.5.3. Нумерация ID элементов | Диапазон | Принадлежность | diff --git a/tests/skills/cases/cfe-borrow/fixtures/form-item-pictures/Documents/Расход/Forms/ФормаДокумента/Ext/Form.xml b/tests/skills/cases/cfe-borrow/fixtures/form-item-pictures/Documents/Расход/Forms/ФормаДокумента/Ext/Form.xml index 53f3b8101..e31e66f18 100644 --- a/tests/skills/cases/cfe-borrow/fixtures/form-item-pictures/Documents/Расход/Forms/ФормаДокумента/Ext/Form.xml +++ b/tests/skills/cases/cfe-borrow/fixtures/form-item-pictures/Documents/Расход/Forms/ФормаДокумента/Ext/Form.xml @@ -26,6 +26,42 @@ + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Создать</v8:content> + </v8:item> + + + StdPicture.CreateListItem + true + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Печать</v8:content> + </v8:item> + + + StdPicture.Print + true + + + @@ -81,6 +117,24 @@ + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Настройки</v8:content> + </v8:item> + + + StdPicture.DataCompositionSettingsWizard + true + + + + + diff --git a/tests/skills/cases/cfe-borrow/form-item-pictures.json b/tests/skills/cases/cfe-borrow/form-item-pictures.json index 403364207..1bed6eb29 100644 --- a/tests/skills/cases/cfe-borrow/form-item-pictures.json +++ b/tests/skills/cases/cfe-borrow/form-item-pictures.json @@ -1,5 +1,5 @@ { - "name": "Заимствование формы: картинки кнопок, строк таблицы и поля картинки переносятся файлами, картинка декорации выбрасывается (как у Конфигуратора)", + "name": "Заимствование формы: картинки кнопок, строк таблицы и поля картинки переносятся файлами, стандартные картинки кнопок, подменю и страниц остаются, картинка декорации выбрасывается (как у Конфигуратора)", "setup": "fixture:form-item-pictures", "preRun": [ { @@ -20,7 +20,11 @@ "text": [ "RowsPicture.png", "HeaderPicture.png", - "ValuesPicture.png" + "ValuesPicture.png", + "StdPicture.Refresh", + "StdPicture.CreateListItem", + "StdPicture.DataCompositionSettingsWizard", + "StdPicture.Print" ] }, "fileNotContains": { diff --git a/tests/skills/cases/cfe-borrow/snapshots/form-item-pictures-missing-source/Documents/Расход/Forms/ФормаДокумента/Ext/Form.xml b/tests/skills/cases/cfe-borrow/snapshots/form-item-pictures-missing-source/Documents/Расход/Forms/ФормаДокумента/Ext/Form.xml index 7aca34a37..81bc912b6 100644 --- a/tests/skills/cases/cfe-borrow/snapshots/form-item-pictures-missing-source/Documents/Расход/Forms/ФормаДокумента/Ext/Form.xml +++ b/tests/skills/cases/cfe-borrow/snapshots/form-item-pictures-missing-source/Documents/Расход/Forms/ФормаДокумента/Ext/Form.xml @@ -26,6 +26,42 @@ + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Создать</v8:content> + </v8:item> + + + StdPicture.CreateListItem + true + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Печать</v8:content> + </v8:item> + + + StdPicture.Print + true + + + @@ -81,6 +117,24 @@ + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Настройки</v8:content> + </v8:item> + + + StdPicture.DataCompositionSettingsWizard + true + + + + + diff --git a/tests/skills/cases/cfe-borrow/snapshots/form-item-pictures-missing-source/cfe/Documents/Расход/Forms/ФормаДокумента/Ext/Form.xml b/tests/skills/cases/cfe-borrow/snapshots/form-item-pictures-missing-source/cfe/Documents/Расход/Forms/ФормаДокумента/Ext/Form.xml index fadb2b254..b8c916da6 100644 --- a/tests/skills/cases/cfe-borrow/snapshots/form-item-pictures-missing-source/cfe/Documents/Расход/Forms/ФормаДокумента/Ext/Form.xml +++ b/tests/skills/cases/cfe-borrow/snapshots/form-item-pictures-missing-source/cfe/Documents/Расход/Forms/ФормаДокумента/Ext/Form.xml @@ -26,6 +26,42 @@ + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Создать</v8:content> + </v8:item> + + + StdPicture.CreateListItem + true + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Печать</v8:content> + </v8:item> + + + StdPicture.Print + true + + + @@ -64,6 +100,24 @@ + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Настройки</v8:content> + </v8:item> + + + StdPicture.DataCompositionSettingsWizard + true + + + + + @@ -93,6 +147,42 @@ + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Создать</v8:content> + </v8:item> + + + StdPicture.CreateListItem + true + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Печать</v8:content> + </v8:item> + + + StdPicture.Print + true + + + @@ -131,6 +221,24 @@ + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Настройки</v8:content> + </v8:item> + + + StdPicture.DataCompositionSettingsWizard + true + + + + + diff --git a/tests/skills/cases/cfe-borrow/snapshots/form-item-pictures-reborrow/Documents/Расход/Forms/ФормаДокумента/Ext/Form.xml b/tests/skills/cases/cfe-borrow/snapshots/form-item-pictures-reborrow/Documents/Расход/Forms/ФормаДокумента/Ext/Form.xml index 7aca34a37..81bc912b6 100644 --- a/tests/skills/cases/cfe-borrow/snapshots/form-item-pictures-reborrow/Documents/Расход/Forms/ФормаДокумента/Ext/Form.xml +++ b/tests/skills/cases/cfe-borrow/snapshots/form-item-pictures-reborrow/Documents/Расход/Forms/ФормаДокумента/Ext/Form.xml @@ -26,6 +26,42 @@ + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Создать</v8:content> + </v8:item> + + + StdPicture.CreateListItem + true + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Печать</v8:content> + </v8:item> + + + StdPicture.Print + true + + + @@ -81,6 +117,24 @@ + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Настройки</v8:content> + </v8:item> + + + StdPicture.DataCompositionSettingsWizard + true + + + + + diff --git a/tests/skills/cases/cfe-borrow/snapshots/form-item-pictures-reborrow/cfe/Documents/Расход/Forms/ФормаДокумента/Ext/Form.xml b/tests/skills/cases/cfe-borrow/snapshots/form-item-pictures-reborrow/cfe/Documents/Расход/Forms/ФормаДокумента/Ext/Form.xml index fadb2b254..b8c916da6 100644 --- a/tests/skills/cases/cfe-borrow/snapshots/form-item-pictures-reborrow/cfe/Documents/Расход/Forms/ФормаДокумента/Ext/Form.xml +++ b/tests/skills/cases/cfe-borrow/snapshots/form-item-pictures-reborrow/cfe/Documents/Расход/Forms/ФормаДокумента/Ext/Form.xml @@ -26,6 +26,42 @@ + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Создать</v8:content> + </v8:item> + + + StdPicture.CreateListItem + true + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Печать</v8:content> + </v8:item> + + + StdPicture.Print + true + + + @@ -64,6 +100,24 @@ + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Настройки</v8:content> + </v8:item> + + + StdPicture.DataCompositionSettingsWizard + true + + + + + @@ -93,6 +147,42 @@ + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Создать</v8:content> + </v8:item> + + + StdPicture.CreateListItem + true + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Печать</v8:content> + </v8:item> + + + StdPicture.Print + true + + + @@ -131,6 +221,24 @@ + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Настройки</v8:content> + </v8:item> + + + StdPicture.DataCompositionSettingsWizard + true + + + + + diff --git a/tests/skills/cases/cfe-borrow/snapshots/form-item-pictures/Documents/Расход/Forms/ФормаДокумента/Ext/Form.xml b/tests/skills/cases/cfe-borrow/snapshots/form-item-pictures/Documents/Расход/Forms/ФормаДокумента/Ext/Form.xml index 7aca34a37..81bc912b6 100644 --- a/tests/skills/cases/cfe-borrow/snapshots/form-item-pictures/Documents/Расход/Forms/ФормаДокумента/Ext/Form.xml +++ b/tests/skills/cases/cfe-borrow/snapshots/form-item-pictures/Documents/Расход/Forms/ФормаДокумента/Ext/Form.xml @@ -26,6 +26,42 @@ + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Создать</v8:content> + </v8:item> + + + StdPicture.CreateListItem + true + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Печать</v8:content> + </v8:item> + + + StdPicture.Print + true + + + @@ -81,6 +117,24 @@ + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Настройки</v8:content> + </v8:item> + + + StdPicture.DataCompositionSettingsWizard + true + + + + + diff --git a/tests/skills/cases/cfe-borrow/snapshots/form-item-pictures/cfe/Documents/Расход/Forms/ФормаДокумента/Ext/Form.xml b/tests/skills/cases/cfe-borrow/snapshots/form-item-pictures/cfe/Documents/Расход/Forms/ФормаДокумента/Ext/Form.xml index fadb2b254..b8c916da6 100644 --- a/tests/skills/cases/cfe-borrow/snapshots/form-item-pictures/cfe/Documents/Расход/Forms/ФормаДокумента/Ext/Form.xml +++ b/tests/skills/cases/cfe-borrow/snapshots/form-item-pictures/cfe/Documents/Расход/Forms/ФормаДокумента/Ext/Form.xml @@ -26,6 +26,42 @@ + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Создать</v8:content> + </v8:item> + + + StdPicture.CreateListItem + true + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Печать</v8:content> + </v8:item> + + + StdPicture.Print + true + + + @@ -64,6 +100,24 @@ + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Настройки</v8:content> + </v8:item> + + + StdPicture.DataCompositionSettingsWizard + true + + + + + @@ -93,6 +147,42 @@ + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Создать</v8:content> + </v8:item> + + + StdPicture.CreateListItem + true + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Печать</v8:content> + </v8:item> + + + StdPicture.Print + true + + + @@ -131,6 +221,24 @@ + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Настройки</v8:content> + </v8:item> + + + StdPicture.DataCompositionSettingsWizard + true + + + + +