$npx -y skills add Desko77/cursor-1c-skills --skill 1c-meta-compileСоздать объект метаданных 1С. Используй когда пользователь просит создать или добавить справочник, документ, регистр, перечисление, константу, общий модуль, обработку, отчёт и др.
| 1 | # /meta-compile — генерация объектов метаданных из JSON DSL |
| 2 | |
| 3 | Принимает JSON-определение объекта метаданных → генерирует XML + модули в структуре выгрузки конфигурации + регистрирует в Configuration.xml. |
| 4 | |
| 5 | ## Порядок работы |
| 6 | |
| 7 | 1. Составь JSON по синтаксису и примерам ниже → запиши во временный файл |
| 8 | 2. Запусти скрипт meta-compile |
| 9 | 3. Если нужно изменить созданный объект — `/meta-edit` |
| 10 | 4. Если нужно проверить — `/meta-validate` |
| 11 | |
| 12 | ## Команда |
| 13 | |
| 14 | ```powershell |
| 15 | powershell.exe -NoProfile -File skills/1c-meta-compile/scripts/meta-compile.ps1 -JsonPath "<json>" -OutputDir "<ConfigDir>" |
| 16 | ``` |
| 17 | |
| 18 | | Параметр | Описание | |
| 19 | |----------|----------| |
| 20 | | `JsonPath` | Путь к JSON-файлу (один объект `{...}` или массив `[{...}, ...]`) | |
| 21 | | `OutputDir` | Корень выгрузки конфигурации (где `Configuration.xml`, `Catalogs/`, `Documents/` и т.д.) | |
| 22 | |
| 23 | ## JSON DSL |
| 24 | |
| 25 | ### Общая структура |
| 26 | |
| 27 | ```json |
| 28 | { "type": "Catalog", "name": "Номенклатура", ...свойства типа... } |
| 29 | ``` |
| 30 | |
| 31 | `type` и `name` — обязательные. `synonym` генерируется из `name` автоматически (CamelCase → слова через пробел). Можно задать явно: `"synonym": "Мой синоним"`. |
| 32 | |
| 33 | ### Shorthand реквизитов |
| 34 | |
| 35 | Используется в `attributes`, `dimensions`, `resources`, `tabularSections`: |
| 36 | |
| 37 | ``` |
| 38 | "ИмяРеквизита" → String(10) по умолчанию |
| 39 | "ИмяРеквизита: Тип" → с типом |
| 40 | "ИмяРеквизита: Тип | req, index" → с флагами |
| 41 | ``` |
| 42 | |
| 43 | Типы: `String(100)`, `Number(15,2)`, `Boolean`, `Date`, `DateTime`, `CatalogRef.Xxx`, `DocumentRef.Xxx`, `EnumRef.Xxx`, `DefinedType.Xxx` и др. ссылочные. |
| 44 | |
| 45 | Составной тип: `"Значение: String + Number(15,2) + CatalogRef.Контрагенты"`. |
| 46 | |
| 47 | Флаги: `req`, `index`, `indexAdditional`, `nonneg`, `master`, `mainFilter`, `denyIncomplete`, `useInTotals`. |
| 48 | |
| 49 | ### Свойства по типам |
| 50 | |
| 51 | Примеров и shorthand-синтаксиса выше достаточно для типовых задач. Если нужны свойства типа, не показанные в примерах, и их допустимые значения — см. reference-файл: |
| 52 | |
| 53 | - `reference/types-basic.md` — Catalog, Document, Enum, Constant, DefinedType, Report, DataProcessor |
| 54 | - `reference/types-registers.md` — InformationRegister, AccumulationRegister, AccountingRegister, CalculationRegister, ChartOfAccounts, ChartOfCharacteristicTypes, ChartOfCalculationTypes |
| 55 | - `reference/types-process.md` — BusinessProcess, Task, ExchangePlan, CommonModule, ScheduledJob, EventSubscription, DocumentJournal |
| 56 | - `reference/types-web.md` — HTTPService, WebService |
| 57 | |
| 58 | Эта инструкция и reference-файлы — полная документация для генерации. Не ищи примеры XML в выгрузках конфигураций. |
| 59 | |
| 60 | ## Примеры паттернов DSL |
| 61 | |
| 62 | ### Минимальный объект |
| 63 | |
| 64 | ```json |
| 65 | { "type": "Catalog", "name": "Валюты" } |
| 66 | ``` |
| 67 | |
| 68 | ### С реквизитами |
| 69 | |
| 70 | ```json |
| 71 | { |
| 72 | "type": "Catalog", "name": "Организации", |
| 73 | "descriptionLength": 100, |
| 74 | "attributes": ["ИНН: String(12)", "КПП: String(9)", "Директор: CatalogRef.ФизическиеЛица"] |
| 75 | } |
| 76 | ``` |
| 77 | |
| 78 | ### С табличной частью |
| 79 | |
| 80 | ```json |
| 81 | { |
| 82 | "type": "Document", "name": "ПриходнаяНакладная", |
| 83 | "registerRecords": ["AccumulationRegister.ОстаткиТоваров"], |
| 84 | "attributes": ["Организация: CatalogRef.Организации", "Контрагент: CatalogRef.Контрагенты"], |
| 85 | "tabularSections": { "Товары": ["Номенклатура: CatalogRef.Номенклатура", "Количество: Number(15,3)", "Цена: Number(15,2)"] } |
| 86 | } |
| 87 | ``` |
| 88 | |
| 89 | ### Регистровый паттерн (измерения + ресурсы) |
| 90 | |
| 91 | ```json |
| 92 | { |
| 93 | "type": "InformationRegister", "name": "КурсыВалют", "periodicity": "Day", |
| 94 | "dimensions": ["Валюта: CatalogRef.Валюты | master, mainFilter, denyIncomplete"], |
| 95 | "resources": ["Курс: Number(15,4)", "Кратность: Number(10,0)"] |
| 96 | } |
| 97 | ``` |
| 98 | |
| 99 | ### Batch — несколько объектов в одном файле |
| 100 | |
| 101 | ```json |
| 102 | [ |
| 103 | { "type": "Enum", "name": "Статусы", "values": ["Новый", "Закрыт"] }, |
| 104 | { "type": "Catalog", "name": "Валюты" }, |
| 105 | { "type": "Constant", "name": "ОсновнаяВалюта", "valueType": "CatalogRef.Валюты" } |
| 106 | ] |
| 107 | ``` |