From fff77d97ca60149fde34e5672199dbb8f542c486 Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Sat, 14 Feb 2026 18:25:53 +0300 Subject: [PATCH] meta-edit v1.3: positional TS-attr insert, modify-ts, JSON combo example - add-ts-attribute now respects >> after / << before positioning - Add modify-ts inline operation for TS properties (synonym, fillChecking, etc.) - Add JSON combo example (create + edit TS in one definition) to SKILL.md Co-Authored-By: Claude Opus 4.6 --- .claude/skills/meta-edit/SKILL.md | 33 ++++++++++++++++++- .../skills/meta-edit/scripts/meta-edit.ps1 | 10 ++++-- 2 files changed, 39 insertions(+), 4 deletions(-) diff --git a/.claude/skills/meta-edit/SKILL.md b/.claude/skills/meta-edit/SKILL.md index e8c984f3..3262ce59 100644 --- a/.claude/skills/meta-edit/SKILL.md +++ b/.claude/skills/meta-edit/SKILL.md @@ -1,6 +1,6 @@ --- name: meta-edit -description: Точечное редактирование объекта метаданных 1С (добавление/удаление/модификация реквизитов, реквизитов внутри ТЧ, ТЧ, измерений, ресурсов, значений перечислений, свойств объекта, владельцев, движений, ввода по строке) +description: Точечное редактирование объекта метаданных 1С (добавление/удаление/модификация реквизитов, реквизитов внутри ТЧ, свойств ТЧ, ТЧ, измерений, ресурсов, значений перечислений, свойств объекта, владельцев, движений, ввода по строке) argument-hint: -Operation -Value "" | -DefinitionFile [-NoValidate] allowed-tools: - Bash @@ -89,6 +89,22 @@ Shorthand-формат: `Имя: Тип | флаги` Batch через `;;` — можно указать разные ТЧ: `"Товары.А: Строка(50) ;; Услуги.Б: Число(10)"`. +Позиционная вставка в ТЧ: `>> after` / `<< before` работает так же, как и для обычных реквизитов: +```powershell +-Operation add-ts-attribute -Value "Товары.Скидка: Число(15,2) >> after Цена" +``` + +### modify-ts + +Изменение свойств **самой табличной части** (Synonym, FillChecking, Use и др.): + +```powershell +-Operation modify-ts -Value "Товары: synonym=Товарный состав" +-Operation modify-ts -Value "Товары: fillChecking=ShowError" +``` + +Формат аналогичен `modify-attribute`: `ИмяТЧ: ключ=значение, ключ=значение`. + ### add-enumValue / add-form / add-template / add-command Просто имена (batch через `;;`): @@ -227,6 +243,21 @@ Batch через `;;` — можно указать разные ТЧ: `"Тов Все три операции можно указать в одном JSON-файле. Для сложных сценариев (ТЧ с реквизитами + удаление + модификация) используйте JSON DSL. +Пример: создать новую ТЧ и одновременно отредактировать реквизиты существующей ТЧ: +```json +{ + "add": { "tabularSections": [{ "name": "НоваяТЧ", "attrs": ["Имя: Строка(100)"] }] }, + "modify": { + "tabularSections": { + "СуществующаяТЧ": { + "add": ["НовыйРекв: Число(15,2)"], + "remove": ["СтарыйРекв"] + } + } + } +} +``` + ### Синонимы ключей (case-insensitive) **Операции:** `add`/`добавить`, `remove`/`удалить`, `modify`/`изменить` diff --git a/.claude/skills/meta-edit/scripts/meta-edit.ps1 b/.claude/skills/meta-edit/scripts/meta-edit.ps1 index 6e7cb2e3..39e6525c 100644 --- a/.claude/skills/meta-edit/scripts/meta-edit.ps1 +++ b/.claude/skills/meta-edit/scripts/meta-edit.ps1 @@ -1,4 +1,4 @@ -# meta-edit v1.2 — Edit existing 1C metadata object XML (inline mode + complex properties + TS attribute ops) +# meta-edit v1.3 — Edit existing 1C metadata object XML (inline mode + complex properties + TS attribute ops + modify-ts) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [string]$DefinitionFile, @@ -14,7 +14,7 @@ param( "remove-attribute", "remove-ts", "remove-dimension", "remove-resource", "remove-enumValue", "remove-column", "remove-form", "remove-template", "remove-command", "remove-owner", "remove-registerRecord", "remove-basedOn", "remove-inputByString", - "add-ts-attribute", "remove-ts-attribute", "modify-ts-attribute", + "add-ts-attribute", "remove-ts-attribute", "modify-ts-attribute", "modify-ts", "modify-attribute", "modify-dimension", "modify-resource", "modify-enumValue", "modify-column", "modify-property", @@ -1818,8 +1818,12 @@ function Modify-ChildElements($modifyDef, [string]$childType) { $tsAttrIndent = Get-ChildIndent $tsChildObjEl $fragmentXml = Build-AttributeFragment $parsed "tabular" $tsAttrIndent $nodes = Import-Fragment $fragmentXml + $savedCO = $script:childObjectsEl + $script:childObjectsEl = $tsChildObjEl + $refNode = Find-InsertionPoint "Attribute" $parsed + $script:childObjectsEl = $savedCO foreach ($node in $nodes) { - Insert-BeforeElement $tsChildObjEl $node $null $tsAttrIndent + Insert-BeforeElement $tsChildObjEl $node $refNode $tsAttrIndent } Info "Added attribute to TS '$elemName': $($parsed.name)" $script:addCount++