# Объекты метаданных конфигурации Навыки группы `/meta-*` позволяют создавать, анализировать, редактировать и проверять объекты метаданных конфигурации 1С — справочники, документы, регистры, перечисления и ещё 19 типов объектов из XML-выгрузки. ## Навыки | Навык | Параметры | Описание | |-------|-----------|----------| | `/meta-info` | ` [-Mode] [-Name]` | Анализ структуры объекта: реквизиты, ТЧ, формы, движения, типы (8 режимов) | | `/meta-compile` | ` ` | Создание объекта метаданных из JSON DSL: реквизиты, ТЧ, свойства, формы | | `/meta-edit` | ` -Operation -Value ""` | Точечное редактирование: 30+ атомарных операций (add/remove/modify/set) | | `/meta-remove` | ` -Object [-DryRun] [-Force]` | Безопасное удаление объекта с проверкой ссылок (блокирует при наличии) | | `/meta-validate` | ` [-MaxErrors 20]` | Валидация структурной корректности: ~40 проверок | ## Рабочий цикл ``` Описание объекта (текст) → JSON DSL → /meta-compile → XML-исходники → /meta-validate ↕ /meta-edit → /meta-info ↕ /meta-remove (безопасное удаление) ``` 1. Claude формирует JSON-определение объекта (тип, реквизиты, ТЧ, свойства) 2. `/meta-compile` генерирует XML-исходники с корректными UUID, namespace, структурой ChildObjects 3. `/meta-edit` вносит точечные изменения: добавление/удаление реквизитов, ТЧ, владельцев, движений и т.д. 4. `/meta-remove` безопасно удаляет объект (проверяет ссылки в реквизитах, коде, формах; чистит Configuration.xml и подсистемы) 5. `/meta-validate` проверяет корректность XML 6. `/meta-info` выводит компактную сводку для визуальной проверки ## Поддерживаемые типы объектов (23 типа) | Группа | Типы | |--------|------| | Прикладные | Catalog, Document, Enum, ChartOfCharacteristicTypes, ChartOfAccounts, ChartOfCalculationTypes | | Процессы | BusinessProcess, Task | | Регистры | InformationRegister, AccumulationRegister, AccountingRegister, CalculationRegister | | Отчёты/обработки | Report, DataProcessor | | Интеграция | ExchangePlan, HTTPService, WebService | | Журналы | DocumentJournal, Sequence | | Прочие | Constant, CommonModule, SessionParameter, FunctionalOption, DefinedType | ## Inline mode — типовые операции ### Реквизиты ```powershell # Добавить -Operation add-attribute -Value "Комментарий: Строка(200) ;; Сумма: Число(15,2) | req, index" # С позиционной вставкой -Operation add-attribute -Value "Склад: CatalogRef.Склады >> after Организация" # Удалить -Operation remove-attribute -Value "УстаревшийРеквизит" # Переименовать + сменить тип -Operation modify-attribute -Value "СтароеИмя: name=НовоеИмя, type=Строка(500)" ``` ### Табличные части ```powershell # Создать ТЧ с реквизитами -Operation add-ts -Value "Товары: Ном: CatalogRef.Ном | req, Кол: Число(15,3), Цена: Число(15,2)" # Добавить реквизит в существующую ТЧ -Operation add-ts-attribute -Value "Товары.СтавкаНДС: EnumRef.СтавкиНДС" # Изменить свойства ТЧ -Operation modify-ts -Value "Товары: synonym=Товарный состав" ``` ### Свойства объекта ```powershell # Скалярные свойства -Operation modify-property -Value "CodeLength=11 ;; DescriptionLength=150" # Владельцы справочника -Operation set-owners -Value "Catalog.Контрагенты ;; Catalog.Организации" # Движения документа -Operation add-registerRecord -Value "AccumulationRegister.Продажи ;; AccumulationRegister.ОстаткиТоваров" ``` ### Регистры ```powershell -Operation add-dimension -Value "Организация: CatalogRef.Организации | master, mainFilter" -Operation add-resource -Value "Сумма: Число(15,2)" ``` ## JSON mode — комбинированные операции Для сложных сценариев (несколько типов изменений в одном вызове) используйте JSON-файл: ```json { "add": { "attributes": ["Комментарий: Строка(200)"], "tabularSections": [{ "name": "Товары", "attrs": ["Ном: CatalogRef.Ном | req", "Кол: Число(15,3)"] }] }, "remove": { "attributes": ["УстаревшийРеквизит"] }, "modify": { "properties": { "DescriptionLength": 150 }, "attributes": { "СтароеИмя": { "name": "НовоеИмя" } } } } ``` JSON поддерживает русские синонимы ключей (`реквизиты`, `тч`, `измерения` и др.) и типов (`Строка`, `Число`, `СправочникСсылка` и др.). ## Сценарии использования ### Анализ существующего объекта ``` > Покажи структуру справочника Catalogs/Номенклатура ``` Claude вызовет `/meta-info` и покажет: реквизиты с типами, табличные части, формы, владельцев, ввод по строке. ### Создание нового объекта ``` > Создай справочник Контрагенты: код 9, наименование 150, реквизиты ИНН(12), КПП(9), > иерархический с группами, владелец — Catalog.Организации ``` Claude сформирует JSON и вызовет `/meta-compile` → `/meta-validate` → `/meta-info`. ### Добавление реквизитов к существующему объекту ``` > Добавь в документ Documents/ЗаказКлиента реквизиты Склад (CatalogRef.Склады) > и ТЧ Товары с реквизитами Номенклатура, Количество, Цена, Сумма ``` Claude вызовет `/meta-edit` дважды: `add-attribute` для реквизита и `add-ts` для ТЧ. ### Настройка движений документа ``` > Документ Documents/ПриходТоваров должен делать движения > по AccumulationRegister.ОстаткиТоваров и AccumulationRegister.Партии ``` Claude вызовет `/meta-edit` с операцией `set-registerRecords`. ### Удаление неиспользуемого объекта ``` > Удали справочник Catalogs/Устаревший из конфигурации src/ ``` Claude вызовет `/meta-remove` с `-DryRun`, покажет что будет удалено и проверит ссылки. Если объект нигде не используется — удалит файлы, уберёт из Configuration.xml и подсистем. Если есть ссылки — покажет список и заблокирует удаление. ### Проверка объекта после изменений ``` > Проверь корректность Documents/ЗаказКлиента ``` Claude вызовет `/meta-validate` и покажет ошибки и предупреждения. ## Структура файлов объекта метаданных ``` // ├── .xml # Основной XML (Properties, ChildObjects) ├── Ext/ │ └── ObjectModule.bsl # Модуль объекта (опционально) ├── Forms/ │ └── / # Формы объекта ├── Templates/ │ └── / # Макеты └── Commands/ └── / # Команды ``` ## Спецификации - [1c-config-objects-spec.md](1c-config-objects-spec.md) — XML-формат объектов метаданных, Properties, ChildObjects, типы - [meta-dsl-spec.md](meta-dsl-spec.md) — JSON DSL для описания объектов (`/meta-compile`)