$npx -y skills add Nikolay-Shirokov/cc-1c-skills --skill meta-decompileДекомпиляция объекта метаданных 1С в JSON-заготовку формата meta-compile. Используй когда нужно получить черновик DSL-описания нового объекта по образцу другого. Не сохраняет UUID/модули/формы.
| 1 | # /meta-decompile — DSL-заготовка из XML объекта метаданных |
| 2 | |
| 3 | Читает XML объекта метаданных (`Catalogs/Имя.xml` и т.п.) и эмитит компактный JSON в формате `/meta-compile`. Назначение — **взять существующий объект образцом и собрать по нему НОВЫЙ**: декомпилировать → поправить → скомпилировать под другим именем. |
| 4 | |
| 5 | ## ⚠️ Главное: это НЕ обратимая выгрузка |
| 6 | |
| 7 | Компиляция черновика создаёт **новый объект с новой идентичностью**, а не копию исходного. В JSON **не** попадают: UUID (идентичность самого объекта и всех дочерних), тела модулей, формы, макеты, права. Захватываются только структура и свойства. |
| 8 | |
| 9 | Отсюда правило: **никогда не компилируй черновик поверх объекта-источника и не выдавай его за «реимпорт»** — у пересобранного объекта другие UUID, поэтому все ссылки на исходный объект (из кода, других объектов, состава подсистем, предопределённых данных) сломаются, а код модулей и формы пропадут. |
| 10 | |
| 11 | ## Когда использовать |
| 12 | |
| 13 | **Собрать новый объект по образцу существующего** — получить DSL-заготовку рабочего объекта, переименовать и адаптировать состав, скомпилировать в новый. Быстрее, чем писать DSL с нуля для богатого объекта. |
| 14 | |
| 15 | ## Когда **не** использовать |
| 16 | |
| 17 | - **Точечная правка существующего объекта** (добавить реквизит, ТЧ, свойство) → `/meta-edit`. Цикл decompile→compile тут вреден: даёт объект с новой идентичностью и теряет модули/формы. |
| 18 | - **Сохранить / восстановить / перенести тот же объект** (бэкап, миграция между конфигурациями с сохранением ссылок) → штатная выгрузка 1С (`/db-dump-xml` ↔ `/db-load-xml`, CF), а не decompile. |
| 19 | - **Просто понять структуру** объекта (реквизиты, ТЧ, типы) без пересборки → `/meta-info` (дешевле, не плодит файл). |
| 20 | |
| 21 | ## Параметры |
| 22 | |
| 23 | | Параметр | Описание | |
| 24 | |----------|----------| |
| 25 | | `ObjectPath` | Путь к XML объекта (`Catalogs/Имя.xml`), обязательный | |
| 26 | | `OutputPath` | Путь к выходному JSON. Если не задан — JSON в stdout | |
| 27 | |
| 28 | ```powershell |
| 29 | powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/meta-decompile.ps1" -ObjectPath "<Объект.xml>" -OutputPath "<out.json>" |
| 30 | ``` |
| 31 | |
| 32 | Неподдерживаемый тип объекта или не-`MetaDataObject` root → ненулевой код выхода и сообщение в stderr. |
| 33 | |
| 34 | ## Workflow (сборка нового объекта по образцу) |
| 35 | |
| 36 | 1. `/meta-decompile <Образец.xml> -OutputPath draft.json` — получить заготовку. |
| 37 | 2. В `draft.json` **сменить `name`** на имя нового объекта и адаптировать состав (реквизиты/ТЧ/свойства). Ссылки на *другие* объекты (владельцы, ввод на основании, типы) — по имени, сохраняются как есть. |
| 38 | 3. `/meta-compile -JsonPath draft.json -OutputDir <ConfigDir>` — собрать (объект получит свежие UUID). |
| 39 | 4. `/meta-validate` + `/meta-info` — проверить. |
| 40 | 5. Модули, формы, макеты, права — добавить отдельно (в черновик они не попадают). |