mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-06-10 16:14:54 +03:00
Add /meta-edit skill: point editing of 1C metadata objects
New skill for adding/removing/modifying attributes, tabular sections, dimensions, resources, enum values, forms, templates, commands in existing metadata XML. Supports Russian/English DSL synonyms, positional insertion, idempotent add, auto-validation via meta-validate. Also adds missing Source comment to meta-compile.ps1. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
# meta-compile v1.0 — Compile 1C metadata object from JSON
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
param(
|
||||
[Parameter(Mandatory)]
|
||||
[string]$JsonPath,
|
||||
|
||||
@@ -0,0 +1,203 @@
|
||||
---
|
||||
name: meta-edit
|
||||
description: Точечное редактирование объекта метаданных 1С (добавление/удаление/модификация реквизитов, ТЧ, измерений, ресурсов, значений перечислений, свойств объекта)
|
||||
argument-hint: <DefinitionFile> <ObjectPath> [-NoValidate]
|
||||
allowed-tools:
|
||||
- Bash
|
||||
- Read
|
||||
- Write
|
||||
- Glob
|
||||
---
|
||||
|
||||
# /meta-edit — точечное редактирование метаданных 1С
|
||||
|
||||
Атомарные операции модификации существующих XML объектов метаданных: добавление, удаление и модификация реквизитов, табличных частей, измерений, ресурсов, значений перечислений, свойств объекта.
|
||||
|
||||
## Параметры и команда
|
||||
|
||||
| Параметр | Обязательный | Описание |
|
||||
|----------|:------------:|----------|
|
||||
| DefinitionFile | да | JSON-файл с операциями |
|
||||
| ObjectPath | да | XML-файл или директория объекта |
|
||||
| NoValidate | нет | Не запускать meta-validate после правки |
|
||||
|
||||
```powershell
|
||||
powershell.exe -NoProfile -File .claude\skills\meta-edit\scripts\meta-edit.ps1 -DefinitionFile "<json>" -ObjectPath "<path>"
|
||||
```
|
||||
|
||||
`ObjectPath` авторезолв: если указана директория — ищет `<dirName>.xml` в ней.
|
||||
|
||||
## 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 },
|
||||
"реквизиты": {
|
||||
"Комментарий": { "type": "Строка(500)" },
|
||||
"СтароеИмя": { "name": "НовоеИмя" }
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Комбинирование
|
||||
|
||||
Все три операции можно указать в одном JSON-файле.
|
||||
|
||||
### Синонимы ключей (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": "Организация" }
|
||||
{ "name": "Приоритет", "type": "Число(1)", "before": "Комментарий" }
|
||||
```
|
||||
|
||||
Без указания — в конец группы однотипных элементов.
|
||||
|
||||
### Shorthand-формат реквизитов
|
||||
|
||||
```
|
||||
"ИмяРеквизита: Тип | req, index"
|
||||
```
|
||||
|
||||
## Поддерживаемые типы объектов
|
||||
|
||||
| Тип объекта | Допустимые 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 |
|
||||
|
||||
## Примеры
|
||||
|
||||
### Добавить реквизиты в справочник
|
||||
|
||||
```json
|
||||
{
|
||||
"add": {
|
||||
"attributes": [
|
||||
"Комментарий: String(200)",
|
||||
{ "name": "Сумма", "type": "Number(15,2)", "indexing": "Index" }
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Добавить ТЧ в документ
|
||||
|
||||
```json
|
||||
{
|
||||
"add": {
|
||||
"tabularSections": [{
|
||||
"name": "Товары",
|
||||
"attrs": [
|
||||
"Номенклатура: CatalogRef.Номенклатура | req",
|
||||
"Количество: Number(15,3)",
|
||||
"Цена: Number(15,2)",
|
||||
"Сумма: Number(15,2)"
|
||||
]
|
||||
}]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Добавить измерения и ресурсы в регистр
|
||||
|
||||
```json
|
||||
{
|
||||
"add": {
|
||||
"dimensions": ["Организация: CatalogRef.Организации | master, mainFilter"],
|
||||
"resources": ["Сумма: Number(15,2)"]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Удалить + изменить
|
||||
|
||||
```json
|
||||
{
|
||||
"remove": { "attributes": ["УстаревшийРеквизит"] },
|
||||
"modify": {
|
||||
"properties": { "DescriptionLength": 150 },
|
||||
"attributes": {
|
||||
"СтароеИмя": { "name": "НовоеИмя", "type": "String(500)" }
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Верификация
|
||||
|
||||
```
|
||||
/meta-validate <ObjectPath> — валидация после редактирования
|
||||
/meta-info <ObjectPath> — визуальная сводка
|
||||
```
|
||||
|
||||
## Когда использовать
|
||||
|
||||
- **Добавление реквизитов/ТЧ** к существующим объектам конфигурации
|
||||
- **Удаление устаревших** реквизитов, табличных частей
|
||||
- **Переименование** реквизитов, смена типа
|
||||
- **Изменение свойств** объекта (длина кода, иерархия и т.д.)
|
||||
- **Добавление значений** перечислений
|
||||
- **Добавление измерений/ресурсов** в регистры
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user