From 37ecb7725601e75e71b5c7ed89241b13f22089bf Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Sat, 14 Feb 2026 19:14:34 +0300 Subject: [PATCH] Split meta-edit SKILL.md into compact router + 3 reference files SKILL.md reduced from 391 to 105 lines (loaded every invocation). Detailed syntax moved to on-demand reference files: - child-operations.md: inline ops for attrs, TS, dims, resources, enums - properties-reference.md: modify-property, Owners, RegisterRecords, etc. - json-dsl.md: JSON mode structure, synonyms, supported object types Co-Authored-By: Claude Opus 4.6 --- .claude/skills/meta-edit/SKILL.md | 388 +++--------------- .claude/skills/meta-edit/child-operations.md | 102 +++++ .claude/skills/meta-edit/json-dsl.md | 135 ++++++ .../skills/meta-edit/properties-reference.md | 54 +++ 4 files changed, 342 insertions(+), 337 deletions(-) create mode 100644 .claude/skills/meta-edit/child-operations.md create mode 100644 .claude/skills/meta-edit/json-dsl.md create mode 100644 .claude/skills/meta-edit/properties-reference.md diff --git a/.claude/skills/meta-edit/SKILL.md b/.claude/skills/meta-edit/SKILL.md index 3262ce59..79d25df8 100644 --- a/.claude/skills/meta-edit/SKILL.md +++ b/.claude/skills/meta-edit/SKILL.md @@ -11,17 +11,17 @@ allowed-tools: # /meta-edit — точечное редактирование метаданных 1С -Атомарные операции модификации существующих XML объектов метаданных: добавление, удаление и модификация реквизитов, табличных частей, измерений, ресурсов, значений перечислений, свойств объекта, владельцев, движений по регистрам, оснований, ввода по строке. +Атомарные операции модификации существующих XML объектов метаданных. -## Два режима работы +## Команда -### Inline mode (рекомендуется для простых операций) +### Inline mode (простые операции) ```powershell powershell.exe -NoProfile -File .claude\skills\meta-edit\scripts\meta-edit.ps1 -ObjectPath "" -Operation -Value "" ``` -### JSON mode (для сложных/комбинированных операций) +### JSON mode (сложные/комбинированные) ```powershell powershell.exe -NoProfile -File .claude\skills\meta-edit\scripts\meta-edit.ps1 -DefinitionFile "" -ObjectPath "" @@ -29,363 +29,77 @@ powershell.exe -NoProfile -File .claude\skills\meta-edit\scripts\meta-edit.ps1 - | Параметр | Описание | |----------|----------| -| ObjectPath | XML-файл или директория объекта (обязательный) | +| ObjectPath | XML-файл или директория объекта (обязательный, авторезолв `.xml`) | | Operation | Inline-операция (альтернатива DefinitionFile) | | Value | Значение для inline-операции | | DefinitionFile | JSON-файл с операциями (альтернатива Operation) | | NoValidate | Не запускать meta-validate после правки | -`ObjectPath` авторезолв: если указана директория — ищет `.xml` в ней. +## Операции — сводная таблица -## Inline mode — операции +Batch через `;;` во всех операциях. Подробный синтаксис — в файлах по ссылкам. -### Batch-режим +### Дочерние элементы — [child-operations.md](child-operations.md) -Несколько элементов через `;;`: -``` --Value "Комментарий: Строка(200) ;; Сумма: Число(15,2) | index" -``` +| Операция | Формат Value | Пример | +|----------|-------------|--------| +| `add-attribute` | `Имя: Тип \| флаги` | `"Сумма: Число(15,2) \| req, index"` | +| `add-ts` | `ТЧ: Рекв1: Тип1, Рекв2: Тип2` | `"Товары: Ном: CatalogRef.Ном, Кол: Число(15,3)"` | +| `add-dimension` | `Имя: Тип \| флаги` | `"Организация: CatalogRef.Организации \| master"` | +| `add-resource` | `Имя: Тип` | `"Сумма: Число(15,2)"` | +| `add-enumValue` | `Имя` | `"Значение1 ;; Значение2"` | +| `add-column` | `Имя: Тип` | `"Тип: EnumRef.ТипыДокументов"` | +| `add-form` / `add-template` / `add-command` | `Имя` | `"ФормаЭлемента"` | +| `add-ts-attribute` | `ТЧ.Имя: Тип` | `"Товары.Скидка: Число(15,2)"` | +| `remove-*` | `Имя` | `"СтарыйРеквизит ;; ЕщёОдин"` | +| `remove-ts-attribute` | `ТЧ.Имя` | `"Товары.УстаревшийРекв"` | +| `modify-attribute` | `Имя: ключ=значение` | `"СтароеИмя: name=НовоеИмя, type=Строка(500)"` | +| `modify-ts-attribute` | `ТЧ.Имя: ключ=значение` | `"Товары.Рекв: name=НовоеИмя"` | +| `modify-ts` | `ТЧ: ключ=значение` | `"Товары: synonym=Товарный состав"` | -### add-attribute / add-dimension / add-resource / add-column +Позиционная вставка: `"Склад: CatalogRef.Склады >> after Организация"`. -Shorthand-формат: `Имя: Тип | флаги` +### Свойства объекта — [properties-reference.md](properties-reference.md) + +| Операция | Формат Value | Пример | +|----------|-------------|--------| +| `modify-property` | `Ключ=Значение` | `"CodeLength=11 ;; DescriptionLength=150"` | +| `add-owner` | `MetaType.Name` | `"Catalog.Контрагенты ;; Catalog.Организации"` | +| `add-registerRecord` | `MetaType.Name` | `"AccumulationRegister.ОстаткиТоваров"` | +| `add-basedOn` | `MetaType.Name` | `"Document.ЗаказКлиента"` | +| `add-inputByString` | `Путь поля` | `"StandardAttribute.Description"` | +| `set-owners` / `set-registerRecords` / `set-basedOn` / `set-inputByString` | Замена всего списка | `"Catalog.Орг ;; Catalog.Контр"` | +| `remove-owner` / `remove-registerRecord` / ... | Удаление из списка | `"Catalog.Контрагенты"` | + +### JSON DSL — [json-dsl.md](json-dsl.md) + +Для комбинированных операций (add + remove + modify в одном файле), синонимы ключей/типов, таблица поддерживаемых объектов. + +## Быстрые примеры ```powershell --Operation add-attribute -Value "Комментарий: Строка(200)" --Operation add-attribute -Value "Сумма: Число(15,2) | req, index" --Operation add-attribute -Value "Ном: CatalogRef.Номенклатура | req ;; Кол: Число(15,3)" --Operation add-dimension -Value "Организация: CatalogRef.Организации | master, mainFilter" -``` +# Добавить реквизиты +-Operation add-attribute -Value "Комментарий: Строка(200) ;; Сумма: Число(15,2) | index" -Позиционная вставка: `>> after ИмяЭлемента` или `<< before ИмяЭлемента`: -```powershell --Operation add-attribute -Value "Склад: CatalogRef.Склады >> after Организация" -``` - -### add-ts - -Формат: `ИмяТЧ: Реквизит1: Тип1, Реквизит2: Тип2, ...` - -```powershell --Operation add-ts -Value "Товары: Ном: CatalogRef.Ном | req, Кол: Число(15,3), Цена: Число(15,2), Сумма: Число(15,2)" -``` - -### add-ts-attribute / remove-ts-attribute / modify-ts-attribute - -Операции над реквизитами **внутри существующей табличной части**. Формат: `ИмяТЧ.ОпределениеРеквизита` (dot-нотация). - -```powershell -# Добавить реквизит в ТЧ --Operation add-ts-attribute -Value "Товары.СтавкаНДС: EnumRef.СтавкиНДС" --Operation add-ts-attribute -Value "Товары.Скидка: Число(15,2) ;; Товары.Бонус: Число(15,2)" - -# Удалить реквизит из ТЧ --Operation remove-ts-attribute -Value "Товары.УстаревшийРекв" --Operation remove-ts-attribute -Value "Товары.Рекв1 ;; Товары.Рекв2" - -# Изменить реквизит в ТЧ (rename, type change и т.д.) --Operation modify-ts-attribute -Value "Товары.СтароеИмя: name=НовоеИмя, type=Строка(500)" -``` - -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 через `;;`): -```powershell --Operation add-enumValue -Value "Значение1 ;; Значение2 ;; Значение3" --Operation add-form -Value "ФормаЭлемента ;; ФормаСписка" -``` - -### add-owner / add-registerRecord / add-basedOn - -Полное имя метаданных `MetaType.Name`: -```powershell --Operation add-owner -Value "Catalog.Контрагенты ;; Catalog.Организации" --Operation add-registerRecord -Value "AccumulationRegister.ОстаткиТоваров" --Operation add-basedOn -Value "Document.ЗаказКлиента" -``` - -### add-inputByString - -Пути полей (префикс `MetaType.Name.` добавляется автоматически): -```powershell --Operation add-inputByString -Value "StandardAttribute.Description ;; StandardAttribute.Code" -``` - -### remove-* - -Имя элемента (или несколько через `;;`): -```powershell --Operation remove-attribute -Value "СтарыйРеквизит ;; ЕщёОдин" --Operation remove-owner -Value "Catalog.Контрагенты" --Operation remove-inputByString -Value "Catalog.МойСпр.StandardAttribute.Code" -``` - -### modify-attribute / modify-dimension / modify-resource / modify-enumValue / modify-column - -Формат: `ИмяЭлемента: ключ=значение, ключ=значение` - -Ключи: `name` (rename), `type`, `synonym`, `indexing`, `fillChecking`, `use` и др. - -```powershell --Operation modify-attribute -Value "СтароеИмя: name=НовоеИмя, type=Строка(500)" --Operation modify-attribute -Value "Комментарий: indexing=Index" -``` - -### modify-property - -Формат: `Ключ=Значение` (batch через `;;`): -```powershell --Operation modify-property -Value "CodeLength=11 ;; DescriptionLength=150" --Operation modify-property -Value "Hierarchical=true" -``` - -### set-owners / set-registerRecords / set-basedOn / set-inputByString - -Заменяют **весь список** (в отличие от add/remove): -```powershell --Operation set-owners -Value "Catalog.Организации ;; Catalog.Контрагенты" --Operation set-registerRecords -Value "AccumulationRegister.Продажи ;; AccumulationRegister.ОстаткиТоваров" --Operation set-inputByString -Value "StandardAttribute.Description ;; StandardAttribute.Code" -``` - -## JSON DSL - -### add — добавить элементы - -```json -{ - "add": { - "реквизиты": [ - { "name": "Комментарий", "type": "Строка(200)" }, - { "name": "Сумма", "type": "Число(15,2)", "indexing": "Index" } - ], - "ТЧ": [{ - "name": "Товары", - "attrs": [ - { "name": "Номенклатура", "type": "CatalogRef.Номенклатура" }, - { "name": "Количество", "type": "Число(15,3)" } - ] - }], - "формы": ["ФормаЭлемента"], - "макеты": ["ПечатнаяФорма"] - } -} -``` - -### remove — удалить элементы - -```json -{ - "remove": { - "реквизиты": ["СтарыйРеквизит"], - "ТЧ": ["УстаревшаяТЧ"] - } -} -``` - -### modify — изменить существующие - -```json -{ - "modify": { - "properties": { - "CodeLength": 11, - "Hierarchical": true, - "Owners": ["Catalog.Контрагенты", "Catalog.Организации"], - "RegisterRecords": ["AccumulationRegister.Продажи"], - "InputByString": ["StandardAttribute.Description"] - }, - "реквизиты": { - "Комментарий": { "type": "Строка(500)" }, - "СтароеИмя": { "name": "НовоеИмя" } - } - } -} -``` - -### modify — реквизиты внутри ТЧ (JSON) - -```json -{ - "modify": { - "tabularSections": { - "Товары": { - "add": ["СтавкаНДС: EnumRef.СтавкиНДС", "Скидка: Число(15,2)"], - "remove": ["УстаревшийРекв"], - "modify": { - "СтароеИмя": { "name": "НовоеИмя", "type": "Строка(500)" } - } - } - } - } -} -``` - -### Комбинирование - -Все три операции можно указать в одном JSON-файле. Для сложных сценариев (ТЧ с реквизитами + удаление + модификация) используйте JSON DSL. - -Пример: создать новую ТЧ и одновременно отредактировать реквизиты существующей ТЧ: -```json -{ - "add": { "tabularSections": [{ "name": "НоваяТЧ", "attrs": ["Имя: Строка(100)"] }] }, - "modify": { - "tabularSections": { - "СуществующаяТЧ": { - "add": ["НовыйРекв: Число(15,2)"], - "remove": ["СтарыйРекв"] - } - } - } -} -``` - -### Синонимы ключей (case-insensitive) - -**Операции:** `add`/`добавить`, `remove`/`удалить`, `modify`/`изменить` - -**Типы дочерних элементов:** - -| Каноническое | Синонимы | -|-------------|----------| -| attributes | реквизиты, attrs | -| tabularSections | табличныеЧасти, тч, ts | -| dimensions | измерения, dims | -| resources | ресурсы, res | -| enumValues | значения, values | -| columns | графы, колонки | -| forms | формы | -| templates | макеты | -| commands | команды | -| properties | свойства | - -### Синонимы типов - -`Строка(200)`, `Число(15,2)`, `Булево`, `Дата`, `ДатаВремя`, `ХранилищеЗначения`, `СправочникСсылка.XXX`, `ДокументСсылка.XXX`, `ПеречислениеСсылка.XXX`, `ОпределяемыйТип.XXX`. - -### Позиционная вставка - -JSON: `{ "name": "Склад", "type": "CatalogRef.Склады", "after": "Организация" }` - -Inline: `"Склад: CatalogRef.Склады >> after Организация"` или `"Склад: CatalogRef.Склады << before Комментарий"` - -### Shorthand-формат реквизитов - -``` -"ИмяРеквизита: Тип | req, index" -``` - -## Complex properties — Owners, RegisterRecords, BasedOn, InputByString - -Свойства со вложенной XML-структурой (не скалярный InnerText). Поддерживаются через inline-операции `add-*` / `remove-*` / `set-*` и через JSON `modify.properties`. - -| Свойство | Объекты | XML-тег | Inline-значение | -|----------|---------|---------|-----------------| -| Owners | Catalog, ChartOfCharacteristicTypes | `` | `Catalog.XXX` | -| RegisterRecords | Document | `` | `AccumulationRegister.XXX` | -| BasedOn | Document, Catalog, BP, Task | `` | `Document.XXX` | -| InputByString | Catalog, ChartOf*, Task | `` | `StandardAttribute.Description` | - -## Поддерживаемые типы объектов - -| Тип объекта | Допустимые add-типы | -|-------------|-------------------| -| Catalog, Document, ExchangePlan, ChartOf*, BP, Task, Report, DP | attributes, tabularSections, forms, templates, commands | -| Enum | enumValues, forms, templates, commands | -| *Register (4 типа) | dimensions, resources, attributes, forms, templates, commands | -| DocumentJournal | columns, forms, templates, commands | -| Constant | forms | - -## Примеры - -### Inline: добавить реквизиты - -```powershell --Operation add-attribute -Value "Комментарий: String(200) ;; Сумма: Число(15,2) | index" -``` - -### Inline: добавить ТЧ с реквизитами - -```powershell +# Добавить ТЧ с реквизитами -Operation add-ts -Value "Товары: Ном: CatalogRef.Ном | req, Кол: Число(15,3), Цена: Число(15,2)" -``` -### Inline: удалить + изменить (два вызова) - -```powershell +# Удалить реквизит -Operation remove-attribute -Value "УстаревшийРеквизит" --Operation modify-attribute -Value "СтароеИмя: name=НовоеИмя, type=String(500)" -``` -### Inline: владельцы справочника +# Переименовать + сменить тип +-Operation modify-attribute -Value "СтароеИмя: name=НовоеИмя, type=Строка(500)" -```powershell +# Изменить свойства объекта +-Operation modify-property -Value "CodeLength=11 ;; DescriptionLength=150" + +# Владельцы справочника -Operation set-owners -Value "Catalog.Контрагенты ;; Catalog.Организации" ``` -### Inline: движения документа - -```powershell --Operation add-registerRecord -Value "AccumulationRegister.Продажи ;; AccumulationRegister.ОстаткиТоваров" -``` - -### JSON: комплексное редактирование - -```json -{ - "add": { - "attributes": ["Комментарий: String(200)"], - "tabularSections": [{ - "name": "Товары", - "attrs": ["Ном: CatalogRef.Ном | req", "Кол: Number(15,3)"] - }] - }, - "remove": { "attributes": ["УстаревшийРеквизит"] }, - "modify": { - "properties": { - "DescriptionLength": 150, - "Owners": ["Catalog.Контрагенты", "Catalog.Организации"] - }, - "attributes": { "СтароеИмя": { "name": "НовоеИмя" } } - } -} -``` - ## Верификация ``` /meta-validate — валидация после редактирования /meta-info — визуальная сводка ``` - -## Когда использовать - -- **Добавление реквизитов/ТЧ** к существующим объектам конфигурации -- **Редактирование реквизитов внутри ТЧ** — добавление, удаление, переименование, смена типа -- **Удаление устаревших** реквизитов, табличных частей -- **Переименование** реквизитов, смена типа -- **Изменение свойств** объекта (длина кода, иерархия и т.д.) -- **Добавление значений** перечислений -- **Добавление измерений/ресурсов** в регистры -- **Управление владельцами** справочников (Owners) -- **Управление движениями** документов (RegisterRecords) -- **Настройка ввода по строке** (InputByString) -- **Управление основаниями** (BasedOn) diff --git a/.claude/skills/meta-edit/child-operations.md b/.claude/skills/meta-edit/child-operations.md new file mode 100644 index 00000000..5fc7f553 --- /dev/null +++ b/.claude/skills/meta-edit/child-operations.md @@ -0,0 +1,102 @@ +# Inline-операции над дочерними элементами + +Подробный справочник операций `add-*` / `remove-*` / `modify-*` для дочерних элементов объекта метаданных. + +## Общие правила + +**Batch-режим** — несколько элементов через `;;`: +``` +-Value "Комментарий: Строка(200) ;; Сумма: Число(15,2) | index" +``` + +**Shorthand-формат** реквизитов: `ИмяРеквизита: Тип | флаги` + +Флаги: `req` (FillChecking=ShowError), `index` (Indexing=Index), `master` (Master=true, только dimensions), `mainFilter` (MainFilterOperand, только dimensions). + +**Позиционная вставка**: `>> after ИмяЭлемента` или `<< before ИмяЭлемента`: +```powershell +-Operation add-attribute -Value "Склад: CatalogRef.Склады >> after Организация" +``` + +## add-attribute / add-dimension / add-resource / add-column + +```powershell +-Operation add-attribute -Value "Комментарий: Строка(200)" +-Operation add-attribute -Value "Сумма: Число(15,2) | req, index" +-Operation add-attribute -Value "Ном: CatalogRef.Номенклатура | req ;; Кол: Число(15,3)" +-Operation add-dimension -Value "Организация: CatalogRef.Организации | master, mainFilter" +-Operation add-resource -Value "Сумма: Число(15,2)" +-Operation add-column -Value "Тип: EnumRef.ТипыДокументов" +``` + +## add-ts + +Формат: `ИмяТЧ: Реквизит1: Тип1, Реквизит2: Тип2, ...` + +```powershell +-Operation add-ts -Value "Товары: Ном: CatalogRef.Ном | req, Кол: Число(15,3), Цена: Число(15,2), Сумма: Число(15,2)" +``` + +## add-ts-attribute / remove-ts-attribute / modify-ts-attribute + +Операции над реквизитами **внутри существующей ТЧ**. Формат: `ИмяТЧ.ОпределениеРеквизита` (dot-нотация). + +```powershell +# Добавить реквизит в ТЧ +-Operation add-ts-attribute -Value "Товары.СтавкаНДС: EnumRef.СтавкиНДС" +-Operation add-ts-attribute -Value "Товары.Скидка: Число(15,2) ;; Товары.Бонус: Число(15,2)" + +# Позиционная вставка в ТЧ +-Operation add-ts-attribute -Value "Товары.Скидка: Число(15,2) >> after Цена" + +# Удалить реквизит из ТЧ +-Operation remove-ts-attribute -Value "Товары.УстаревшийРекв" +-Operation remove-ts-attribute -Value "Товары.Рекв1 ;; Товары.Рекв2" + +# Изменить реквизит в ТЧ (rename, type change и т.д.) +-Operation modify-ts-attribute -Value "Товары.СтароеИмя: name=НовоеИмя, type=Строка(500)" +``` + +Batch через `;;` — можно указать разные ТЧ: `"Товары.А: Строка(50) ;; Услуги.Б: Число(10)"`. + +## 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 через `;;`): +```powershell +-Operation add-enumValue -Value "Значение1 ;; Значение2 ;; Значение3" +-Operation add-form -Value "ФормаЭлемента ;; ФормаСписка" +-Operation add-template -Value "ПечатнаяФорма" +-Operation add-command -Value "Команда1" +``` + +## remove-* + +Имя элемента (или несколько через `;;`): +```powershell +-Operation remove-attribute -Value "СтарыйРеквизит ;; ЕщёОдин" +-Operation remove-ts -Value "УстаревшаяТЧ" +-Operation remove-enumValue -Value "НеиспользуемоеЗначение" +``` + +## modify-attribute / modify-dimension / modify-resource / modify-enumValue / modify-column + +Формат: `ИмяЭлемента: ключ=значение, ключ=значение` + +Ключи: `name` (rename), `type`, `synonym`, `indexing`, `fillChecking`, `use` и др. + +```powershell +-Operation modify-attribute -Value "СтароеИмя: name=НовоеИмя, type=Строка(500)" +-Operation modify-attribute -Value "Комментарий: indexing=Index" +-Operation modify-enumValue -Value "СтароеЗначение: name=НовоеЗначение" +``` diff --git a/.claude/skills/meta-edit/json-dsl.md b/.claude/skills/meta-edit/json-dsl.md new file mode 100644 index 00000000..3c2d744b --- /dev/null +++ b/.claude/skills/meta-edit/json-dsl.md @@ -0,0 +1,135 @@ +# JSON DSL — режим определений + +Для сложных и комбинированных операций используйте JSON-файл вместо inline-режима. + +```powershell +powershell.exe -NoProfile -File .claude\skills\meta-edit\scripts\meta-edit.ps1 -DefinitionFile "" -ObjectPath "" +``` + +## add — добавить элементы + +```json +{ + "add": { + "attributes": [ + { "name": "Комментарий", "type": "Строка(200)" }, + { "name": "Сумма", "type": "Число(15,2)", "indexing": "Index" } + ], + "tabularSections": [{ + "name": "Товары", + "attrs": [ + { "name": "Номенклатура", "type": "CatalogRef.Номенклатура" }, + { "name": "Количество", "type": "Число(15,3)" } + ] + }], + "forms": ["ФормаЭлемента"], + "templates": ["ПечатнаяФорма"] + } +} +``` + +Реквизиты можно задавать shorthand-строками: `"Сумма: Число(15,2) | req, index"`. + +## remove — удалить элементы + +```json +{ + "remove": { + "attributes": ["СтарыйРеквизит"], + "tabularSections": ["УстаревшаяТЧ"] + } +} +``` + +## modify — изменить существующие + +```json +{ + "modify": { + "properties": { + "CodeLength": 11, + "Hierarchical": true, + "Owners": ["Catalog.Контрагенты", "Catalog.Организации"], + "RegisterRecords": ["AccumulationRegister.Продажи"], + "InputByString": ["StandardAttribute.Description"] + }, + "attributes": { + "Комментарий": { "type": "Строка(500)" }, + "СтароеИмя": { "name": "НовоеИмя" } + } + } +} +``` + +## modify — реквизиты внутри ТЧ + +```json +{ + "modify": { + "tabularSections": { + "Товары": { + "add": ["СтавкаНДС: EnumRef.СтавкиНДС", "Скидка: Число(15,2)"], + "remove": ["УстаревшийРекв"], + "modify": { + "СтароеИмя": { "name": "НовоеИмя", "type": "Строка(500)" } + } + } + } + } +} +``` + +## Комбинирование + +Все три операции (`add`, `remove`, `modify`) можно указать в одном JSON-файле: + +```json +{ + "add": { "tabularSections": [{ "name": "НоваяТЧ", "attrs": ["Имя: Строка(100)"] }] }, + "modify": { + "tabularSections": { + "СуществующаяТЧ": { + "add": ["НовыйРекв: Число(15,2)"], + "remove": ["СтарыйРекв"] + } + } + } +} +``` + +## Позиционная вставка + +```json +{ "name": "Склад", "type": "CatalogRef.Склады", "after": "Организация" } +``` + +## Синонимы ключей (case-insensitive) + +**Операции:** `add`/`добавить`, `remove`/`удалить`, `modify`/`изменить` + +| Каноническое | Синонимы | +|-------------|----------| +| attributes | реквизиты, attrs | +| tabularSections | табличныеЧасти, тч, ts | +| dimensions | измерения, dims | +| resources | ресурсы, res | +| enumValues | значения, values | +| columns | графы, колонки | +| forms | формы | +| templates | макеты | +| commands | команды | +| properties | свойства | + +## Синонимы типов + +`Строка(200)`, `Число(15,2)`, `Булево`, `Дата`, `ДатаВремя`, `ХранилищеЗначения`, `СправочникСсылка.XXX`, `ДокументСсылка.XXX`, `ПеречислениеСсылка.XXX`, `ОпределяемыйТип.XXX`. + +## Поддерживаемые типы объектов + +| Тип объекта | Допустимые add-типы | +|-------------|-------------------| +| Catalog, Document, ExchangePlan, ChartOf*, BP, Task, Report, DP | attributes, tabularSections, forms, templates, commands | +| Enum | enumValues, forms, templates, commands | +| *Register (4 типа) | dimensions, resources, attributes, forms, templates, commands | +| DocumentJournal | columns, forms, templates, commands | +| Constant | forms | diff --git a/.claude/skills/meta-edit/properties-reference.md b/.claude/skills/meta-edit/properties-reference.md new file mode 100644 index 00000000..84f7d114 --- /dev/null +++ b/.claude/skills/meta-edit/properties-reference.md @@ -0,0 +1,54 @@ +# Свойства объекта и complex properties + +Справочник операций для скалярных свойств объекта и свойств со вложенной XML-структурой (Owners, RegisterRecords, BasedOn, InputByString). + +## modify-property + +Изменение скалярных свойств объекта. Формат: `Ключ=Значение` (batch через `;;`): +```powershell +-Operation modify-property -Value "CodeLength=11 ;; DescriptionLength=150" +-Operation modify-property -Value "Hierarchical=true" +``` + +## Complex properties + +Свойства со вложенной XML-структурой. Поддерживаются через inline `add-*` / `remove-*` / `set-*` и через JSON `modify.properties`. + +| Свойство | Объекты | Inline-значение | +|----------|---------|-----------------| +| Owners | Catalog, ChartOfCharacteristicTypes | `Catalog.XXX` | +| RegisterRecords | Document | `AccumulationRegister.XXX` | +| BasedOn | Document, Catalog, BP, Task | `Document.XXX` | +| InputByString | Catalog, ChartOf*, Task | `StandardAttribute.Description` | + +### add-owner / add-registerRecord / add-basedOn + +Полное имя метаданных `MetaType.Name`: +```powershell +-Operation add-owner -Value "Catalog.Контрагенты ;; Catalog.Организации" +-Operation add-registerRecord -Value "AccumulationRegister.ОстаткиТоваров" +-Operation add-basedOn -Value "Document.ЗаказКлиента" +``` + +### add-inputByString + +Пути полей (префикс `MetaType.Name.` добавляется автоматически): +```powershell +-Operation add-inputByString -Value "StandardAttribute.Description ;; StandardAttribute.Code" +``` + +### remove-owner / remove-registerRecord / remove-basedOn / remove-inputByString + +```powershell +-Operation remove-owner -Value "Catalog.Контрагенты" +-Operation remove-inputByString -Value "Catalog.МойСпр.StandardAttribute.Code" +``` + +### set-owners / set-registerRecords / set-basedOn / set-inputByString + +Заменяют **весь список** (в отличие от add/remove): +```powershell +-Operation set-owners -Value "Catalog.Организации ;; Catalog.Контрагенты" +-Operation set-registerRecords -Value "AccumulationRegister.Продажи ;; AccumulationRegister.ОстаткиТоваров" +-Operation set-inputByString -Value "StandardAttribute.Description ;; StandardAttribute.Code" +```